// 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 ads. */
    namespace ads {

        /** Namespace googleads. */
        namespace googleads {

            /** Namespace v23. */
            namespace v23 {

                /** Namespace common. */
                namespace common {

                    /** Properties of an AdTextAsset. */
                    interface IAdTextAsset {

                        /** AdTextAsset text */
                        text?: (string|null);

                        /** AdTextAsset pinned_field */
                        pinned_field?: (google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|keyof typeof google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|null);

                        /** AdTextAsset asset_performance_label */
                        asset_performance_label?: (google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|keyof typeof google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|null);

                        /** AdTextAsset policy_summary_info */
                        policy_summary_info?: (google.ads.googleads.v23.common.IAdAssetPolicySummary|null);
                    }

                    /** Represents an AdTextAsset. */
                    class AdTextAsset implements IAdTextAsset {

                        /**
                         * Constructs a new AdTextAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdTextAsset);

                        /** AdTextAsset text. */
                        public text?: (string|null);

                        /** AdTextAsset pinned_field. */
                        public pinned_field: (google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|keyof typeof google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType);

                        /** AdTextAsset asset_performance_label. */
                        public asset_performance_label: (google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|keyof typeof google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel);

                        /** AdTextAsset policy_summary_info. */
                        public policy_summary_info?: (google.ads.googleads.v23.common.IAdAssetPolicySummary|null);

                        /**
                         * Creates a new AdTextAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdTextAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdTextAsset): google.ads.googleads.v23.common.AdTextAsset;

                        /**
                         * Encodes the specified AdTextAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AdTextAsset.verify|verify} messages.
                         * @param message AdTextAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdTextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdTextAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdTextAsset.verify|verify} messages.
                         * @param message AdTextAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdTextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdImageAsset. */
                    interface IAdImageAsset {

                        /** AdImageAsset asset */
                        asset?: (string|null);
                    }

                    /** Represents an AdImageAsset. */
                    class AdImageAsset implements IAdImageAsset {

                        /**
                         * Constructs a new AdImageAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdImageAsset);

                        /** AdImageAsset asset. */
                        public asset?: (string|null);

                        /**
                         * Creates a new AdImageAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdImageAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdImageAsset): google.ads.googleads.v23.common.AdImageAsset;

                        /**
                         * Encodes the specified AdImageAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AdImageAsset.verify|verify} messages.
                         * @param message AdImageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdImageAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdImageAsset.verify|verify} messages.
                         * @param message AdImageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdVideoAsset. */
                    interface IAdVideoAsset {

                        /** AdVideoAsset asset */
                        asset?: (string|null);

                        /** AdVideoAsset ad_video_asset_info */
                        ad_video_asset_info?: (google.ads.googleads.v23.common.IAdVideoAssetInfo|null);
                    }

                    /** Represents an AdVideoAsset. */
                    class AdVideoAsset implements IAdVideoAsset {

                        /**
                         * Constructs a new AdVideoAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdVideoAsset);

                        /** AdVideoAsset asset. */
                        public asset?: (string|null);

                        /** AdVideoAsset ad_video_asset_info. */
                        public ad_video_asset_info?: (google.ads.googleads.v23.common.IAdVideoAssetInfo|null);

                        /**
                         * Creates a new AdVideoAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdVideoAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdVideoAsset): google.ads.googleads.v23.common.AdVideoAsset;

                        /**
                         * Encodes the specified AdVideoAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAsset.verify|verify} messages.
                         * @param message AdVideoAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdVideoAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdVideoAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAsset.verify|verify} messages.
                         * @param message AdVideoAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdVideoAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdVideoAssetInfo. */
                    interface IAdVideoAssetInfo {

                        /** AdVideoAssetInfo ad_video_asset_inventory_preferences */
                        ad_video_asset_inventory_preferences?: (google.ads.googleads.v23.common.IAdVideoAssetInventoryPreferences|null);

                        /** AdVideoAssetInfo ad_video_asset_feature_control */
                        ad_video_asset_feature_control?: (google.ads.googleads.v23.common.IAdVideoAssetLinkFeatureControl|null);
                    }

                    /** Represents an AdVideoAssetInfo. */
                    class AdVideoAssetInfo implements IAdVideoAssetInfo {

                        /**
                         * Constructs a new AdVideoAssetInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdVideoAssetInfo);

                        /** AdVideoAssetInfo ad_video_asset_inventory_preferences. */
                        public ad_video_asset_inventory_preferences?: (google.ads.googleads.v23.common.IAdVideoAssetInventoryPreferences|null);

                        /** AdVideoAssetInfo ad_video_asset_feature_control. */
                        public ad_video_asset_feature_control?: (google.ads.googleads.v23.common.IAdVideoAssetLinkFeatureControl|null);

                        /**
                         * Creates a new AdVideoAssetInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdVideoAssetInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdVideoAssetInfo): google.ads.googleads.v23.common.AdVideoAssetInfo;

                        /**
                         * Encodes the specified AdVideoAssetInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAssetInfo.verify|verify} messages.
                         * @param message AdVideoAssetInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdVideoAssetInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdVideoAssetInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAssetInfo.verify|verify} messages.
                         * @param message AdVideoAssetInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdVideoAssetInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdVideoAssetInventoryPreferences. */
                    interface IAdVideoAssetInventoryPreferences {

                        /** AdVideoAssetInventoryPreferences in_feed_preference */
                        in_feed_preference?: (boolean|null);

                        /** AdVideoAssetInventoryPreferences in_stream_preference */
                        in_stream_preference?: (boolean|null);

                        /** AdVideoAssetInventoryPreferences shorts_preference */
                        shorts_preference?: (boolean|null);
                    }

                    /** Represents an AdVideoAssetInventoryPreferences. */
                    class AdVideoAssetInventoryPreferences implements IAdVideoAssetInventoryPreferences {

                        /**
                         * Constructs a new AdVideoAssetInventoryPreferences.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdVideoAssetInventoryPreferences);

                        /** AdVideoAssetInventoryPreferences in_feed_preference. */
                        public in_feed_preference?: (boolean|null);

                        /** AdVideoAssetInventoryPreferences in_stream_preference. */
                        public in_stream_preference?: (boolean|null);

                        /** AdVideoAssetInventoryPreferences shorts_preference. */
                        public shorts_preference?: (boolean|null);

                        /**
                         * Creates a new AdVideoAssetInventoryPreferences instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdVideoAssetInventoryPreferences instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdVideoAssetInventoryPreferences): google.ads.googleads.v23.common.AdVideoAssetInventoryPreferences;

                        /**
                         * Encodes the specified AdVideoAssetInventoryPreferences message. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAssetInventoryPreferences.verify|verify} messages.
                         * @param message AdVideoAssetInventoryPreferences message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdVideoAssetInventoryPreferences, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdVideoAssetInventoryPreferences message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAssetInventoryPreferences.verify|verify} messages.
                         * @param message AdVideoAssetInventoryPreferences message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdVideoAssetInventoryPreferences, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdVideoAssetLinkFeatureControl. */
                    interface IAdVideoAssetLinkFeatureControl {

                        /** AdVideoAssetLinkFeatureControl allow_youtube_comments */
                        allow_youtube_comments?: (boolean|null);
                    }

                    /** Represents an AdVideoAssetLinkFeatureControl. */
                    class AdVideoAssetLinkFeatureControl implements IAdVideoAssetLinkFeatureControl {

                        /**
                         * Constructs a new AdVideoAssetLinkFeatureControl.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdVideoAssetLinkFeatureControl);

                        /** AdVideoAssetLinkFeatureControl allow_youtube_comments. */
                        public allow_youtube_comments?: (boolean|null);

                        /**
                         * Creates a new AdVideoAssetLinkFeatureControl instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdVideoAssetLinkFeatureControl instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdVideoAssetLinkFeatureControl): google.ads.googleads.v23.common.AdVideoAssetLinkFeatureControl;

                        /**
                         * Encodes the specified AdVideoAssetLinkFeatureControl message. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAssetLinkFeatureControl.verify|verify} messages.
                         * @param message AdVideoAssetLinkFeatureControl message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdVideoAssetLinkFeatureControl, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdVideoAssetLinkFeatureControl message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdVideoAssetLinkFeatureControl.verify|verify} messages.
                         * @param message AdVideoAssetLinkFeatureControl message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdVideoAssetLinkFeatureControl, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdMediaBundleAsset. */
                    interface IAdMediaBundleAsset {

                        /** AdMediaBundleAsset asset */
                        asset?: (string|null);
                    }

                    /** Represents an AdMediaBundleAsset. */
                    class AdMediaBundleAsset implements IAdMediaBundleAsset {

                        /**
                         * Constructs a new AdMediaBundleAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdMediaBundleAsset);

                        /** AdMediaBundleAsset asset. */
                        public asset?: (string|null);

                        /**
                         * Creates a new AdMediaBundleAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdMediaBundleAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdMediaBundleAsset): google.ads.googleads.v23.common.AdMediaBundleAsset;

                        /**
                         * Encodes the specified AdMediaBundleAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AdMediaBundleAsset.verify|verify} messages.
                         * @param message AdMediaBundleAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdMediaBundleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdMediaBundleAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdMediaBundleAsset.verify|verify} messages.
                         * @param message AdMediaBundleAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdMediaBundleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdDemandGenCarouselCardAsset. */
                    interface IAdDemandGenCarouselCardAsset {

                        /** AdDemandGenCarouselCardAsset asset */
                        asset?: (string|null);
                    }

                    /** Represents an AdDemandGenCarouselCardAsset. */
                    class AdDemandGenCarouselCardAsset implements IAdDemandGenCarouselCardAsset {

                        /**
                         * Constructs a new AdDemandGenCarouselCardAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdDemandGenCarouselCardAsset);

                        /** AdDemandGenCarouselCardAsset asset. */
                        public asset?: (string|null);

                        /**
                         * Creates a new AdDemandGenCarouselCardAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdDemandGenCarouselCardAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdDemandGenCarouselCardAsset): google.ads.googleads.v23.common.AdDemandGenCarouselCardAsset;

                        /**
                         * Encodes the specified AdDemandGenCarouselCardAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AdDemandGenCarouselCardAsset.verify|verify} messages.
                         * @param message AdDemandGenCarouselCardAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdDemandGenCarouselCardAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdDemandGenCarouselCardAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdDemandGenCarouselCardAsset.verify|verify} messages.
                         * @param message AdDemandGenCarouselCardAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdDemandGenCarouselCardAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdCallToActionAsset. */
                    interface IAdCallToActionAsset {

                        /** AdCallToActionAsset asset */
                        asset?: (string|null);
                    }

                    /** Represents an AdCallToActionAsset. */
                    class AdCallToActionAsset implements IAdCallToActionAsset {

                        /**
                         * Constructs a new AdCallToActionAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdCallToActionAsset);

                        /** AdCallToActionAsset asset. */
                        public asset?: (string|null);

                        /**
                         * Creates a new AdCallToActionAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdCallToActionAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdCallToActionAsset): google.ads.googleads.v23.common.AdCallToActionAsset;

                        /**
                         * Encodes the specified AdCallToActionAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AdCallToActionAsset.verify|verify} messages.
                         * @param message AdCallToActionAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdCallToActionAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdCallToActionAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdCallToActionAsset.verify|verify} messages.
                         * @param message AdCallToActionAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdCallToActionAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdAppDeepLinkAsset. */
                    interface IAdAppDeepLinkAsset {

                        /** AdAppDeepLinkAsset asset */
                        asset?: (string|null);
                    }

                    /** Represents an AdAppDeepLinkAsset. */
                    class AdAppDeepLinkAsset implements IAdAppDeepLinkAsset {

                        /**
                         * Constructs a new AdAppDeepLinkAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdAppDeepLinkAsset);

                        /** AdAppDeepLinkAsset asset. */
                        public asset?: (string|null);

                        /**
                         * Creates a new AdAppDeepLinkAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdAppDeepLinkAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdAppDeepLinkAsset): google.ads.googleads.v23.common.AdAppDeepLinkAsset;

                        /**
                         * Encodes the specified AdAppDeepLinkAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AdAppDeepLinkAsset.verify|verify} messages.
                         * @param message AdAppDeepLinkAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdAppDeepLinkAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdAppDeepLinkAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdAppDeepLinkAsset.verify|verify} messages.
                         * @param message AdAppDeepLinkAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdAppDeepLinkAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AdAssetPolicySummary. */
                    interface IAdAssetPolicySummary {

                        /** AdAssetPolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v23.common.IPolicyTopicEntry[]|null);

                        /** AdAssetPolicySummary review_status */
                        review_status?: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** AdAssetPolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents an AdAssetPolicySummary. */
                    class AdAssetPolicySummary implements IAdAssetPolicySummary {

                        /**
                         * Constructs a new AdAssetPolicySummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdAssetPolicySummary);

                        /** AdAssetPolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v23.common.IPolicyTopicEntry[];

                        /** AdAssetPolicySummary review_status. */
                        public review_status: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** AdAssetPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus);

                        /**
                         * Creates a new AdAssetPolicySummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdAssetPolicySummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdAssetPolicySummary): google.ads.googleads.v23.common.AdAssetPolicySummary;

                        /**
                         * Encodes the specified AdAssetPolicySummary message. Does not implicitly {@link google.ads.googleads.v23.common.AdAssetPolicySummary.verify|verify} messages.
                         * @param message AdAssetPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdAssetPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdAssetPolicySummary.verify|verify} messages.
                         * @param message AdAssetPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AssetLinkPrimaryStatusDetails. */
                    interface IAssetLinkPrimaryStatusDetails {

                        /** AssetLinkPrimaryStatusDetails reason */
                        reason?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason|null);

                        /** AssetLinkPrimaryStatusDetails status */
                        status?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|null);

                        /** AssetLinkPrimaryStatusDetails asset_disapproved */
                        asset_disapproved?: (google.ads.googleads.v23.common.IAssetDisapproved|null);
                    }

                    /** Represents an AssetLinkPrimaryStatusDetails. */
                    class AssetLinkPrimaryStatusDetails implements IAssetLinkPrimaryStatusDetails {

                        /**
                         * Constructs a new AssetLinkPrimaryStatusDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails);

                        /** AssetLinkPrimaryStatusDetails reason. */
                        public reason?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason|null);

                        /** AssetLinkPrimaryStatusDetails status. */
                        public status?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|null);

                        /** AssetLinkPrimaryStatusDetails asset_disapproved. */
                        public asset_disapproved?: (google.ads.googleads.v23.common.IAssetDisapproved|null);

                        /** AssetLinkPrimaryStatusDetails details. */
                        public details?: "asset_disapproved";

                        /**
                         * Creates a new AssetLinkPrimaryStatusDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetLinkPrimaryStatusDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails): google.ads.googleads.v23.common.AssetLinkPrimaryStatusDetails;

                        /**
                         * Encodes the specified AssetLinkPrimaryStatusDetails message. Does not implicitly {@link google.ads.googleads.v23.common.AssetLinkPrimaryStatusDetails.verify|verify} messages.
                         * @param message AssetLinkPrimaryStatusDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetLinkPrimaryStatusDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AssetLinkPrimaryStatusDetails.verify|verify} messages.
                         * @param message AssetLinkPrimaryStatusDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AssetDisapproved. */
                    interface IAssetDisapproved {

                        /** AssetDisapproved offline_evaluation_error_reasons */
                        offline_evaluation_error_reasons?: (google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum.AssetOfflineEvaluationErrorReasons[]|null);
                    }

                    /** Represents an AssetDisapproved. */
                    class AssetDisapproved implements IAssetDisapproved {

                        /**
                         * Constructs a new AssetDisapproved.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAssetDisapproved);

                        /** AssetDisapproved offline_evaluation_error_reasons. */
                        public offline_evaluation_error_reasons: google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum.AssetOfflineEvaluationErrorReasons[];

                        /**
                         * Creates a new AssetDisapproved instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetDisapproved instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAssetDisapproved): google.ads.googleads.v23.common.AssetDisapproved;

                        /**
                         * Encodes the specified AssetDisapproved message. Does not implicitly {@link google.ads.googleads.v23.common.AssetDisapproved.verify|verify} messages.
                         * @param message AssetDisapproved message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAssetDisapproved, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetDisapproved message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AssetDisapproved.verify|verify} messages.
                         * @param message AssetDisapproved message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAssetDisapproved, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a PolicyViolationKey. */
                    interface IPolicyViolationKey {

                        /** PolicyViolationKey policy_name */
                        policy_name?: (string|null);

                        /** PolicyViolationKey violating_text */
                        violating_text?: (string|null);
                    }

                    /** Represents a PolicyViolationKey. */
                    class PolicyViolationKey implements IPolicyViolationKey {

                        /**
                         * Constructs a new PolicyViolationKey.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPolicyViolationKey);

                        /** PolicyViolationKey policy_name. */
                        public policy_name?: (string|null);

                        /** PolicyViolationKey violating_text. */
                        public violating_text?: (string|null);

                        /**
                         * Creates a new PolicyViolationKey instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyViolationKey instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPolicyViolationKey): google.ads.googleads.v23.common.PolicyViolationKey;

                        /**
                         * Encodes the specified PolicyViolationKey message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyViolationKey.verify|verify} messages.
                         * @param message PolicyViolationKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPolicyViolationKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyViolationKey message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyViolationKey.verify|verify} messages.
                         * @param message PolicyViolationKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPolicyViolationKey, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PolicyValidationParameter. */
                    interface IPolicyValidationParameter {

                        /** PolicyValidationParameter ignorable_policy_topics */
                        ignorable_policy_topics?: (string[]|null);

                        /** PolicyValidationParameter exempt_policy_violation_keys */
                        exempt_policy_violation_keys?: (google.ads.googleads.v23.common.IPolicyViolationKey[]|null);
                    }

                    /** Represents a PolicyValidationParameter. */
                    class PolicyValidationParameter implements IPolicyValidationParameter {

                        /**
                         * Constructs a new PolicyValidationParameter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPolicyValidationParameter);

                        /** PolicyValidationParameter ignorable_policy_topics. */
                        public ignorable_policy_topics: string[];

                        /** PolicyValidationParameter exempt_policy_violation_keys. */
                        public exempt_policy_violation_keys: google.ads.googleads.v23.common.IPolicyViolationKey[];

                        /**
                         * Creates a new PolicyValidationParameter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyValidationParameter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPolicyValidationParameter): google.ads.googleads.v23.common.PolicyValidationParameter;

                        /**
                         * Encodes the specified PolicyValidationParameter message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyValidationParameter.verify|verify} messages.
                         * @param message PolicyValidationParameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPolicyValidationParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyValidationParameter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyValidationParameter.verify|verify} messages.
                         * @param message PolicyValidationParameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPolicyValidationParameter, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PolicyTopicEntry. */
                    interface IPolicyTopicEntry {

                        /** PolicyTopicEntry topic */
                        topic?: (string|null);

                        /** PolicyTopicEntry type */
                        type?: (google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum.PolicyTopicEntryType|keyof typeof google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum.PolicyTopicEntryType|null);

                        /** PolicyTopicEntry evidences */
                        evidences?: (google.ads.googleads.v23.common.IPolicyTopicEvidence[]|null);

                        /** PolicyTopicEntry constraints */
                        constraints?: (google.ads.googleads.v23.common.IPolicyTopicConstraint[]|null);
                    }

                    /** Represents a PolicyTopicEntry. */
                    class PolicyTopicEntry implements IPolicyTopicEntry {

                        /**
                         * Constructs a new PolicyTopicEntry.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPolicyTopicEntry);

                        /** PolicyTopicEntry topic. */
                        public topic?: (string|null);

                        /** PolicyTopicEntry type. */
                        public type: (google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum.PolicyTopicEntryType|keyof typeof google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum.PolicyTopicEntryType);

                        /** PolicyTopicEntry evidences. */
                        public evidences: google.ads.googleads.v23.common.IPolicyTopicEvidence[];

                        /** PolicyTopicEntry constraints. */
                        public constraints: google.ads.googleads.v23.common.IPolicyTopicConstraint[];

                        /**
                         * Creates a new PolicyTopicEntry instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyTopicEntry instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPolicyTopicEntry): google.ads.googleads.v23.common.PolicyTopicEntry;

                        /**
                         * Encodes the specified PolicyTopicEntry message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEntry.verify|verify} messages.
                         * @param message PolicyTopicEntry message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPolicyTopicEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEntry message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEntry.verify|verify} messages.
                         * @param message PolicyTopicEntry message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPolicyTopicEntry, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PolicyTopicEvidence. */
                    interface IPolicyTopicEvidence {

                        /** PolicyTopicEvidence website_list */
                        website_list?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IWebsiteList|null);

                        /** PolicyTopicEvidence text_list */
                        text_list?: (google.ads.googleads.v23.common.PolicyTopicEvidence.ITextList|null);

                        /** PolicyTopicEvidence language_code */
                        language_code?: (string|null);

                        /** PolicyTopicEvidence destination_text_list */
                        destination_text_list?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationTextList|null);

                        /** PolicyTopicEvidence destination_mismatch */
                        destination_mismatch?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationMismatch|null);

                        /** PolicyTopicEvidence destination_not_working */
                        destination_not_working?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationNotWorking|null);
                    }

                    /** Represents a PolicyTopicEvidence. */
                    class PolicyTopicEvidence implements IPolicyTopicEvidence {

                        /**
                         * Constructs a new PolicyTopicEvidence.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPolicyTopicEvidence);

                        /** PolicyTopicEvidence website_list. */
                        public website_list?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IWebsiteList|null);

                        /** PolicyTopicEvidence text_list. */
                        public text_list?: (google.ads.googleads.v23.common.PolicyTopicEvidence.ITextList|null);

                        /** PolicyTopicEvidence language_code. */
                        public language_code?: (string|null);

                        /** PolicyTopicEvidence destination_text_list. */
                        public destination_text_list?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationTextList|null);

                        /** PolicyTopicEvidence destination_mismatch. */
                        public destination_mismatch?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationMismatch|null);

                        /** PolicyTopicEvidence destination_not_working. */
                        public destination_not_working?: (google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationNotWorking|null);

                        /** PolicyTopicEvidence value. */
                        public value?: ("website_list"|"text_list"|"language_code"|"destination_text_list"|"destination_mismatch"|"destination_not_working");

                        /**
                         * Creates a new PolicyTopicEvidence instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyTopicEvidence instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPolicyTopicEvidence): google.ads.googleads.v23.common.PolicyTopicEvidence;

                        /**
                         * Encodes the specified PolicyTopicEvidence message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.verify|verify} messages.
                         * @param message PolicyTopicEvidence message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPolicyTopicEvidence, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEvidence message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.verify|verify} messages.
                         * @param message PolicyTopicEvidence message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPolicyTopicEvidence, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    namespace PolicyTopicEvidence {

                        /** Properties of a TextList. */
                        interface ITextList {

                            /** TextList texts */
                            texts?: (string[]|null);
                        }

                        /** Represents a TextList. */
                        class TextList implements ITextList {

                            /**
                             * Constructs a new TextList.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.ITextList);

                            /** TextList texts. */
                            public texts: string[];

                            /**
                             * Creates a new TextList instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TextList instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.ITextList): google.ads.googleads.v23.common.PolicyTopicEvidence.TextList;

                            /**
                             * Encodes the specified TextList message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.TextList.verify|verify} messages.
                             * @param message TextList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicEvidence.ITextList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TextList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.TextList.verify|verify} messages.
                             * @param message TextList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicEvidence.ITextList, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a TextList message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TextList
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicEvidence.TextList;

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

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

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

                        /** Properties of a WebsiteList. */
                        interface IWebsiteList {

                            /** WebsiteList websites */
                            websites?: (string[]|null);
                        }

                        /** Represents a WebsiteList. */
                        class WebsiteList implements IWebsiteList {

                            /**
                             * Constructs a new WebsiteList.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IWebsiteList);

                            /** WebsiteList websites. */
                            public websites: string[];

                            /**
                             * Creates a new WebsiteList instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns WebsiteList instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IWebsiteList): google.ads.googleads.v23.common.PolicyTopicEvidence.WebsiteList;

                            /**
                             * Encodes the specified WebsiteList message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.WebsiteList.verify|verify} messages.
                             * @param message WebsiteList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IWebsiteList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified WebsiteList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.WebsiteList.verify|verify} messages.
                             * @param message WebsiteList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IWebsiteList, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a WebsiteList message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns WebsiteList
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicEvidence.WebsiteList;

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

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

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

                        /** Properties of a DestinationTextList. */
                        interface IDestinationTextList {

                            /** DestinationTextList destination_texts */
                            destination_texts?: (string[]|null);
                        }

                        /** Represents a DestinationTextList. */
                        class DestinationTextList implements IDestinationTextList {

                            /**
                             * Constructs a new DestinationTextList.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationTextList);

                            /** DestinationTextList destination_texts. */
                            public destination_texts: string[];

                            /**
                             * Creates a new DestinationTextList instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DestinationTextList instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationTextList): google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationTextList;

                            /**
                             * Encodes the specified DestinationTextList message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationTextList.verify|verify} messages.
                             * @param message DestinationTextList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationTextList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DestinationTextList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationTextList.verify|verify} messages.
                             * @param message DestinationTextList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationTextList, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a DestinationTextList message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DestinationTextList
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationTextList;

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

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

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

                        /** Properties of a DestinationMismatch. */
                        interface IDestinationMismatch {

                            /** DestinationMismatch url_types */
                            url_types?: (google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum.PolicyTopicEvidenceDestinationMismatchUrlType[]|null);
                        }

                        /** Represents a DestinationMismatch. */
                        class DestinationMismatch implements IDestinationMismatch {

                            /**
                             * Constructs a new DestinationMismatch.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationMismatch);

                            /** DestinationMismatch url_types. */
                            public url_types: google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum.PolicyTopicEvidenceDestinationMismatchUrlType[];

                            /**
                             * Creates a new DestinationMismatch instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DestinationMismatch instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationMismatch): google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationMismatch;

                            /**
                             * Encodes the specified DestinationMismatch message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationMismatch.verify|verify} messages.
                             * @param message DestinationMismatch message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationMismatch, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DestinationMismatch message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationMismatch.verify|verify} messages.
                             * @param message DestinationMismatch message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationMismatch, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a DestinationMismatch message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DestinationMismatch
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationMismatch;

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

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

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

                        /** Properties of a DestinationNotWorking. */
                        interface IDestinationNotWorking {

                            /** DestinationNotWorking expanded_url */
                            expanded_url?: (string|null);

                            /** DestinationNotWorking device */
                            device?: (google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.PolicyTopicEvidenceDestinationNotWorkingDevice|keyof typeof google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.PolicyTopicEvidenceDestinationNotWorkingDevice|null);

                            /** DestinationNotWorking last_checked_date_time */
                            last_checked_date_time?: (string|null);

                            /** DestinationNotWorking dns_error_type */
                            dns_error_type?: (google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.PolicyTopicEvidenceDestinationNotWorkingDnsErrorType|keyof typeof google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.PolicyTopicEvidenceDestinationNotWorkingDnsErrorType|null);

                            /** DestinationNotWorking http_error_code */
                            http_error_code?: (number|null);
                        }

                        /** Represents a DestinationNotWorking. */
                        class DestinationNotWorking implements IDestinationNotWorking {

                            /**
                             * Constructs a new DestinationNotWorking.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationNotWorking);

                            /** DestinationNotWorking expanded_url. */
                            public expanded_url?: (string|null);

                            /** DestinationNotWorking device. */
                            public device: (google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.PolicyTopicEvidenceDestinationNotWorkingDevice|keyof typeof google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.PolicyTopicEvidenceDestinationNotWorkingDevice);

                            /** DestinationNotWorking last_checked_date_time. */
                            public last_checked_date_time?: (string|null);

                            /** DestinationNotWorking dns_error_type. */
                            public dns_error_type?: (google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.PolicyTopicEvidenceDestinationNotWorkingDnsErrorType|keyof typeof google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.PolicyTopicEvidenceDestinationNotWorkingDnsErrorType|null);

                            /** DestinationNotWorking http_error_code. */
                            public http_error_code?: (number|null);

                            /** DestinationNotWorking reason. */
                            public reason?: ("dns_error_type"|"http_error_code");

                            /**
                             * Creates a new DestinationNotWorking instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DestinationNotWorking instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationNotWorking): google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationNotWorking;

                            /**
                             * Encodes the specified DestinationNotWorking message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationNotWorking.verify|verify} messages.
                             * @param message DestinationNotWorking message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationNotWorking, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DestinationNotWorking message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationNotWorking.verify|verify} messages.
                             * @param message DestinationNotWorking message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicEvidence.IDestinationNotWorking, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a DestinationNotWorking message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DestinationNotWorking
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicEvidence.DestinationNotWorking;

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

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

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

                    /** Properties of a PolicyTopicConstraint. */
                    interface IPolicyTopicConstraint {

                        /** PolicyTopicConstraint country_constraint_list */
                        country_constraint_list?: (google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList|null);

                        /** PolicyTopicConstraint reseller_constraint */
                        reseller_constraint?: (google.ads.googleads.v23.common.PolicyTopicConstraint.IResellerConstraint|null);

                        /** PolicyTopicConstraint certificate_missing_in_country_list */
                        certificate_missing_in_country_list?: (google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList|null);

                        /** PolicyTopicConstraint certificate_domain_mismatch_in_country_list */
                        certificate_domain_mismatch_in_country_list?: (google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList|null);
                    }

                    /** Represents a PolicyTopicConstraint. */
                    class PolicyTopicConstraint implements IPolicyTopicConstraint {

                        /**
                         * Constructs a new PolicyTopicConstraint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPolicyTopicConstraint);

                        /** PolicyTopicConstraint country_constraint_list. */
                        public country_constraint_list?: (google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList|null);

                        /** PolicyTopicConstraint reseller_constraint. */
                        public reseller_constraint?: (google.ads.googleads.v23.common.PolicyTopicConstraint.IResellerConstraint|null);

                        /** PolicyTopicConstraint certificate_missing_in_country_list. */
                        public certificate_missing_in_country_list?: (google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList|null);

                        /** PolicyTopicConstraint certificate_domain_mismatch_in_country_list. */
                        public certificate_domain_mismatch_in_country_list?: (google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList|null);

                        /** PolicyTopicConstraint value. */
                        public value?: ("country_constraint_list"|"reseller_constraint"|"certificate_missing_in_country_list"|"certificate_domain_mismatch_in_country_list");

                        /**
                         * Creates a new PolicyTopicConstraint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyTopicConstraint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPolicyTopicConstraint): google.ads.googleads.v23.common.PolicyTopicConstraint;

                        /**
                         * Encodes the specified PolicyTopicConstraint message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.verify|verify} messages.
                         * @param message PolicyTopicConstraint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPolicyTopicConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicConstraint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.verify|verify} messages.
                         * @param message PolicyTopicConstraint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPolicyTopicConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    namespace PolicyTopicConstraint {

                        /** Properties of a CountryConstraintList. */
                        interface ICountryConstraintList {

                            /** CountryConstraintList total_targeted_countries */
                            total_targeted_countries?: (number|null);

                            /** CountryConstraintList countries */
                            countries?: (google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraint[]|null);
                        }

                        /** Represents a CountryConstraintList. */
                        class CountryConstraintList implements ICountryConstraintList {

                            /**
                             * Constructs a new CountryConstraintList.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList);

                            /** CountryConstraintList total_targeted_countries. */
                            public total_targeted_countries?: (number|null);

                            /** CountryConstraintList countries. */
                            public countries: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraint[];

                            /**
                             * Creates a new CountryConstraintList instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CountryConstraintList instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList): google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraintList;

                            /**
                             * Encodes the specified CountryConstraintList message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraintList.verify|verify} messages.
                             * @param message CountryConstraintList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CountryConstraintList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraintList.verify|verify} messages.
                             * @param message CountryConstraintList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraintList, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a CountryConstraintList message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CountryConstraintList
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraintList;

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

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

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

                        /** Properties of a ResellerConstraint. */
                        interface IResellerConstraint {
                        }

                        /** Represents a ResellerConstraint. */
                        class ResellerConstraint implements IResellerConstraint {

                            /**
                             * Constructs a new ResellerConstraint.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicConstraint.IResellerConstraint);

                            /**
                             * Creates a new ResellerConstraint instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ResellerConstraint instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicConstraint.IResellerConstraint): google.ads.googleads.v23.common.PolicyTopicConstraint.ResellerConstraint;

                            /**
                             * Encodes the specified ResellerConstraint message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.ResellerConstraint.verify|verify} messages.
                             * @param message ResellerConstraint message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicConstraint.IResellerConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResellerConstraint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.ResellerConstraint.verify|verify} messages.
                             * @param message ResellerConstraint message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicConstraint.IResellerConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a ResellerConstraint message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ResellerConstraint
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicConstraint.ResellerConstraint;

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

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

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

                        /** Properties of a CountryConstraint. */
                        interface ICountryConstraint {

                            /** CountryConstraint country_criterion */
                            country_criterion?: (string|null);
                        }

                        /** Represents a CountryConstraint. */
                        class CountryConstraint implements ICountryConstraint {

                            /**
                             * Constructs a new CountryConstraint.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraint);

                            /** CountryConstraint country_criterion. */
                            public country_criterion?: (string|null);

                            /**
                             * Creates a new CountryConstraint instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CountryConstraint instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraint): google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraint;

                            /**
                             * Encodes the specified CountryConstraint message. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraint.verify|verify} messages.
                             * @param message CountryConstraint message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CountryConstraint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraint.verify|verify} messages.
                             * @param message CountryConstraint message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.PolicyTopicConstraint.ICountryConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                            /**
                             * Creates a CountryConstraint message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CountryConstraint
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicyTopicConstraint.CountryConstraint;

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

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

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

                    /** Properties of a TextAdInfo. */
                    interface ITextAdInfo {

                        /** TextAdInfo headline */
                        headline?: (string|null);

                        /** TextAdInfo description1 */
                        description1?: (string|null);

                        /** TextAdInfo description2 */
                        description2?: (string|null);
                    }

                    /** Represents a TextAdInfo. */
                    class TextAdInfo implements ITextAdInfo {

                        /**
                         * Constructs a new TextAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITextAdInfo);

                        /** TextAdInfo headline. */
                        public headline?: (string|null);

                        /** TextAdInfo description1. */
                        public description1?: (string|null);

                        /** TextAdInfo description2. */
                        public description2?: (string|null);

                        /**
                         * Creates a new TextAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TextAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITextAdInfo): google.ads.googleads.v23.common.TextAdInfo;

                        /**
                         * Encodes the specified TextAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.TextAdInfo.verify|verify} messages.
                         * @param message TextAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITextAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TextAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TextAdInfo.verify|verify} messages.
                         * @param message TextAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITextAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of an ExpandedTextAdInfo. */
                    interface IExpandedTextAdInfo {

                        /** ExpandedTextAdInfo headline_part1 */
                        headline_part1?: (string|null);

                        /** ExpandedTextAdInfo headline_part2 */
                        headline_part2?: (string|null);

                        /** ExpandedTextAdInfo headline_part3 */
                        headline_part3?: (string|null);

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

                        /** ExpandedTextAdInfo description2 */
                        description2?: (string|null);

                        /** ExpandedTextAdInfo path1 */
                        path1?: (string|null);

                        /** ExpandedTextAdInfo path2 */
                        path2?: (string|null);
                    }

                    /** Represents an ExpandedTextAdInfo. */
                    class ExpandedTextAdInfo implements IExpandedTextAdInfo {

                        /**
                         * Constructs a new ExpandedTextAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IExpandedTextAdInfo);

                        /** ExpandedTextAdInfo headline_part1. */
                        public headline_part1?: (string|null);

                        /** ExpandedTextAdInfo headline_part2. */
                        public headline_part2?: (string|null);

                        /** ExpandedTextAdInfo headline_part3. */
                        public headline_part3?: (string|null);

                        /** ExpandedTextAdInfo description. */
                        public description?: (string|null);

                        /** ExpandedTextAdInfo description2. */
                        public description2?: (string|null);

                        /** ExpandedTextAdInfo path1. */
                        public path1?: (string|null);

                        /** ExpandedTextAdInfo path2. */
                        public path2?: (string|null);

                        /**
                         * Creates a new ExpandedTextAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExpandedTextAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IExpandedTextAdInfo): google.ads.googleads.v23.common.ExpandedTextAdInfo;

                        /**
                         * Encodes the specified ExpandedTextAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ExpandedTextAdInfo.verify|verify} messages.
                         * @param message ExpandedTextAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IExpandedTextAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExpandedTextAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ExpandedTextAdInfo.verify|verify} messages.
                         * @param message ExpandedTextAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IExpandedTextAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an ExpandedDynamicSearchAdInfo. */
                    interface IExpandedDynamicSearchAdInfo {

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

                        /** ExpandedDynamicSearchAdInfo description2 */
                        description2?: (string|null);
                    }

                    /** Represents an ExpandedDynamicSearchAdInfo. */
                    class ExpandedDynamicSearchAdInfo implements IExpandedDynamicSearchAdInfo {

                        /**
                         * Constructs a new ExpandedDynamicSearchAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IExpandedDynamicSearchAdInfo);

                        /** ExpandedDynamicSearchAdInfo description. */
                        public description?: (string|null);

                        /** ExpandedDynamicSearchAdInfo description2. */
                        public description2?: (string|null);

                        /**
                         * Creates a new ExpandedDynamicSearchAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExpandedDynamicSearchAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IExpandedDynamicSearchAdInfo): google.ads.googleads.v23.common.ExpandedDynamicSearchAdInfo;

                        /**
                         * Encodes the specified ExpandedDynamicSearchAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ExpandedDynamicSearchAdInfo.verify|verify} messages.
                         * @param message ExpandedDynamicSearchAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IExpandedDynamicSearchAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExpandedDynamicSearchAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ExpandedDynamicSearchAdInfo.verify|verify} messages.
                         * @param message ExpandedDynamicSearchAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IExpandedDynamicSearchAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a HotelAdInfo. */
                    interface IHotelAdInfo {
                    }

                    /** Represents a HotelAdInfo. */
                    class HotelAdInfo implements IHotelAdInfo {

                        /**
                         * Constructs a new HotelAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelAdInfo);

                        /**
                         * Creates a new HotelAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelAdInfo): google.ads.googleads.v23.common.HotelAdInfo;

                        /**
                         * Encodes the specified HotelAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelAdInfo.verify|verify} messages.
                         * @param message HotelAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelAdInfo.verify|verify} messages.
                         * @param message HotelAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a TravelAdInfo. */
                    interface ITravelAdInfo {
                    }

                    /** Represents a TravelAdInfo. */
                    class TravelAdInfo implements ITravelAdInfo {

                        /**
                         * Constructs a new TravelAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITravelAdInfo);

                        /**
                         * Creates a new TravelAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TravelAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITravelAdInfo): google.ads.googleads.v23.common.TravelAdInfo;

                        /**
                         * Encodes the specified TravelAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.TravelAdInfo.verify|verify} messages.
                         * @param message TravelAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITravelAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TravelAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TravelAdInfo.verify|verify} messages.
                         * @param message TravelAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITravelAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ShoppingSmartAdInfo. */
                    interface IShoppingSmartAdInfo {
                    }

                    /** Represents a ShoppingSmartAdInfo. */
                    class ShoppingSmartAdInfo implements IShoppingSmartAdInfo {

                        /**
                         * Constructs a new ShoppingSmartAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IShoppingSmartAdInfo);

                        /**
                         * Creates a new ShoppingSmartAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingSmartAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IShoppingSmartAdInfo): google.ads.googleads.v23.common.ShoppingSmartAdInfo;

                        /**
                         * Encodes the specified ShoppingSmartAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingSmartAdInfo.verify|verify} messages.
                         * @param message ShoppingSmartAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IShoppingSmartAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingSmartAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingSmartAdInfo.verify|verify} messages.
                         * @param message ShoppingSmartAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IShoppingSmartAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ShoppingProductAdInfo. */
                    interface IShoppingProductAdInfo {
                    }

                    /** Represents a ShoppingProductAdInfo. */
                    class ShoppingProductAdInfo implements IShoppingProductAdInfo {

                        /**
                         * Constructs a new ShoppingProductAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IShoppingProductAdInfo);

                        /**
                         * Creates a new ShoppingProductAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingProductAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IShoppingProductAdInfo): google.ads.googleads.v23.common.ShoppingProductAdInfo;

                        /**
                         * Encodes the specified ShoppingProductAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingProductAdInfo.verify|verify} messages.
                         * @param message ShoppingProductAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IShoppingProductAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingProductAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingProductAdInfo.verify|verify} messages.
                         * @param message ShoppingProductAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IShoppingProductAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ShoppingComparisonListingAdInfo. */
                    interface IShoppingComparisonListingAdInfo {

                        /** ShoppingComparisonListingAdInfo headline */
                        headline?: (string|null);
                    }

                    /** Represents a ShoppingComparisonListingAdInfo. */
                    class ShoppingComparisonListingAdInfo implements IShoppingComparisonListingAdInfo {

                        /**
                         * Constructs a new ShoppingComparisonListingAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IShoppingComparisonListingAdInfo);

                        /** ShoppingComparisonListingAdInfo headline. */
                        public headline?: (string|null);

                        /**
                         * Creates a new ShoppingComparisonListingAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingComparisonListingAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IShoppingComparisonListingAdInfo): google.ads.googleads.v23.common.ShoppingComparisonListingAdInfo;

                        /**
                         * Encodes the specified ShoppingComparisonListingAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingComparisonListingAdInfo.verify|verify} messages.
                         * @param message ShoppingComparisonListingAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IShoppingComparisonListingAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingComparisonListingAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingComparisonListingAdInfo.verify|verify} messages.
                         * @param message ShoppingComparisonListingAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IShoppingComparisonListingAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of an ImageAdInfo. */
                    interface IImageAdInfo {

                        /** ImageAdInfo pixel_width */
                        pixel_width?: (number|null);

                        /** ImageAdInfo pixel_height */
                        pixel_height?: (number|null);

                        /** ImageAdInfo image_url */
                        image_url?: (string|null);

                        /** ImageAdInfo preview_pixel_width */
                        preview_pixel_width?: (number|null);

                        /** ImageAdInfo preview_pixel_height */
                        preview_pixel_height?: (number|null);

                        /** ImageAdInfo preview_image_url */
                        preview_image_url?: (string|null);

                        /** ImageAdInfo mime_type */
                        mime_type?: (google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|null);

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

                        /** ImageAdInfo image_asset */
                        image_asset?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** ImageAdInfo data */
                        data?: (Uint8Array|Buffer|string|null);

                        /** ImageAdInfo ad_id_to_copy_image_from */
                        ad_id_to_copy_image_from?: (number|null);
                    }

                    /** Represents an ImageAdInfo. */
                    class ImageAdInfo implements IImageAdInfo {

                        /**
                         * Constructs a new ImageAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IImageAdInfo);

                        /** ImageAdInfo pixel_width. */
                        public pixel_width?: (number|null);

                        /** ImageAdInfo pixel_height. */
                        public pixel_height?: (number|null);

                        /** ImageAdInfo image_url. */
                        public image_url?: (string|null);

                        /** ImageAdInfo preview_pixel_width. */
                        public preview_pixel_width?: (number|null);

                        /** ImageAdInfo preview_pixel_height. */
                        public preview_pixel_height?: (number|null);

                        /** ImageAdInfo preview_image_url. */
                        public preview_image_url?: (string|null);

                        /** ImageAdInfo mime_type. */
                        public mime_type: (google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v23.enums.MimeTypeEnum.MimeType);

                        /** ImageAdInfo name. */
                        public name?: (string|null);

                        /** ImageAdInfo image_asset. */
                        public image_asset?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** ImageAdInfo data. */
                        public data?: (Uint8Array|Buffer|string|null);

                        /** ImageAdInfo ad_id_to_copy_image_from. */
                        public ad_id_to_copy_image_from?: (number|null);

                        /** ImageAdInfo image. */
                        public image?: ("image_asset"|"data"|"ad_id_to_copy_image_from");

                        /**
                         * Creates a new ImageAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ImageAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IImageAdInfo): google.ads.googleads.v23.common.ImageAdInfo;

                        /**
                         * Encodes the specified ImageAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ImageAdInfo.verify|verify} messages.
                         * @param message ImageAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IImageAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ImageAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ImageAdInfo.verify|verify} messages.
                         * @param message ImageAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IImageAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a VideoBumperInStreamAdInfo. */
                    interface IVideoBumperInStreamAdInfo {

                        /** VideoBumperInStreamAdInfo companion_banner */
                        companion_banner?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** VideoBumperInStreamAdInfo action_button_label */
                        action_button_label?: (string|null);

                        /** VideoBumperInStreamAdInfo action_headline */
                        action_headline?: (string|null);
                    }

                    /** Represents a VideoBumperInStreamAdInfo. */
                    class VideoBumperInStreamAdInfo implements IVideoBumperInStreamAdInfo {

                        /**
                         * Constructs a new VideoBumperInStreamAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVideoBumperInStreamAdInfo);

                        /** VideoBumperInStreamAdInfo companion_banner. */
                        public companion_banner?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** VideoBumperInStreamAdInfo action_button_label. */
                        public action_button_label: string;

                        /** VideoBumperInStreamAdInfo action_headline. */
                        public action_headline: string;

                        /**
                         * Creates a new VideoBumperInStreamAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoBumperInStreamAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVideoBumperInStreamAdInfo): google.ads.googleads.v23.common.VideoBumperInStreamAdInfo;

                        /**
                         * Encodes the specified VideoBumperInStreamAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VideoBumperInStreamAdInfo.verify|verify} messages.
                         * @param message VideoBumperInStreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVideoBumperInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoBumperInStreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VideoBumperInStreamAdInfo.verify|verify} messages.
                         * @param message VideoBumperInStreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVideoBumperInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a VideoNonSkippableInStreamAdInfo. */
                    interface IVideoNonSkippableInStreamAdInfo {

                        /** VideoNonSkippableInStreamAdInfo companion_banner */
                        companion_banner?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** VideoNonSkippableInStreamAdInfo action_button_label */
                        action_button_label?: (string|null);

                        /** VideoNonSkippableInStreamAdInfo action_headline */
                        action_headline?: (string|null);
                    }

                    /** Represents a VideoNonSkippableInStreamAdInfo. */
                    class VideoNonSkippableInStreamAdInfo implements IVideoNonSkippableInStreamAdInfo {

                        /**
                         * Constructs a new VideoNonSkippableInStreamAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVideoNonSkippableInStreamAdInfo);

                        /** VideoNonSkippableInStreamAdInfo companion_banner. */
                        public companion_banner?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** VideoNonSkippableInStreamAdInfo action_button_label. */
                        public action_button_label: string;

                        /** VideoNonSkippableInStreamAdInfo action_headline. */
                        public action_headline: string;

                        /**
                         * Creates a new VideoNonSkippableInStreamAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoNonSkippableInStreamAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVideoNonSkippableInStreamAdInfo): google.ads.googleads.v23.common.VideoNonSkippableInStreamAdInfo;

                        /**
                         * Encodes the specified VideoNonSkippableInStreamAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VideoNonSkippableInStreamAdInfo.verify|verify} messages.
                         * @param message VideoNonSkippableInStreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVideoNonSkippableInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoNonSkippableInStreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VideoNonSkippableInStreamAdInfo.verify|verify} messages.
                         * @param message VideoNonSkippableInStreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVideoNonSkippableInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a VideoTrueViewInStreamAdInfo. */
                    interface IVideoTrueViewInStreamAdInfo {

                        /** VideoTrueViewInStreamAdInfo action_button_label */
                        action_button_label?: (string|null);

                        /** VideoTrueViewInStreamAdInfo action_headline */
                        action_headline?: (string|null);

                        /** VideoTrueViewInStreamAdInfo companion_banner */
                        companion_banner?: (google.ads.googleads.v23.common.IAdImageAsset|null);
                    }

                    /** Represents a VideoTrueViewInStreamAdInfo. */
                    class VideoTrueViewInStreamAdInfo implements IVideoTrueViewInStreamAdInfo {

                        /**
                         * Constructs a new VideoTrueViewInStreamAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVideoTrueViewInStreamAdInfo);

                        /** VideoTrueViewInStreamAdInfo action_button_label. */
                        public action_button_label: string;

                        /** VideoTrueViewInStreamAdInfo action_headline. */
                        public action_headline: string;

                        /** VideoTrueViewInStreamAdInfo companion_banner. */
                        public companion_banner?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /**
                         * Creates a new VideoTrueViewInStreamAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoTrueViewInStreamAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVideoTrueViewInStreamAdInfo): google.ads.googleads.v23.common.VideoTrueViewInStreamAdInfo;

                        /**
                         * Encodes the specified VideoTrueViewInStreamAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VideoTrueViewInStreamAdInfo.verify|verify} messages.
                         * @param message VideoTrueViewInStreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVideoTrueViewInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoTrueViewInStreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VideoTrueViewInStreamAdInfo.verify|verify} messages.
                         * @param message VideoTrueViewInStreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVideoTrueViewInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a VideoOutstreamAdInfo. */
                    interface IVideoOutstreamAdInfo {

                        /** VideoOutstreamAdInfo headline */
                        headline?: (string|null);

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

                    /** Represents a VideoOutstreamAdInfo. */
                    class VideoOutstreamAdInfo implements IVideoOutstreamAdInfo {

                        /**
                         * Constructs a new VideoOutstreamAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVideoOutstreamAdInfo);

                        /** VideoOutstreamAdInfo headline. */
                        public headline: string;

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

                        /**
                         * Creates a new VideoOutstreamAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoOutstreamAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVideoOutstreamAdInfo): google.ads.googleads.v23.common.VideoOutstreamAdInfo;

                        /**
                         * Encodes the specified VideoOutstreamAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VideoOutstreamAdInfo.verify|verify} messages.
                         * @param message VideoOutstreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVideoOutstreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoOutstreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VideoOutstreamAdInfo.verify|verify} messages.
                         * @param message VideoOutstreamAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVideoOutstreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of an InFeedVideoAdInfo. */
                    interface IInFeedVideoAdInfo {

                        /** InFeedVideoAdInfo headline */
                        headline?: (string|null);

                        /** InFeedVideoAdInfo description1 */
                        description1?: (string|null);

                        /** InFeedVideoAdInfo description2 */
                        description2?: (string|null);

                        /** InFeedVideoAdInfo thumbnail */
                        thumbnail?: (google.ads.googleads.v23.enums.VideoThumbnailEnum.VideoThumbnail|keyof typeof google.ads.googleads.v23.enums.VideoThumbnailEnum.VideoThumbnail|null);
                    }

                    /** Represents an InFeedVideoAdInfo. */
                    class InFeedVideoAdInfo implements IInFeedVideoAdInfo {

                        /**
                         * Constructs a new InFeedVideoAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IInFeedVideoAdInfo);

                        /** InFeedVideoAdInfo headline. */
                        public headline: string;

                        /** InFeedVideoAdInfo description1. */
                        public description1: string;

                        /** InFeedVideoAdInfo description2. */
                        public description2: string;

                        /** InFeedVideoAdInfo thumbnail. */
                        public thumbnail: (google.ads.googleads.v23.enums.VideoThumbnailEnum.VideoThumbnail|keyof typeof google.ads.googleads.v23.enums.VideoThumbnailEnum.VideoThumbnail);

                        /**
                         * Creates a new InFeedVideoAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InFeedVideoAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IInFeedVideoAdInfo): google.ads.googleads.v23.common.InFeedVideoAdInfo;

                        /**
                         * Encodes the specified InFeedVideoAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.InFeedVideoAdInfo.verify|verify} messages.
                         * @param message InFeedVideoAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IInFeedVideoAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InFeedVideoAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.InFeedVideoAdInfo.verify|verify} messages.
                         * @param message InFeedVideoAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IInFeedVideoAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a YouTubeAudioAdInfo. */
                    interface IYouTubeAudioAdInfo {
                    }

                    /** Represents a YouTubeAudioAdInfo. */
                    class YouTubeAudioAdInfo implements IYouTubeAudioAdInfo {

                        /**
                         * Constructs a new YouTubeAudioAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYouTubeAudioAdInfo);

                        /**
                         * Creates a new YouTubeAudioAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeAudioAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYouTubeAudioAdInfo): google.ads.googleads.v23.common.YouTubeAudioAdInfo;

                        /**
                         * Encodes the specified YouTubeAudioAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeAudioAdInfo.verify|verify} messages.
                         * @param message YouTubeAudioAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYouTubeAudioAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeAudioAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeAudioAdInfo.verify|verify} messages.
                         * @param message YouTubeAudioAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYouTubeAudioAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a VideoAdInfo. */
                    interface IVideoAdInfo {

                        /** VideoAdInfo video */
                        video?: (google.ads.googleads.v23.common.IAdVideoAsset|null);

                        /** VideoAdInfo in_stream */
                        in_stream?: (google.ads.googleads.v23.common.IVideoTrueViewInStreamAdInfo|null);

                        /** VideoAdInfo bumper */
                        bumper?: (google.ads.googleads.v23.common.IVideoBumperInStreamAdInfo|null);

                        /** VideoAdInfo out_stream */
                        out_stream?: (google.ads.googleads.v23.common.IVideoOutstreamAdInfo|null);

                        /** VideoAdInfo non_skippable */
                        non_skippable?: (google.ads.googleads.v23.common.IVideoNonSkippableInStreamAdInfo|null);

                        /** VideoAdInfo in_feed */
                        in_feed?: (google.ads.googleads.v23.common.IInFeedVideoAdInfo|null);

                        /** VideoAdInfo audio */
                        audio?: (google.ads.googleads.v23.common.IYouTubeAudioAdInfo|null);
                    }

                    /** Represents a VideoAdInfo. */
                    class VideoAdInfo implements IVideoAdInfo {

                        /**
                         * Constructs a new VideoAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVideoAdInfo);

                        /** VideoAdInfo video. */
                        public video?: (google.ads.googleads.v23.common.IAdVideoAsset|null);

                        /** VideoAdInfo in_stream. */
                        public in_stream?: (google.ads.googleads.v23.common.IVideoTrueViewInStreamAdInfo|null);

                        /** VideoAdInfo bumper. */
                        public bumper?: (google.ads.googleads.v23.common.IVideoBumperInStreamAdInfo|null);

                        /** VideoAdInfo out_stream. */
                        public out_stream?: (google.ads.googleads.v23.common.IVideoOutstreamAdInfo|null);

                        /** VideoAdInfo non_skippable. */
                        public non_skippable?: (google.ads.googleads.v23.common.IVideoNonSkippableInStreamAdInfo|null);

                        /** VideoAdInfo in_feed. */
                        public in_feed?: (google.ads.googleads.v23.common.IInFeedVideoAdInfo|null);

                        /** VideoAdInfo audio. */
                        public audio?: (google.ads.googleads.v23.common.IYouTubeAudioAdInfo|null);

                        /** VideoAdInfo format. */
                        public format?: ("in_stream"|"bumper"|"out_stream"|"non_skippable"|"in_feed"|"audio");

                        /**
                         * Creates a new VideoAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVideoAdInfo): google.ads.googleads.v23.common.VideoAdInfo;

                        /**
                         * Encodes the specified VideoAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VideoAdInfo.verify|verify} messages.
                         * @param message VideoAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVideoAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VideoAdInfo.verify|verify} messages.
                         * @param message VideoAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVideoAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a VideoResponsiveAdInfo. */
                    interface IVideoResponsiveAdInfo {

                        /** VideoResponsiveAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** VideoResponsiveAdInfo long_headlines */
                        long_headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** VideoResponsiveAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** VideoResponsiveAdInfo call_to_actions */
                        call_to_actions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** VideoResponsiveAdInfo videos */
                        videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);

                        /** VideoResponsiveAdInfo business_name */
                        business_name?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** VideoResponsiveAdInfo logo_images */
                        logo_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** VideoResponsiveAdInfo companion_banners */
                        companion_banners?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** VideoResponsiveAdInfo breadcrumb1 */
                        breadcrumb1?: (string|null);

                        /** VideoResponsiveAdInfo breadcrumb2 */
                        breadcrumb2?: (string|null);
                    }

                    /** Represents a VideoResponsiveAdInfo. */
                    class VideoResponsiveAdInfo implements IVideoResponsiveAdInfo {

                        /**
                         * Constructs a new VideoResponsiveAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVideoResponsiveAdInfo);

                        /** VideoResponsiveAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** VideoResponsiveAdInfo long_headlines. */
                        public long_headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** VideoResponsiveAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** VideoResponsiveAdInfo call_to_actions. */
                        public call_to_actions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** VideoResponsiveAdInfo videos. */
                        public videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /** VideoResponsiveAdInfo business_name. */
                        public business_name?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** VideoResponsiveAdInfo logo_images. */
                        public logo_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** VideoResponsiveAdInfo companion_banners. */
                        public companion_banners: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** VideoResponsiveAdInfo breadcrumb1. */
                        public breadcrumb1: string;

                        /** VideoResponsiveAdInfo breadcrumb2. */
                        public breadcrumb2: string;

                        /**
                         * Creates a new VideoResponsiveAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoResponsiveAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVideoResponsiveAdInfo): google.ads.googleads.v23.common.VideoResponsiveAdInfo;

                        /**
                         * Encodes the specified VideoResponsiveAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VideoResponsiveAdInfo.verify|verify} messages.
                         * @param message VideoResponsiveAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVideoResponsiveAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoResponsiveAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VideoResponsiveAdInfo.verify|verify} messages.
                         * @param message VideoResponsiveAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVideoResponsiveAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ResponsiveSearchAdInfo. */
                    interface IResponsiveSearchAdInfo {

                        /** ResponsiveSearchAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** ResponsiveSearchAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** ResponsiveSearchAdInfo path1 */
                        path1?: (string|null);

                        /** ResponsiveSearchAdInfo path2 */
                        path2?: (string|null);
                    }

                    /** Represents a ResponsiveSearchAdInfo. */
                    class ResponsiveSearchAdInfo implements IResponsiveSearchAdInfo {

                        /**
                         * Constructs a new ResponsiveSearchAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IResponsiveSearchAdInfo);

                        /** ResponsiveSearchAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** ResponsiveSearchAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** ResponsiveSearchAdInfo path1. */
                        public path1?: (string|null);

                        /** ResponsiveSearchAdInfo path2. */
                        public path2?: (string|null);

                        /**
                         * Creates a new ResponsiveSearchAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResponsiveSearchAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IResponsiveSearchAdInfo): google.ads.googleads.v23.common.ResponsiveSearchAdInfo;

                        /**
                         * Encodes the specified ResponsiveSearchAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ResponsiveSearchAdInfo.verify|verify} messages.
                         * @param message ResponsiveSearchAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IResponsiveSearchAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResponsiveSearchAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ResponsiveSearchAdInfo.verify|verify} messages.
                         * @param message ResponsiveSearchAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IResponsiveSearchAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LegacyResponsiveDisplayAdInfo. */
                    interface ILegacyResponsiveDisplayAdInfo {

                        /** LegacyResponsiveDisplayAdInfo short_headline */
                        short_headline?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo long_headline */
                        long_headline?: (string|null);

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

                        /** LegacyResponsiveDisplayAdInfo business_name */
                        business_name?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo allow_flexible_color */
                        allow_flexible_color?: (boolean|null);

                        /** LegacyResponsiveDisplayAdInfo accent_color */
                        accent_color?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo main_color */
                        main_color?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo call_to_action_text */
                        call_to_action_text?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo logo_image */
                        logo_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo square_logo_image */
                        square_logo_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo marketing_image */
                        marketing_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo square_marketing_image */
                        square_marketing_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo format_setting */
                        format_setting?: (google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|null);

                        /** LegacyResponsiveDisplayAdInfo price_prefix */
                        price_prefix?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo promo_text */
                        promo_text?: (string|null);
                    }

                    /** Represents a LegacyResponsiveDisplayAdInfo. */
                    class LegacyResponsiveDisplayAdInfo implements ILegacyResponsiveDisplayAdInfo {

                        /**
                         * Constructs a new LegacyResponsiveDisplayAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILegacyResponsiveDisplayAdInfo);

                        /** LegacyResponsiveDisplayAdInfo short_headline. */
                        public short_headline?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo long_headline. */
                        public long_headline?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo description. */
                        public description?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo business_name. */
                        public business_name?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo allow_flexible_color. */
                        public allow_flexible_color?: (boolean|null);

                        /** LegacyResponsiveDisplayAdInfo accent_color. */
                        public accent_color?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo main_color. */
                        public main_color?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo call_to_action_text. */
                        public call_to_action_text?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo logo_image. */
                        public logo_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo square_logo_image. */
                        public square_logo_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo marketing_image. */
                        public marketing_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo square_marketing_image. */
                        public square_marketing_image?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo format_setting. */
                        public format_setting: (google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting);

                        /** LegacyResponsiveDisplayAdInfo price_prefix. */
                        public price_prefix?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo promo_text. */
                        public promo_text?: (string|null);

                        /**
                         * Creates a new LegacyResponsiveDisplayAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LegacyResponsiveDisplayAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILegacyResponsiveDisplayAdInfo): google.ads.googleads.v23.common.LegacyResponsiveDisplayAdInfo;

                        /**
                         * Encodes the specified LegacyResponsiveDisplayAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LegacyResponsiveDisplayAdInfo.verify|verify} messages.
                         * @param message LegacyResponsiveDisplayAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILegacyResponsiveDisplayAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LegacyResponsiveDisplayAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LegacyResponsiveDisplayAdInfo.verify|verify} messages.
                         * @param message LegacyResponsiveDisplayAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILegacyResponsiveDisplayAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of an AppAdInfo. */
                    interface IAppAdInfo {

                        /** AppAdInfo mandatory_ad_text */
                        mandatory_ad_text?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** AppAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** AppAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** AppAdInfo images */
                        images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** AppAdInfo youtube_videos */
                        youtube_videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);

                        /** AppAdInfo html5_media_bundles */
                        html5_media_bundles?: (google.ads.googleads.v23.common.IAdMediaBundleAsset[]|null);

                        /** AppAdInfo app_deep_link */
                        app_deep_link?: (google.ads.googleads.v23.common.IAdAppDeepLinkAsset|null);
                    }

                    /** Represents an AppAdInfo. */
                    class AppAdInfo implements IAppAdInfo {

                        /**
                         * Constructs a new AppAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAppAdInfo);

                        /** AppAdInfo mandatory_ad_text. */
                        public mandatory_ad_text?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** AppAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** AppAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** AppAdInfo images. */
                        public images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** AppAdInfo youtube_videos. */
                        public youtube_videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /** AppAdInfo html5_media_bundles. */
                        public html5_media_bundles: google.ads.googleads.v23.common.IAdMediaBundleAsset[];

                        /** AppAdInfo app_deep_link. */
                        public app_deep_link?: (google.ads.googleads.v23.common.IAdAppDeepLinkAsset|null);

                        /**
                         * Creates a new AppAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAppAdInfo): google.ads.googleads.v23.common.AppAdInfo;

                        /**
                         * Encodes the specified AppAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AppAdInfo.verify|verify} messages.
                         * @param message AppAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAppAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AppAdInfo.verify|verify} messages.
                         * @param message AppAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAppAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AppEngagementAdInfo. */
                    interface IAppEngagementAdInfo {

                        /** AppEngagementAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** AppEngagementAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** AppEngagementAdInfo images */
                        images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** AppEngagementAdInfo videos */
                        videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);
                    }

                    /** Represents an AppEngagementAdInfo. */
                    class AppEngagementAdInfo implements IAppEngagementAdInfo {

                        /**
                         * Constructs a new AppEngagementAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAppEngagementAdInfo);

                        /** AppEngagementAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** AppEngagementAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** AppEngagementAdInfo images. */
                        public images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** AppEngagementAdInfo videos. */
                        public videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /**
                         * Creates a new AppEngagementAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppEngagementAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAppEngagementAdInfo): google.ads.googleads.v23.common.AppEngagementAdInfo;

                        /**
                         * Encodes the specified AppEngagementAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AppEngagementAdInfo.verify|verify} messages.
                         * @param message AppEngagementAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAppEngagementAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppEngagementAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AppEngagementAdInfo.verify|verify} messages.
                         * @param message AppEngagementAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAppEngagementAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an AppPreRegistrationAdInfo. */
                    interface IAppPreRegistrationAdInfo {

                        /** AppPreRegistrationAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** AppPreRegistrationAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** AppPreRegistrationAdInfo images */
                        images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** AppPreRegistrationAdInfo youtube_videos */
                        youtube_videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);
                    }

                    /** Represents an AppPreRegistrationAdInfo. */
                    class AppPreRegistrationAdInfo implements IAppPreRegistrationAdInfo {

                        /**
                         * Constructs a new AppPreRegistrationAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAppPreRegistrationAdInfo);

                        /** AppPreRegistrationAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** AppPreRegistrationAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** AppPreRegistrationAdInfo images. */
                        public images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** AppPreRegistrationAdInfo youtube_videos. */
                        public youtube_videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /**
                         * Creates a new AppPreRegistrationAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppPreRegistrationAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAppPreRegistrationAdInfo): google.ads.googleads.v23.common.AppPreRegistrationAdInfo;

                        /**
                         * Encodes the specified AppPreRegistrationAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AppPreRegistrationAdInfo.verify|verify} messages.
                         * @param message AppPreRegistrationAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAppPreRegistrationAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppPreRegistrationAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AppPreRegistrationAdInfo.verify|verify} messages.
                         * @param message AppPreRegistrationAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAppPreRegistrationAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a LegacyAppInstallAdInfo. */
                    interface ILegacyAppInstallAdInfo {

                        /** LegacyAppInstallAdInfo app_id */
                        app_id?: (string|null);

                        /** LegacyAppInstallAdInfo app_store */
                        app_store?: (google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum.LegacyAppInstallAdAppStore|keyof typeof google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum.LegacyAppInstallAdAppStore|null);

                        /** LegacyAppInstallAdInfo headline */
                        headline?: (string|null);

                        /** LegacyAppInstallAdInfo description1 */
                        description1?: (string|null);

                        /** LegacyAppInstallAdInfo description2 */
                        description2?: (string|null);
                    }

                    /** Represents a LegacyAppInstallAdInfo. */
                    class LegacyAppInstallAdInfo implements ILegacyAppInstallAdInfo {

                        /**
                         * Constructs a new LegacyAppInstallAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILegacyAppInstallAdInfo);

                        /** LegacyAppInstallAdInfo app_id. */
                        public app_id?: (string|null);

                        /** LegacyAppInstallAdInfo app_store. */
                        public app_store: (google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum.LegacyAppInstallAdAppStore|keyof typeof google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum.LegacyAppInstallAdAppStore);

                        /** LegacyAppInstallAdInfo headline. */
                        public headline?: (string|null);

                        /** LegacyAppInstallAdInfo description1. */
                        public description1?: (string|null);

                        /** LegacyAppInstallAdInfo description2. */
                        public description2?: (string|null);

                        /**
                         * Creates a new LegacyAppInstallAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LegacyAppInstallAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILegacyAppInstallAdInfo): google.ads.googleads.v23.common.LegacyAppInstallAdInfo;

                        /**
                         * Encodes the specified LegacyAppInstallAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LegacyAppInstallAdInfo.verify|verify} messages.
                         * @param message LegacyAppInstallAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILegacyAppInstallAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LegacyAppInstallAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LegacyAppInstallAdInfo.verify|verify} messages.
                         * @param message LegacyAppInstallAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILegacyAppInstallAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ResponsiveDisplayAdInfo. */
                    interface IResponsiveDisplayAdInfo {

                        /** ResponsiveDisplayAdInfo marketing_images */
                        marketing_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** ResponsiveDisplayAdInfo square_marketing_images */
                        square_marketing_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** ResponsiveDisplayAdInfo logo_images */
                        logo_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** ResponsiveDisplayAdInfo square_logo_images */
                        square_logo_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** ResponsiveDisplayAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** ResponsiveDisplayAdInfo long_headline */
                        long_headline?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** ResponsiveDisplayAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** ResponsiveDisplayAdInfo youtube_videos */
                        youtube_videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);

                        /** ResponsiveDisplayAdInfo business_name */
                        business_name?: (string|null);

                        /** ResponsiveDisplayAdInfo main_color */
                        main_color?: (string|null);

                        /** ResponsiveDisplayAdInfo accent_color */
                        accent_color?: (string|null);

                        /** ResponsiveDisplayAdInfo allow_flexible_color */
                        allow_flexible_color?: (boolean|null);

                        /** ResponsiveDisplayAdInfo call_to_action_text */
                        call_to_action_text?: (string|null);

                        /** ResponsiveDisplayAdInfo price_prefix */
                        price_prefix?: (string|null);

                        /** ResponsiveDisplayAdInfo promo_text */
                        promo_text?: (string|null);

                        /** ResponsiveDisplayAdInfo format_setting */
                        format_setting?: (google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|null);

                        /** ResponsiveDisplayAdInfo control_spec */
                        control_spec?: (google.ads.googleads.v23.common.IResponsiveDisplayAdControlSpec|null);
                    }

                    /** Represents a ResponsiveDisplayAdInfo. */
                    class ResponsiveDisplayAdInfo implements IResponsiveDisplayAdInfo {

                        /**
                         * Constructs a new ResponsiveDisplayAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IResponsiveDisplayAdInfo);

                        /** ResponsiveDisplayAdInfo marketing_images. */
                        public marketing_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo square_marketing_images. */
                        public square_marketing_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo logo_images. */
                        public logo_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo square_logo_images. */
                        public square_logo_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** ResponsiveDisplayAdInfo long_headline. */
                        public long_headline?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** ResponsiveDisplayAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** ResponsiveDisplayAdInfo youtube_videos. */
                        public youtube_videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /** ResponsiveDisplayAdInfo business_name. */
                        public business_name?: (string|null);

                        /** ResponsiveDisplayAdInfo main_color. */
                        public main_color?: (string|null);

                        /** ResponsiveDisplayAdInfo accent_color. */
                        public accent_color?: (string|null);

                        /** ResponsiveDisplayAdInfo allow_flexible_color. */
                        public allow_flexible_color?: (boolean|null);

                        /** ResponsiveDisplayAdInfo call_to_action_text. */
                        public call_to_action_text?: (string|null);

                        /** ResponsiveDisplayAdInfo price_prefix. */
                        public price_prefix?: (string|null);

                        /** ResponsiveDisplayAdInfo promo_text. */
                        public promo_text?: (string|null);

                        /** ResponsiveDisplayAdInfo format_setting. */
                        public format_setting: (google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting);

                        /** ResponsiveDisplayAdInfo control_spec. */
                        public control_spec?: (google.ads.googleads.v23.common.IResponsiveDisplayAdControlSpec|null);

                        /**
                         * Creates a new ResponsiveDisplayAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResponsiveDisplayAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IResponsiveDisplayAdInfo): google.ads.googleads.v23.common.ResponsiveDisplayAdInfo;

                        /**
                         * Encodes the specified ResponsiveDisplayAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ResponsiveDisplayAdInfo.verify|verify} messages.
                         * @param message ResponsiveDisplayAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IResponsiveDisplayAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResponsiveDisplayAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ResponsiveDisplayAdInfo.verify|verify} messages.
                         * @param message ResponsiveDisplayAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IResponsiveDisplayAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LocalAdInfo. */
                    interface ILocalAdInfo {

                        /** LocalAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** LocalAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** LocalAdInfo call_to_actions */
                        call_to_actions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** LocalAdInfo marketing_images */
                        marketing_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** LocalAdInfo logo_images */
                        logo_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** LocalAdInfo videos */
                        videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);

                        /** LocalAdInfo path1 */
                        path1?: (string|null);

                        /** LocalAdInfo path2 */
                        path2?: (string|null);
                    }

                    /** Represents a LocalAdInfo. */
                    class LocalAdInfo implements ILocalAdInfo {

                        /**
                         * Constructs a new LocalAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocalAdInfo);

                        /** LocalAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** LocalAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** LocalAdInfo call_to_actions. */
                        public call_to_actions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** LocalAdInfo marketing_images. */
                        public marketing_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** LocalAdInfo logo_images. */
                        public logo_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** LocalAdInfo videos. */
                        public videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /** LocalAdInfo path1. */
                        public path1?: (string|null);

                        /** LocalAdInfo path2. */
                        public path2?: (string|null);

                        /**
                         * Creates a new LocalAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocalAdInfo): google.ads.googleads.v23.common.LocalAdInfo;

                        /**
                         * Encodes the specified LocalAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LocalAdInfo.verify|verify} messages.
                         * @param message LocalAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocalAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocalAdInfo.verify|verify} messages.
                         * @param message LocalAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocalAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DisplayUploadAdInfo. */
                    interface IDisplayUploadAdInfo {

                        /** DisplayUploadAdInfo display_upload_product_type */
                        display_upload_product_type?: (google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType|keyof typeof google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType|null);

                        /** DisplayUploadAdInfo media_bundle */
                        media_bundle?: (google.ads.googleads.v23.common.IAdMediaBundleAsset|null);
                    }

                    /** Represents a DisplayUploadAdInfo. */
                    class DisplayUploadAdInfo implements IDisplayUploadAdInfo {

                        /**
                         * Constructs a new DisplayUploadAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDisplayUploadAdInfo);

                        /** DisplayUploadAdInfo display_upload_product_type. */
                        public display_upload_product_type: (google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType|keyof typeof google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType);

                        /** DisplayUploadAdInfo media_bundle. */
                        public media_bundle?: (google.ads.googleads.v23.common.IAdMediaBundleAsset|null);

                        /** DisplayUploadAdInfo media_asset. */
                        public media_asset?: "media_bundle";

                        /**
                         * Creates a new DisplayUploadAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DisplayUploadAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDisplayUploadAdInfo): google.ads.googleads.v23.common.DisplayUploadAdInfo;

                        /**
                         * Encodes the specified DisplayUploadAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.DisplayUploadAdInfo.verify|verify} messages.
                         * @param message DisplayUploadAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDisplayUploadAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DisplayUploadAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DisplayUploadAdInfo.verify|verify} messages.
                         * @param message DisplayUploadAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDisplayUploadAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ResponsiveDisplayAdControlSpec. */
                    interface IResponsiveDisplayAdControlSpec {

                        /** ResponsiveDisplayAdControlSpec enable_asset_enhancements */
                        enable_asset_enhancements?: (boolean|null);

                        /** ResponsiveDisplayAdControlSpec enable_autogen_video */
                        enable_autogen_video?: (boolean|null);
                    }

                    /** Represents a ResponsiveDisplayAdControlSpec. */
                    class ResponsiveDisplayAdControlSpec implements IResponsiveDisplayAdControlSpec {

                        /**
                         * Constructs a new ResponsiveDisplayAdControlSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IResponsiveDisplayAdControlSpec);

                        /** ResponsiveDisplayAdControlSpec enable_asset_enhancements. */
                        public enable_asset_enhancements: boolean;

                        /** ResponsiveDisplayAdControlSpec enable_autogen_video. */
                        public enable_autogen_video: boolean;

                        /**
                         * Creates a new ResponsiveDisplayAdControlSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResponsiveDisplayAdControlSpec instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IResponsiveDisplayAdControlSpec): google.ads.googleads.v23.common.ResponsiveDisplayAdControlSpec;

                        /**
                         * Encodes the specified ResponsiveDisplayAdControlSpec message. Does not implicitly {@link google.ads.googleads.v23.common.ResponsiveDisplayAdControlSpec.verify|verify} messages.
                         * @param message ResponsiveDisplayAdControlSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IResponsiveDisplayAdControlSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResponsiveDisplayAdControlSpec message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ResponsiveDisplayAdControlSpec.verify|verify} messages.
                         * @param message ResponsiveDisplayAdControlSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IResponsiveDisplayAdControlSpec, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a SmartCampaignAdInfo. */
                    interface ISmartCampaignAdInfo {

                        /** SmartCampaignAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** SmartCampaignAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);
                    }

                    /** Represents a SmartCampaignAdInfo. */
                    class SmartCampaignAdInfo implements ISmartCampaignAdInfo {

                        /**
                         * Constructs a new SmartCampaignAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISmartCampaignAdInfo);

                        /** SmartCampaignAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** SmartCampaignAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /**
                         * Creates a new SmartCampaignAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISmartCampaignAdInfo): google.ads.googleads.v23.common.SmartCampaignAdInfo;

                        /**
                         * Encodes the specified SmartCampaignAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.SmartCampaignAdInfo.verify|verify} messages.
                         * @param message SmartCampaignAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISmartCampaignAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.SmartCampaignAdInfo.verify|verify} messages.
                         * @param message SmartCampaignAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISmartCampaignAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DemandGenMultiAssetAdInfo. */
                    interface IDemandGenMultiAssetAdInfo {

                        /** DemandGenMultiAssetAdInfo marketing_images */
                        marketing_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** DemandGenMultiAssetAdInfo square_marketing_images */
                        square_marketing_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** DemandGenMultiAssetAdInfo portrait_marketing_images */
                        portrait_marketing_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** DemandGenMultiAssetAdInfo tall_portrait_marketing_images */
                        tall_portrait_marketing_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** DemandGenMultiAssetAdInfo logo_images */
                        logo_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** DemandGenMultiAssetAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** DemandGenMultiAssetAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** DemandGenMultiAssetAdInfo business_name */
                        business_name?: (string|null);

                        /** DemandGenMultiAssetAdInfo call_to_action_text */
                        call_to_action_text?: (string|null);
                    }

                    /** Represents a DemandGenMultiAssetAdInfo. */
                    class DemandGenMultiAssetAdInfo implements IDemandGenMultiAssetAdInfo {

                        /**
                         * Constructs a new DemandGenMultiAssetAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDemandGenMultiAssetAdInfo);

                        /** DemandGenMultiAssetAdInfo marketing_images. */
                        public marketing_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** DemandGenMultiAssetAdInfo square_marketing_images. */
                        public square_marketing_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** DemandGenMultiAssetAdInfo portrait_marketing_images. */
                        public portrait_marketing_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** DemandGenMultiAssetAdInfo tall_portrait_marketing_images. */
                        public tall_portrait_marketing_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** DemandGenMultiAssetAdInfo logo_images. */
                        public logo_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** DemandGenMultiAssetAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** DemandGenMultiAssetAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** DemandGenMultiAssetAdInfo business_name. */
                        public business_name?: (string|null);

                        /** DemandGenMultiAssetAdInfo call_to_action_text. */
                        public call_to_action_text?: (string|null);

                        /**
                         * Creates a new DemandGenMultiAssetAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DemandGenMultiAssetAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDemandGenMultiAssetAdInfo): google.ads.googleads.v23.common.DemandGenMultiAssetAdInfo;

                        /**
                         * Encodes the specified DemandGenMultiAssetAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenMultiAssetAdInfo.verify|verify} messages.
                         * @param message DemandGenMultiAssetAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDemandGenMultiAssetAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DemandGenMultiAssetAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenMultiAssetAdInfo.verify|verify} messages.
                         * @param message DemandGenMultiAssetAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDemandGenMultiAssetAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DemandGenCarouselAdInfo. */
                    interface IDemandGenCarouselAdInfo {

                        /** DemandGenCarouselAdInfo business_name */
                        business_name?: (string|null);

                        /** DemandGenCarouselAdInfo logo_image */
                        logo_image?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** DemandGenCarouselAdInfo headline */
                        headline?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenCarouselAdInfo description */
                        description?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenCarouselAdInfo call_to_action_text */
                        call_to_action_text?: (string|null);

                        /** DemandGenCarouselAdInfo carousel_cards */
                        carousel_cards?: (google.ads.googleads.v23.common.IAdDemandGenCarouselCardAsset[]|null);
                    }

                    /** Represents a DemandGenCarouselAdInfo. */
                    class DemandGenCarouselAdInfo implements IDemandGenCarouselAdInfo {

                        /**
                         * Constructs a new DemandGenCarouselAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDemandGenCarouselAdInfo);

                        /** DemandGenCarouselAdInfo business_name. */
                        public business_name: string;

                        /** DemandGenCarouselAdInfo logo_image. */
                        public logo_image?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** DemandGenCarouselAdInfo headline. */
                        public headline?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenCarouselAdInfo description. */
                        public description?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenCarouselAdInfo call_to_action_text. */
                        public call_to_action_text: string;

                        /** DemandGenCarouselAdInfo carousel_cards. */
                        public carousel_cards: google.ads.googleads.v23.common.IAdDemandGenCarouselCardAsset[];

                        /**
                         * Creates a new DemandGenCarouselAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DemandGenCarouselAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDemandGenCarouselAdInfo): google.ads.googleads.v23.common.DemandGenCarouselAdInfo;

                        /**
                         * Encodes the specified DemandGenCarouselAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenCarouselAdInfo.verify|verify} messages.
                         * @param message DemandGenCarouselAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDemandGenCarouselAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DemandGenCarouselAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenCarouselAdInfo.verify|verify} messages.
                         * @param message DemandGenCarouselAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDemandGenCarouselAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DemandGenVideoResponsiveAdInfo. */
                    interface IDemandGenVideoResponsiveAdInfo {

                        /** DemandGenVideoResponsiveAdInfo headlines */
                        headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** DemandGenVideoResponsiveAdInfo long_headlines */
                        long_headlines?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** DemandGenVideoResponsiveAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v23.common.IAdTextAsset[]|null);

                        /** DemandGenVideoResponsiveAdInfo videos */
                        videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);

                        /** DemandGenVideoResponsiveAdInfo logo_images */
                        logo_images?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** DemandGenVideoResponsiveAdInfo companion_banners */
                        companion_banners?: (google.ads.googleads.v23.common.IAdImageAsset[]|null);

                        /** DemandGenVideoResponsiveAdInfo breadcrumb1 */
                        breadcrumb1?: (string|null);

                        /** DemandGenVideoResponsiveAdInfo breadcrumb2 */
                        breadcrumb2?: (string|null);

                        /** DemandGenVideoResponsiveAdInfo business_name */
                        business_name?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenVideoResponsiveAdInfo call_to_actions */
                        call_to_actions?: (google.ads.googleads.v23.common.IAdCallToActionAsset[]|null);
                    }

                    /** Represents a DemandGenVideoResponsiveAdInfo. */
                    class DemandGenVideoResponsiveAdInfo implements IDemandGenVideoResponsiveAdInfo {

                        /**
                         * Constructs a new DemandGenVideoResponsiveAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDemandGenVideoResponsiveAdInfo);

                        /** DemandGenVideoResponsiveAdInfo headlines. */
                        public headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** DemandGenVideoResponsiveAdInfo long_headlines. */
                        public long_headlines: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** DemandGenVideoResponsiveAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v23.common.IAdTextAsset[];

                        /** DemandGenVideoResponsiveAdInfo videos. */
                        public videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /** DemandGenVideoResponsiveAdInfo logo_images. */
                        public logo_images: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** DemandGenVideoResponsiveAdInfo companion_banners. */
                        public companion_banners: google.ads.googleads.v23.common.IAdImageAsset[];

                        /** DemandGenVideoResponsiveAdInfo breadcrumb1. */
                        public breadcrumb1: string;

                        /** DemandGenVideoResponsiveAdInfo breadcrumb2. */
                        public breadcrumb2: string;

                        /** DemandGenVideoResponsiveAdInfo business_name. */
                        public business_name?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenVideoResponsiveAdInfo call_to_actions. */
                        public call_to_actions: google.ads.googleads.v23.common.IAdCallToActionAsset[];

                        /**
                         * Creates a new DemandGenVideoResponsiveAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DemandGenVideoResponsiveAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDemandGenVideoResponsiveAdInfo): google.ads.googleads.v23.common.DemandGenVideoResponsiveAdInfo;

                        /**
                         * Encodes the specified DemandGenVideoResponsiveAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenVideoResponsiveAdInfo.verify|verify} messages.
                         * @param message DemandGenVideoResponsiveAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDemandGenVideoResponsiveAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DemandGenVideoResponsiveAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenVideoResponsiveAdInfo.verify|verify} messages.
                         * @param message DemandGenVideoResponsiveAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDemandGenVideoResponsiveAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DemandGenProductAdInfo. */
                    interface IDemandGenProductAdInfo {

                        /** DemandGenProductAdInfo headline */
                        headline?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenProductAdInfo description */
                        description?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenProductAdInfo logo_image */
                        logo_image?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** DemandGenProductAdInfo breadcrumb1 */
                        breadcrumb1?: (string|null);

                        /** DemandGenProductAdInfo breadcrumb2 */
                        breadcrumb2?: (string|null);

                        /** DemandGenProductAdInfo business_name */
                        business_name?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenProductAdInfo call_to_action */
                        call_to_action?: (google.ads.googleads.v23.common.IAdCallToActionAsset|null);
                    }

                    /** Represents a DemandGenProductAdInfo. */
                    class DemandGenProductAdInfo implements IDemandGenProductAdInfo {

                        /**
                         * Constructs a new DemandGenProductAdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDemandGenProductAdInfo);

                        /** DemandGenProductAdInfo headline. */
                        public headline?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenProductAdInfo description. */
                        public description?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenProductAdInfo logo_image. */
                        public logo_image?: (google.ads.googleads.v23.common.IAdImageAsset|null);

                        /** DemandGenProductAdInfo breadcrumb1. */
                        public breadcrumb1: string;

                        /** DemandGenProductAdInfo breadcrumb2. */
                        public breadcrumb2: string;

                        /** DemandGenProductAdInfo business_name. */
                        public business_name?: (google.ads.googleads.v23.common.IAdTextAsset|null);

                        /** DemandGenProductAdInfo call_to_action. */
                        public call_to_action?: (google.ads.googleads.v23.common.IAdCallToActionAsset|null);

                        /**
                         * Creates a new DemandGenProductAdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DemandGenProductAdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDemandGenProductAdInfo): google.ads.googleads.v23.common.DemandGenProductAdInfo;

                        /**
                         * Encodes the specified DemandGenProductAdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenProductAdInfo.verify|verify} messages.
                         * @param message DemandGenProductAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDemandGenProductAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DemandGenProductAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenProductAdInfo.verify|verify} messages.
                         * @param message DemandGenProductAdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDemandGenProductAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of an AdditionalApplicationInfo. */
                    interface IAdditionalApplicationInfo {

                        /** AdditionalApplicationInfo application_id */
                        application_id?: (string|null);

                        /** AdditionalApplicationInfo application_instance */
                        application_instance?: (google.ads.googleads.v23.enums.ApplicationInstanceEnum.ApplicationInstance|keyof typeof google.ads.googleads.v23.enums.ApplicationInstanceEnum.ApplicationInstance|null);
                    }

                    /** Represents an AdditionalApplicationInfo. */
                    class AdditionalApplicationInfo implements IAdditionalApplicationInfo {

                        /**
                         * Constructs a new AdditionalApplicationInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdditionalApplicationInfo);

                        /** AdditionalApplicationInfo application_id. */
                        public application_id: string;

                        /** AdditionalApplicationInfo application_instance. */
                        public application_instance: (google.ads.googleads.v23.enums.ApplicationInstanceEnum.ApplicationInstance|keyof typeof google.ads.googleads.v23.enums.ApplicationInstanceEnum.ApplicationInstance);

                        /**
                         * Creates a new AdditionalApplicationInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdditionalApplicationInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdditionalApplicationInfo): google.ads.googleads.v23.common.AdditionalApplicationInfo;

                        /**
                         * Encodes the specified AdditionalApplicationInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AdditionalApplicationInfo.verify|verify} messages.
                         * @param message AdditionalApplicationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdditionalApplicationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdditionalApplicationInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdditionalApplicationInfo.verify|verify} messages.
                         * @param message AdditionalApplicationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdditionalApplicationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a LocationSet. */
                    interface ILocationSet {

                        /** LocationSet location_ownership_type */
                        location_ownership_type?: (google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType|keyof typeof google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType|null);

                        /** LocationSet business_profile_location_set */
                        business_profile_location_set?: (google.ads.googleads.v23.common.IBusinessProfileLocationSet|null);

                        /** LocationSet chain_location_set */
                        chain_location_set?: (google.ads.googleads.v23.common.IChainSet|null);

                        /** LocationSet maps_location_set */
                        maps_location_set?: (google.ads.googleads.v23.common.IMapsLocationSet|null);
                    }

                    /** Represents a LocationSet. */
                    class LocationSet implements ILocationSet {

                        /**
                         * Constructs a new LocationSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocationSet);

                        /** LocationSet location_ownership_type. */
                        public location_ownership_type: (google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType|keyof typeof google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType);

                        /** LocationSet business_profile_location_set. */
                        public business_profile_location_set?: (google.ads.googleads.v23.common.IBusinessProfileLocationSet|null);

                        /** LocationSet chain_location_set. */
                        public chain_location_set?: (google.ads.googleads.v23.common.IChainSet|null);

                        /** LocationSet maps_location_set. */
                        public maps_location_set?: (google.ads.googleads.v23.common.IMapsLocationSet|null);

                        /** LocationSet source. */
                        public source?: ("business_profile_location_set"|"chain_location_set"|"maps_location_set");

                        /**
                         * Creates a new LocationSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocationSet): google.ads.googleads.v23.common.LocationSet;

                        /**
                         * Encodes the specified LocationSet message. Does not implicitly {@link google.ads.googleads.v23.common.LocationSet.verify|verify} messages.
                         * @param message LocationSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocationSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocationSet.verify|verify} messages.
                         * @param message LocationSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocationSet, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a BusinessProfileLocationSet. */
                    interface IBusinessProfileLocationSet {

                        /** BusinessProfileLocationSet http_authorization_token */
                        http_authorization_token?: (string|null);

                        /** BusinessProfileLocationSet email_address */
                        email_address?: (string|null);

                        /** BusinessProfileLocationSet business_name_filter */
                        business_name_filter?: (string|null);

                        /** BusinessProfileLocationSet label_filters */
                        label_filters?: (string[]|null);

                        /** BusinessProfileLocationSet listing_id_filters */
                        listing_id_filters?: (number[]|null);

                        /** BusinessProfileLocationSet business_account_id */
                        business_account_id?: (string|null);
                    }

                    /** Represents a BusinessProfileLocationSet. */
                    class BusinessProfileLocationSet implements IBusinessProfileLocationSet {

                        /**
                         * Constructs a new BusinessProfileLocationSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBusinessProfileLocationSet);

                        /** BusinessProfileLocationSet http_authorization_token. */
                        public http_authorization_token: string;

                        /** BusinessProfileLocationSet email_address. */
                        public email_address: string;

                        /** BusinessProfileLocationSet business_name_filter. */
                        public business_name_filter: string;

                        /** BusinessProfileLocationSet label_filters. */
                        public label_filters: string[];

                        /** BusinessProfileLocationSet listing_id_filters. */
                        public listing_id_filters: number[];

                        /** BusinessProfileLocationSet business_account_id. */
                        public business_account_id: string;

                        /**
                         * Creates a new BusinessProfileLocationSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessProfileLocationSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBusinessProfileLocationSet): google.ads.googleads.v23.common.BusinessProfileLocationSet;

                        /**
                         * Encodes the specified BusinessProfileLocationSet message. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileLocationSet.verify|verify} messages.
                         * @param message BusinessProfileLocationSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBusinessProfileLocationSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessProfileLocationSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileLocationSet.verify|verify} messages.
                         * @param message BusinessProfileLocationSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBusinessProfileLocationSet, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ChainSet. */
                    interface IChainSet {

                        /** ChainSet relationship_type */
                        relationship_type?: (google.ads.googleads.v23.enums.ChainRelationshipTypeEnum.ChainRelationshipType|keyof typeof google.ads.googleads.v23.enums.ChainRelationshipTypeEnum.ChainRelationshipType|null);

                        /** ChainSet chains */
                        chains?: (google.ads.googleads.v23.common.IChainFilter[]|null);
                    }

                    /** Represents a ChainSet. */
                    class ChainSet implements IChainSet {

                        /**
                         * Constructs a new ChainSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IChainSet);

                        /** ChainSet relationship_type. */
                        public relationship_type: (google.ads.googleads.v23.enums.ChainRelationshipTypeEnum.ChainRelationshipType|keyof typeof google.ads.googleads.v23.enums.ChainRelationshipTypeEnum.ChainRelationshipType);

                        /** ChainSet chains. */
                        public chains: google.ads.googleads.v23.common.IChainFilter[];

                        /**
                         * Creates a new ChainSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChainSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IChainSet): google.ads.googleads.v23.common.ChainSet;

                        /**
                         * Encodes the specified ChainSet message. Does not implicitly {@link google.ads.googleads.v23.common.ChainSet.verify|verify} messages.
                         * @param message ChainSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IChainSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChainSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ChainSet.verify|verify} messages.
                         * @param message ChainSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IChainSet, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ChainFilter. */
                    interface IChainFilter {

                        /** ChainFilter chain_id */
                        chain_id?: (number|null);

                        /** ChainFilter location_attributes */
                        location_attributes?: (string[]|null);
                    }

                    /** Represents a ChainFilter. */
                    class ChainFilter implements IChainFilter {

                        /**
                         * Constructs a new ChainFilter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IChainFilter);

                        /** ChainFilter chain_id. */
                        public chain_id: number;

                        /** ChainFilter location_attributes. */
                        public location_attributes: string[];

                        /**
                         * Creates a new ChainFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChainFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IChainFilter): google.ads.googleads.v23.common.ChainFilter;

                        /**
                         * Encodes the specified ChainFilter message. Does not implicitly {@link google.ads.googleads.v23.common.ChainFilter.verify|verify} messages.
                         * @param message ChainFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IChainFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChainFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ChainFilter.verify|verify} messages.
                         * @param message ChainFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IChainFilter, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a MapsLocationSet. */
                    interface IMapsLocationSet {

                        /** MapsLocationSet maps_locations */
                        maps_locations?: (google.ads.googleads.v23.common.IMapsLocationInfo[]|null);
                    }

                    /** Represents a MapsLocationSet. */
                    class MapsLocationSet implements IMapsLocationSet {

                        /**
                         * Constructs a new MapsLocationSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMapsLocationSet);

                        /** MapsLocationSet maps_locations. */
                        public maps_locations: google.ads.googleads.v23.common.IMapsLocationInfo[];

                        /**
                         * Creates a new MapsLocationSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MapsLocationSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMapsLocationSet): google.ads.googleads.v23.common.MapsLocationSet;

                        /**
                         * Encodes the specified MapsLocationSet message. Does not implicitly {@link google.ads.googleads.v23.common.MapsLocationSet.verify|verify} messages.
                         * @param message MapsLocationSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMapsLocationSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MapsLocationSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MapsLocationSet.verify|verify} messages.
                         * @param message MapsLocationSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMapsLocationSet, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a MapsLocationInfo. */
                    interface IMapsLocationInfo {

                        /** MapsLocationInfo place_id */
                        place_id?: (string|null);
                    }

                    /** Represents a MapsLocationInfo. */
                    class MapsLocationInfo implements IMapsLocationInfo {

                        /**
                         * Constructs a new MapsLocationInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMapsLocationInfo);

                        /** MapsLocationInfo place_id. */
                        public place_id: string;

                        /**
                         * Creates a new MapsLocationInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MapsLocationInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMapsLocationInfo): google.ads.googleads.v23.common.MapsLocationInfo;

                        /**
                         * Encodes the specified MapsLocationInfo message. Does not implicitly {@link google.ads.googleads.v23.common.MapsLocationInfo.verify|verify} messages.
                         * @param message MapsLocationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMapsLocationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MapsLocationInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MapsLocationInfo.verify|verify} messages.
                         * @param message MapsLocationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMapsLocationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a BusinessProfileLocationGroup. */
                    interface IBusinessProfileLocationGroup {

                        /** BusinessProfileLocationGroup dynamic_business_profile_location_group_filter */
                        dynamic_business_profile_location_group_filter?: (google.ads.googleads.v23.common.IDynamicBusinessProfileLocationGroupFilter|null);
                    }

                    /** Represents a BusinessProfileLocationGroup. */
                    class BusinessProfileLocationGroup implements IBusinessProfileLocationGroup {

                        /**
                         * Constructs a new BusinessProfileLocationGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBusinessProfileLocationGroup);

                        /** BusinessProfileLocationGroup dynamic_business_profile_location_group_filter. */
                        public dynamic_business_profile_location_group_filter?: (google.ads.googleads.v23.common.IDynamicBusinessProfileLocationGroupFilter|null);

                        /**
                         * Creates a new BusinessProfileLocationGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessProfileLocationGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBusinessProfileLocationGroup): google.ads.googleads.v23.common.BusinessProfileLocationGroup;

                        /**
                         * Encodes the specified BusinessProfileLocationGroup message. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileLocationGroup.verify|verify} messages.
                         * @param message BusinessProfileLocationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBusinessProfileLocationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessProfileLocationGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileLocationGroup.verify|verify} messages.
                         * @param message BusinessProfileLocationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBusinessProfileLocationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicBusinessProfileLocationGroupFilter. */
                    interface IDynamicBusinessProfileLocationGroupFilter {

                        /** DynamicBusinessProfileLocationGroupFilter label_filters */
                        label_filters?: (string[]|null);

                        /** DynamicBusinessProfileLocationGroupFilter business_name_filter */
                        business_name_filter?: (google.ads.googleads.v23.common.IBusinessProfileBusinessNameFilter|null);

                        /** DynamicBusinessProfileLocationGroupFilter listing_id_filters */
                        listing_id_filters?: (number[]|null);
                    }

                    /** Represents a DynamicBusinessProfileLocationGroupFilter. */
                    class DynamicBusinessProfileLocationGroupFilter implements IDynamicBusinessProfileLocationGroupFilter {

                        /**
                         * Constructs a new DynamicBusinessProfileLocationGroupFilter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicBusinessProfileLocationGroupFilter);

                        /** DynamicBusinessProfileLocationGroupFilter label_filters. */
                        public label_filters: string[];

                        /** DynamicBusinessProfileLocationGroupFilter business_name_filter. */
                        public business_name_filter?: (google.ads.googleads.v23.common.IBusinessProfileBusinessNameFilter|null);

                        /** DynamicBusinessProfileLocationGroupFilter listing_id_filters. */
                        public listing_id_filters: number[];

                        /**
                         * Creates a new DynamicBusinessProfileLocationGroupFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicBusinessProfileLocationGroupFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicBusinessProfileLocationGroupFilter): google.ads.googleads.v23.common.DynamicBusinessProfileLocationGroupFilter;

                        /**
                         * Encodes the specified DynamicBusinessProfileLocationGroupFilter message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicBusinessProfileLocationGroupFilter.verify|verify} messages.
                         * @param message DynamicBusinessProfileLocationGroupFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicBusinessProfileLocationGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicBusinessProfileLocationGroupFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicBusinessProfileLocationGroupFilter.verify|verify} messages.
                         * @param message DynamicBusinessProfileLocationGroupFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicBusinessProfileLocationGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a BusinessProfileBusinessNameFilter. */
                    interface IBusinessProfileBusinessNameFilter {

                        /** BusinessProfileBusinessNameFilter business_name */
                        business_name?: (string|null);

                        /** BusinessProfileBusinessNameFilter filter_type */
                        filter_type?: (google.ads.googleads.v23.enums.LocationStringFilterTypeEnum.LocationStringFilterType|keyof typeof google.ads.googleads.v23.enums.LocationStringFilterTypeEnum.LocationStringFilterType|null);
                    }

                    /** Represents a BusinessProfileBusinessNameFilter. */
                    class BusinessProfileBusinessNameFilter implements IBusinessProfileBusinessNameFilter {

                        /**
                         * Constructs a new BusinessProfileBusinessNameFilter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBusinessProfileBusinessNameFilter);

                        /** BusinessProfileBusinessNameFilter business_name. */
                        public business_name: string;

                        /** BusinessProfileBusinessNameFilter filter_type. */
                        public filter_type: (google.ads.googleads.v23.enums.LocationStringFilterTypeEnum.LocationStringFilterType|keyof typeof google.ads.googleads.v23.enums.LocationStringFilterTypeEnum.LocationStringFilterType);

                        /**
                         * Creates a new BusinessProfileBusinessNameFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessProfileBusinessNameFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBusinessProfileBusinessNameFilter): google.ads.googleads.v23.common.BusinessProfileBusinessNameFilter;

                        /**
                         * Encodes the specified BusinessProfileBusinessNameFilter message. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileBusinessNameFilter.verify|verify} messages.
                         * @param message BusinessProfileBusinessNameFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBusinessProfileBusinessNameFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessProfileBusinessNameFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileBusinessNameFilter.verify|verify} messages.
                         * @param message BusinessProfileBusinessNameFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBusinessProfileBusinessNameFilter, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ChainLocationGroup. */
                    interface IChainLocationGroup {

                        /** ChainLocationGroup dynamic_chain_location_group_filters */
                        dynamic_chain_location_group_filters?: (google.ads.googleads.v23.common.IChainFilter[]|null);
                    }

                    /** Represents a ChainLocationGroup. */
                    class ChainLocationGroup implements IChainLocationGroup {

                        /**
                         * Constructs a new ChainLocationGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IChainLocationGroup);

                        /** ChainLocationGroup dynamic_chain_location_group_filters. */
                        public dynamic_chain_location_group_filters: google.ads.googleads.v23.common.IChainFilter[];

                        /**
                         * Creates a new ChainLocationGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChainLocationGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IChainLocationGroup): google.ads.googleads.v23.common.ChainLocationGroup;

                        /**
                         * Encodes the specified ChainLocationGroup message. Does not implicitly {@link google.ads.googleads.v23.common.ChainLocationGroup.verify|verify} messages.
                         * @param message ChainLocationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IChainLocationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChainLocationGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ChainLocationGroup.verify|verify} messages.
                         * @param message ChainLocationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IChainLocationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a YoutubeVideoAsset. */
                    interface IYoutubeVideoAsset {

                        /** YoutubeVideoAsset youtube_video_id */
                        youtube_video_id?: (string|null);

                        /** YoutubeVideoAsset youtube_video_title */
                        youtube_video_title?: (string|null);
                    }

                    /** Represents a YoutubeVideoAsset. */
                    class YoutubeVideoAsset implements IYoutubeVideoAsset {

                        /**
                         * Constructs a new YoutubeVideoAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYoutubeVideoAsset);

                        /** YoutubeVideoAsset youtube_video_id. */
                        public youtube_video_id?: (string|null);

                        /** YoutubeVideoAsset youtube_video_title. */
                        public youtube_video_title: string;

                        /**
                         * Creates a new YoutubeVideoAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YoutubeVideoAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYoutubeVideoAsset): google.ads.googleads.v23.common.YoutubeVideoAsset;

                        /**
                         * Encodes the specified YoutubeVideoAsset message. Does not implicitly {@link google.ads.googleads.v23.common.YoutubeVideoAsset.verify|verify} messages.
                         * @param message YoutubeVideoAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYoutubeVideoAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YoutubeVideoAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YoutubeVideoAsset.verify|verify} messages.
                         * @param message YoutubeVideoAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYoutubeVideoAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a MediaBundleAsset. */
                    interface IMediaBundleAsset {

                        /** MediaBundleAsset data */
                        data?: (Uint8Array|Buffer|string|null);
                    }

                    /** Represents a MediaBundleAsset. */
                    class MediaBundleAsset implements IMediaBundleAsset {

                        /**
                         * Constructs a new MediaBundleAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMediaBundleAsset);

                        /** MediaBundleAsset data. */
                        public data?: (Uint8Array|Buffer|string|null);

                        /**
                         * Creates a new MediaBundleAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaBundleAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMediaBundleAsset): google.ads.googleads.v23.common.MediaBundleAsset;

                        /**
                         * Encodes the specified MediaBundleAsset message. Does not implicitly {@link google.ads.googleads.v23.common.MediaBundleAsset.verify|verify} messages.
                         * @param message MediaBundleAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMediaBundleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaBundleAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MediaBundleAsset.verify|verify} messages.
                         * @param message MediaBundleAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMediaBundleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of an ImageAsset. */
                    interface IImageAsset {

                        /** ImageAsset data */
                        data?: (Uint8Array|Buffer|string|null);

                        /** ImageAsset file_size */
                        file_size?: (number|null);

                        /** ImageAsset mime_type */
                        mime_type?: (google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|null);

                        /** ImageAsset full_size */
                        full_size?: (google.ads.googleads.v23.common.IImageDimension|null);
                    }

                    /** Represents an ImageAsset. */
                    class ImageAsset implements IImageAsset {

                        /**
                         * Constructs a new ImageAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IImageAsset);

                        /** ImageAsset data. */
                        public data?: (Uint8Array|Buffer|string|null);

                        /** ImageAsset file_size. */
                        public file_size?: (number|null);

                        /** ImageAsset mime_type. */
                        public mime_type: (google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v23.enums.MimeTypeEnum.MimeType);

                        /** ImageAsset full_size. */
                        public full_size?: (google.ads.googleads.v23.common.IImageDimension|null);

                        /**
                         * Creates a new ImageAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ImageAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IImageAsset): google.ads.googleads.v23.common.ImageAsset;

                        /**
                         * Encodes the specified ImageAsset message. Does not implicitly {@link google.ads.googleads.v23.common.ImageAsset.verify|verify} messages.
                         * @param message ImageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ImageAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ImageAsset.verify|verify} messages.
                         * @param message ImageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of an ImageDimension. */
                    interface IImageDimension {

                        /** ImageDimension height_pixels */
                        height_pixels?: (number|null);

                        /** ImageDimension width_pixels */
                        width_pixels?: (number|null);

                        /** ImageDimension url */
                        url?: (string|null);
                    }

                    /** Represents an ImageDimension. */
                    class ImageDimension implements IImageDimension {

                        /**
                         * Constructs a new ImageDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IImageDimension);

                        /** ImageDimension height_pixels. */
                        public height_pixels?: (number|null);

                        /** ImageDimension width_pixels. */
                        public width_pixels?: (number|null);

                        /** ImageDimension url. */
                        public url?: (string|null);

                        /**
                         * Creates a new ImageDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ImageDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IImageDimension): google.ads.googleads.v23.common.ImageDimension;

                        /**
                         * Encodes the specified ImageDimension message. Does not implicitly {@link google.ads.googleads.v23.common.ImageDimension.verify|verify} messages.
                         * @param message ImageDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IImageDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ImageDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ImageDimension.verify|verify} messages.
                         * @param message ImageDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IImageDimension, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a TextAsset. */
                    interface ITextAsset {

                        /** TextAsset text */
                        text?: (string|null);
                    }

                    /** Represents a TextAsset. */
                    class TextAsset implements ITextAsset {

                        /**
                         * Constructs a new TextAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITextAsset);

                        /** TextAsset text. */
                        public text?: (string|null);

                        /**
                         * Creates a new TextAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TextAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITextAsset): google.ads.googleads.v23.common.TextAsset;

                        /**
                         * Encodes the specified TextAsset message. Does not implicitly {@link google.ads.googleads.v23.common.TextAsset.verify|verify} messages.
                         * @param message TextAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TextAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TextAsset.verify|verify} messages.
                         * @param message TextAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LeadFormAsset. */
                    interface ILeadFormAsset {

                        /** LeadFormAsset business_name */
                        business_name?: (string|null);

                        /** LeadFormAsset call_to_action_type */
                        call_to_action_type?: (google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum.LeadFormCallToActionType|keyof typeof google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum.LeadFormCallToActionType|null);

                        /** LeadFormAsset call_to_action_description */
                        call_to_action_description?: (string|null);

                        /** LeadFormAsset headline */
                        headline?: (string|null);

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

                        /** LeadFormAsset privacy_policy_url */
                        privacy_policy_url?: (string|null);

                        /** LeadFormAsset post_submit_headline */
                        post_submit_headline?: (string|null);

                        /** LeadFormAsset post_submit_description */
                        post_submit_description?: (string|null);

                        /** LeadFormAsset fields */
                        fields?: (google.ads.googleads.v23.common.ILeadFormField[]|null);

                        /** LeadFormAsset custom_question_fields */
                        custom_question_fields?: (google.ads.googleads.v23.common.ILeadFormCustomQuestionField[]|null);

                        /** LeadFormAsset delivery_methods */
                        delivery_methods?: (google.ads.googleads.v23.common.ILeadFormDeliveryMethod[]|null);

                        /** LeadFormAsset post_submit_call_to_action_type */
                        post_submit_call_to_action_type?: (google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType|keyof typeof google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType|null);

                        /** LeadFormAsset background_image_asset */
                        background_image_asset?: (string|null);

                        /** LeadFormAsset desired_intent */
                        desired_intent?: (google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent|keyof typeof google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent|null);

                        /** LeadFormAsset custom_disclosure */
                        custom_disclosure?: (string|null);
                    }

                    /** Represents a LeadFormAsset. */
                    class LeadFormAsset implements ILeadFormAsset {

                        /**
                         * Constructs a new LeadFormAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILeadFormAsset);

                        /** LeadFormAsset business_name. */
                        public business_name: string;

                        /** LeadFormAsset call_to_action_type. */
                        public call_to_action_type: (google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum.LeadFormCallToActionType|keyof typeof google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum.LeadFormCallToActionType);

                        /** LeadFormAsset call_to_action_description. */
                        public call_to_action_description: string;

                        /** LeadFormAsset headline. */
                        public headline: string;

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

                        /** LeadFormAsset privacy_policy_url. */
                        public privacy_policy_url: string;

                        /** LeadFormAsset post_submit_headline. */
                        public post_submit_headline?: (string|null);

                        /** LeadFormAsset post_submit_description. */
                        public post_submit_description?: (string|null);

                        /** LeadFormAsset fields. */
                        public fields: google.ads.googleads.v23.common.ILeadFormField[];

                        /** LeadFormAsset custom_question_fields. */
                        public custom_question_fields: google.ads.googleads.v23.common.ILeadFormCustomQuestionField[];

                        /** LeadFormAsset delivery_methods. */
                        public delivery_methods: google.ads.googleads.v23.common.ILeadFormDeliveryMethod[];

                        /** LeadFormAsset post_submit_call_to_action_type. */
                        public post_submit_call_to_action_type: (google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType|keyof typeof google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType);

                        /** LeadFormAsset background_image_asset. */
                        public background_image_asset?: (string|null);

                        /** LeadFormAsset desired_intent. */
                        public desired_intent: (google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent|keyof typeof google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent);

                        /** LeadFormAsset custom_disclosure. */
                        public custom_disclosure?: (string|null);

                        /**
                         * Creates a new LeadFormAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILeadFormAsset): google.ads.googleads.v23.common.LeadFormAsset;

                        /**
                         * Encodes the specified LeadFormAsset message. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormAsset.verify|verify} messages.
                         * @param message LeadFormAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILeadFormAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormAsset.verify|verify} messages.
                         * @param message LeadFormAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILeadFormAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LeadFormField. */
                    interface ILeadFormField {

                        /** LeadFormField input_type */
                        input_type?: (google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|keyof typeof google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|null);

                        /** LeadFormField single_choice_answers */
                        single_choice_answers?: (google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers|null);

                        /** LeadFormField has_location_answer */
                        has_location_answer?: (boolean|null);
                    }

                    /** Represents a LeadFormField. */
                    class LeadFormField implements ILeadFormField {

                        /**
                         * Constructs a new LeadFormField.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILeadFormField);

                        /** LeadFormField input_type. */
                        public input_type: (google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|keyof typeof google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType);

                        /** LeadFormField single_choice_answers. */
                        public single_choice_answers?: (google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers|null);

                        /** LeadFormField has_location_answer. */
                        public has_location_answer?: (boolean|null);

                        /** LeadFormField answers. */
                        public answers?: ("single_choice_answers"|"has_location_answer");

                        /**
                         * Creates a new LeadFormField instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormField instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILeadFormField): google.ads.googleads.v23.common.LeadFormField;

                        /**
                         * Encodes the specified LeadFormField message. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormField.verify|verify} messages.
                         * @param message LeadFormField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILeadFormField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormField message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormField.verify|verify} messages.
                         * @param message LeadFormField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILeadFormField, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LeadFormCustomQuestionField. */
                    interface ILeadFormCustomQuestionField {

                        /** LeadFormCustomQuestionField custom_question_text */
                        custom_question_text?: (string|null);

                        /** LeadFormCustomQuestionField single_choice_answers */
                        single_choice_answers?: (google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers|null);

                        /** LeadFormCustomQuestionField has_location_answer */
                        has_location_answer?: (boolean|null);
                    }

                    /** Represents a LeadFormCustomQuestionField. */
                    class LeadFormCustomQuestionField implements ILeadFormCustomQuestionField {

                        /**
                         * Constructs a new LeadFormCustomQuestionField.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILeadFormCustomQuestionField);

                        /** LeadFormCustomQuestionField custom_question_text. */
                        public custom_question_text: string;

                        /** LeadFormCustomQuestionField single_choice_answers. */
                        public single_choice_answers?: (google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers|null);

                        /** LeadFormCustomQuestionField has_location_answer. */
                        public has_location_answer?: (boolean|null);

                        /** LeadFormCustomQuestionField answers. */
                        public answers?: ("single_choice_answers"|"has_location_answer");

                        /**
                         * Creates a new LeadFormCustomQuestionField instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormCustomQuestionField instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILeadFormCustomQuestionField): google.ads.googleads.v23.common.LeadFormCustomQuestionField;

                        /**
                         * Encodes the specified LeadFormCustomQuestionField message. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormCustomQuestionField.verify|verify} messages.
                         * @param message LeadFormCustomQuestionField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILeadFormCustomQuestionField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormCustomQuestionField message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormCustomQuestionField.verify|verify} messages.
                         * @param message LeadFormCustomQuestionField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILeadFormCustomQuestionField, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LeadFormSingleChoiceAnswers. */
                    interface ILeadFormSingleChoiceAnswers {

                        /** LeadFormSingleChoiceAnswers answers */
                        answers?: (string[]|null);
                    }

                    /** Represents a LeadFormSingleChoiceAnswers. */
                    class LeadFormSingleChoiceAnswers implements ILeadFormSingleChoiceAnswers {

                        /**
                         * Constructs a new LeadFormSingleChoiceAnswers.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers);

                        /** LeadFormSingleChoiceAnswers answers. */
                        public answers: string[];

                        /**
                         * Creates a new LeadFormSingleChoiceAnswers instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormSingleChoiceAnswers instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers): google.ads.googleads.v23.common.LeadFormSingleChoiceAnswers;

                        /**
                         * Encodes the specified LeadFormSingleChoiceAnswers message. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormSingleChoiceAnswers.verify|verify} messages.
                         * @param message LeadFormSingleChoiceAnswers message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormSingleChoiceAnswers message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormSingleChoiceAnswers.verify|verify} messages.
                         * @param message LeadFormSingleChoiceAnswers message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILeadFormSingleChoiceAnswers, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LeadFormDeliveryMethod. */
                    interface ILeadFormDeliveryMethod {

                        /** LeadFormDeliveryMethod webhook */
                        webhook?: (google.ads.googleads.v23.common.IWebhookDelivery|null);
                    }

                    /** Represents a LeadFormDeliveryMethod. */
                    class LeadFormDeliveryMethod implements ILeadFormDeliveryMethod {

                        /**
                         * Constructs a new LeadFormDeliveryMethod.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILeadFormDeliveryMethod);

                        /** LeadFormDeliveryMethod webhook. */
                        public webhook?: (google.ads.googleads.v23.common.IWebhookDelivery|null);

                        /** LeadFormDeliveryMethod delivery_details. */
                        public delivery_details?: "webhook";

                        /**
                         * Creates a new LeadFormDeliveryMethod instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormDeliveryMethod instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILeadFormDeliveryMethod): google.ads.googleads.v23.common.LeadFormDeliveryMethod;

                        /**
                         * Encodes the specified LeadFormDeliveryMethod message. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormDeliveryMethod.verify|verify} messages.
                         * @param message LeadFormDeliveryMethod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILeadFormDeliveryMethod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormDeliveryMethod message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LeadFormDeliveryMethod.verify|verify} messages.
                         * @param message LeadFormDeliveryMethod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILeadFormDeliveryMethod, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a WebhookDelivery. */
                    interface IWebhookDelivery {

                        /** WebhookDelivery advertiser_webhook_url */
                        advertiser_webhook_url?: (string|null);

                        /** WebhookDelivery google_secret */
                        google_secret?: (string|null);

                        /** WebhookDelivery payload_schema_version */
                        payload_schema_version?: (number|null);
                    }

                    /** Represents a WebhookDelivery. */
                    class WebhookDelivery implements IWebhookDelivery {

                        /**
                         * Constructs a new WebhookDelivery.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IWebhookDelivery);

                        /** WebhookDelivery advertiser_webhook_url. */
                        public advertiser_webhook_url?: (string|null);

                        /** WebhookDelivery google_secret. */
                        public google_secret?: (string|null);

                        /** WebhookDelivery payload_schema_version. */
                        public payload_schema_version?: (number|null);

                        /**
                         * Creates a new WebhookDelivery instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebhookDelivery instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IWebhookDelivery): google.ads.googleads.v23.common.WebhookDelivery;

                        /**
                         * Encodes the specified WebhookDelivery message. Does not implicitly {@link google.ads.googleads.v23.common.WebhookDelivery.verify|verify} messages.
                         * @param message WebhookDelivery message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IWebhookDelivery, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebhookDelivery message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.WebhookDelivery.verify|verify} messages.
                         * @param message WebhookDelivery message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IWebhookDelivery, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a BookOnGoogleAsset. */
                    interface IBookOnGoogleAsset {
                    }

                    /** Represents a BookOnGoogleAsset. */
                    class BookOnGoogleAsset implements IBookOnGoogleAsset {

                        /**
                         * Constructs a new BookOnGoogleAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBookOnGoogleAsset);

                        /**
                         * Creates a new BookOnGoogleAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BookOnGoogleAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBookOnGoogleAsset): google.ads.googleads.v23.common.BookOnGoogleAsset;

                        /**
                         * Encodes the specified BookOnGoogleAsset message. Does not implicitly {@link google.ads.googleads.v23.common.BookOnGoogleAsset.verify|verify} messages.
                         * @param message BookOnGoogleAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBookOnGoogleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BookOnGoogleAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BookOnGoogleAsset.verify|verify} messages.
                         * @param message BookOnGoogleAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBookOnGoogleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PromotionAsset. */
                    interface IPromotionAsset {

                        /** PromotionAsset promotion_target */
                        promotion_target?: (string|null);

                        /** PromotionAsset discount_modifier */
                        discount_modifier?: (google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|keyof typeof google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|null);

                        /** PromotionAsset redemption_start_date */
                        redemption_start_date?: (string|null);

                        /** PromotionAsset redemption_end_date */
                        redemption_end_date?: (string|null);

                        /** PromotionAsset occasion */
                        occasion?: (google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|keyof typeof google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|null);

                        /** PromotionAsset language_code */
                        language_code?: (string|null);

                        /** PromotionAsset start_date */
                        start_date?: (string|null);

                        /** PromotionAsset end_date */
                        end_date?: (string|null);

                        /** PromotionAsset ad_schedule_targets */
                        ad_schedule_targets?: (google.ads.googleads.v23.common.IAdScheduleInfo[]|null);

                        /** PromotionAsset terms_and_conditions_text */
                        terms_and_conditions_text?: (string|null);

                        /** PromotionAsset terms_and_conditions_uri */
                        terms_and_conditions_uri?: (string|null);

                        /** PromotionAsset percent_off */
                        percent_off?: (number|null);

                        /** PromotionAsset money_amount_off */
                        money_amount_off?: (google.ads.googleads.v23.common.IMoney|null);

                        /** PromotionAsset promotion_code */
                        promotion_code?: (string|null);

                        /** PromotionAsset orders_over_amount */
                        orders_over_amount?: (google.ads.googleads.v23.common.IMoney|null);

                        /** PromotionAsset promotion_barcode_info */
                        promotion_barcode_info?: (google.ads.googleads.v23.common.IPromotionBarcodeInfo|null);

                        /** PromotionAsset promotion_qr_code_info */
                        promotion_qr_code_info?: (google.ads.googleads.v23.common.IPromotionQrCodeInfo|null);
                    }

                    /** Represents a PromotionAsset. */
                    class PromotionAsset implements IPromotionAsset {

                        /**
                         * Constructs a new PromotionAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPromotionAsset);

                        /** PromotionAsset promotion_target. */
                        public promotion_target: string;

                        /** PromotionAsset discount_modifier. */
                        public discount_modifier: (google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|keyof typeof google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier);

                        /** PromotionAsset redemption_start_date. */
                        public redemption_start_date: string;

                        /** PromotionAsset redemption_end_date. */
                        public redemption_end_date: string;

                        /** PromotionAsset occasion. */
                        public occasion: (google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|keyof typeof google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion);

                        /** PromotionAsset language_code. */
                        public language_code: string;

                        /** PromotionAsset start_date. */
                        public start_date: string;

                        /** PromotionAsset end_date. */
                        public end_date: string;

                        /** PromotionAsset ad_schedule_targets. */
                        public ad_schedule_targets: google.ads.googleads.v23.common.IAdScheduleInfo[];

                        /** PromotionAsset terms_and_conditions_text. */
                        public terms_and_conditions_text: string;

                        /** PromotionAsset terms_and_conditions_uri. */
                        public terms_and_conditions_uri: string;

                        /** PromotionAsset percent_off. */
                        public percent_off?: (number|null);

                        /** PromotionAsset money_amount_off. */
                        public money_amount_off?: (google.ads.googleads.v23.common.IMoney|null);

                        /** PromotionAsset promotion_code. */
                        public promotion_code?: (string|null);

                        /** PromotionAsset orders_over_amount. */
                        public orders_over_amount?: (google.ads.googleads.v23.common.IMoney|null);

                        /** PromotionAsset promotion_barcode_info. */
                        public promotion_barcode_info?: (google.ads.googleads.v23.common.IPromotionBarcodeInfo|null);

                        /** PromotionAsset promotion_qr_code_info. */
                        public promotion_qr_code_info?: (google.ads.googleads.v23.common.IPromotionQrCodeInfo|null);

                        /** PromotionAsset discount_type. */
                        public discount_type?: ("percent_off"|"money_amount_off");

                        /** PromotionAsset promotion_trigger. */
                        public promotion_trigger?: ("promotion_code"|"orders_over_amount"|"promotion_barcode_info"|"promotion_qr_code_info");

                        /**
                         * Creates a new PromotionAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPromotionAsset): google.ads.googleads.v23.common.PromotionAsset;

                        /**
                         * Encodes the specified PromotionAsset message. Does not implicitly {@link google.ads.googleads.v23.common.PromotionAsset.verify|verify} messages.
                         * @param message PromotionAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPromotionAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PromotionAsset.verify|verify} messages.
                         * @param message PromotionAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPromotionAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PromotionBarcodeInfo. */
                    interface IPromotionBarcodeInfo {

                        /** PromotionBarcodeInfo type */
                        type?: (google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum.PromotionBarcodeType|keyof typeof google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum.PromotionBarcodeType|null);

                        /** PromotionBarcodeInfo barcode_content */
                        barcode_content?: (string|null);
                    }

                    /** Represents a PromotionBarcodeInfo. */
                    class PromotionBarcodeInfo implements IPromotionBarcodeInfo {

                        /**
                         * Constructs a new PromotionBarcodeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPromotionBarcodeInfo);

                        /** PromotionBarcodeInfo type. */
                        public type: (google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum.PromotionBarcodeType|keyof typeof google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum.PromotionBarcodeType);

                        /** PromotionBarcodeInfo barcode_content. */
                        public barcode_content: string;

                        /**
                         * Creates a new PromotionBarcodeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionBarcodeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPromotionBarcodeInfo): google.ads.googleads.v23.common.PromotionBarcodeInfo;

                        /**
                         * Encodes the specified PromotionBarcodeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.PromotionBarcodeInfo.verify|verify} messages.
                         * @param message PromotionBarcodeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPromotionBarcodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionBarcodeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PromotionBarcodeInfo.verify|verify} messages.
                         * @param message PromotionBarcodeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPromotionBarcodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PromotionQrCodeInfo. */
                    interface IPromotionQrCodeInfo {

                        /** PromotionQrCodeInfo qr_code_content */
                        qr_code_content?: (string|null);
                    }

                    /** Represents a PromotionQrCodeInfo. */
                    class PromotionQrCodeInfo implements IPromotionQrCodeInfo {

                        /**
                         * Constructs a new PromotionQrCodeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPromotionQrCodeInfo);

                        /** PromotionQrCodeInfo qr_code_content. */
                        public qr_code_content: string;

                        /**
                         * Creates a new PromotionQrCodeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionQrCodeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPromotionQrCodeInfo): google.ads.googleads.v23.common.PromotionQrCodeInfo;

                        /**
                         * Encodes the specified PromotionQrCodeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.PromotionQrCodeInfo.verify|verify} messages.
                         * @param message PromotionQrCodeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPromotionQrCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionQrCodeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PromotionQrCodeInfo.verify|verify} messages.
                         * @param message PromotionQrCodeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPromotionQrCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a CalloutAsset. */
                    interface ICalloutAsset {

                        /** CalloutAsset callout_text */
                        callout_text?: (string|null);

                        /** CalloutAsset start_date */
                        start_date?: (string|null);

                        /** CalloutAsset end_date */
                        end_date?: (string|null);

                        /** CalloutAsset ad_schedule_targets */
                        ad_schedule_targets?: (google.ads.googleads.v23.common.IAdScheduleInfo[]|null);
                    }

                    /** Represents a CalloutAsset. */
                    class CalloutAsset implements ICalloutAsset {

                        /**
                         * Constructs a new CalloutAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICalloutAsset);

                        /** CalloutAsset callout_text. */
                        public callout_text: string;

                        /** CalloutAsset start_date. */
                        public start_date: string;

                        /** CalloutAsset end_date. */
                        public end_date: string;

                        /** CalloutAsset ad_schedule_targets. */
                        public ad_schedule_targets: google.ads.googleads.v23.common.IAdScheduleInfo[];

                        /**
                         * Creates a new CalloutAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CalloutAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICalloutAsset): google.ads.googleads.v23.common.CalloutAsset;

                        /**
                         * Encodes the specified CalloutAsset message. Does not implicitly {@link google.ads.googleads.v23.common.CalloutAsset.verify|verify} messages.
                         * @param message CalloutAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICalloutAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CalloutAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CalloutAsset.verify|verify} messages.
                         * @param message CalloutAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICalloutAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a StructuredSnippetAsset. */
                    interface IStructuredSnippetAsset {

                        /** StructuredSnippetAsset header */
                        header?: (string|null);

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

                    /** Represents a StructuredSnippetAsset. */
                    class StructuredSnippetAsset implements IStructuredSnippetAsset {

                        /**
                         * Constructs a new StructuredSnippetAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IStructuredSnippetAsset);

                        /** StructuredSnippetAsset header. */
                        public header: string;

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

                        /**
                         * Creates a new StructuredSnippetAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StructuredSnippetAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IStructuredSnippetAsset): google.ads.googleads.v23.common.StructuredSnippetAsset;

                        /**
                         * Encodes the specified StructuredSnippetAsset message. Does not implicitly {@link google.ads.googleads.v23.common.StructuredSnippetAsset.verify|verify} messages.
                         * @param message StructuredSnippetAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IStructuredSnippetAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StructuredSnippetAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.StructuredSnippetAsset.verify|verify} messages.
                         * @param message StructuredSnippetAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IStructuredSnippetAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a SitelinkAsset. */
                    interface ISitelinkAsset {

                        /** SitelinkAsset link_text */
                        link_text?: (string|null);

                        /** SitelinkAsset description1 */
                        description1?: (string|null);

                        /** SitelinkAsset description2 */
                        description2?: (string|null);

                        /** SitelinkAsset start_date */
                        start_date?: (string|null);

                        /** SitelinkAsset end_date */
                        end_date?: (string|null);

                        /** SitelinkAsset ad_schedule_targets */
                        ad_schedule_targets?: (google.ads.googleads.v23.common.IAdScheduleInfo[]|null);
                    }

                    /** Represents a SitelinkAsset. */
                    class SitelinkAsset implements ISitelinkAsset {

                        /**
                         * Constructs a new SitelinkAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISitelinkAsset);

                        /** SitelinkAsset link_text. */
                        public link_text: string;

                        /** SitelinkAsset description1. */
                        public description1: string;

                        /** SitelinkAsset description2. */
                        public description2: string;

                        /** SitelinkAsset start_date. */
                        public start_date: string;

                        /** SitelinkAsset end_date. */
                        public end_date: string;

                        /** SitelinkAsset ad_schedule_targets. */
                        public ad_schedule_targets: google.ads.googleads.v23.common.IAdScheduleInfo[];

                        /**
                         * Creates a new SitelinkAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SitelinkAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISitelinkAsset): google.ads.googleads.v23.common.SitelinkAsset;

                        /**
                         * Encodes the specified SitelinkAsset message. Does not implicitly {@link google.ads.googleads.v23.common.SitelinkAsset.verify|verify} messages.
                         * @param message SitelinkAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISitelinkAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SitelinkAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.SitelinkAsset.verify|verify} messages.
                         * @param message SitelinkAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISitelinkAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PageFeedAsset. */
                    interface IPageFeedAsset {

                        /** PageFeedAsset page_url */
                        page_url?: (string|null);

                        /** PageFeedAsset labels */
                        labels?: (string[]|null);
                    }

                    /** Represents a PageFeedAsset. */
                    class PageFeedAsset implements IPageFeedAsset {

                        /**
                         * Constructs a new PageFeedAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPageFeedAsset);

                        /** PageFeedAsset page_url. */
                        public page_url: string;

                        /** PageFeedAsset labels. */
                        public labels: string[];

                        /**
                         * Creates a new PageFeedAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PageFeedAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPageFeedAsset): google.ads.googleads.v23.common.PageFeedAsset;

                        /**
                         * Encodes the specified PageFeedAsset message. Does not implicitly {@link google.ads.googleads.v23.common.PageFeedAsset.verify|verify} messages.
                         * @param message PageFeedAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPageFeedAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PageFeedAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PageFeedAsset.verify|verify} messages.
                         * @param message PageFeedAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPageFeedAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicEducationAsset. */
                    interface IDynamicEducationAsset {

                        /** DynamicEducationAsset program_id */
                        program_id?: (string|null);

                        /** DynamicEducationAsset location_id */
                        location_id?: (string|null);

                        /** DynamicEducationAsset program_name */
                        program_name?: (string|null);

                        /** DynamicEducationAsset subject */
                        subject?: (string|null);

                        /** DynamicEducationAsset program_description */
                        program_description?: (string|null);

                        /** DynamicEducationAsset school_name */
                        school_name?: (string|null);

                        /** DynamicEducationAsset address */
                        address?: (string|null);

                        /** DynamicEducationAsset contextual_keywords */
                        contextual_keywords?: (string[]|null);

                        /** DynamicEducationAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicEducationAsset similar_program_ids */
                        similar_program_ids?: (string[]|null);

                        /** DynamicEducationAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicEducationAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);

                        /** DynamicEducationAsset thumbnail_image_url */
                        thumbnail_image_url?: (string|null);

                        /** DynamicEducationAsset image_url */
                        image_url?: (string|null);
                    }

                    /** Represents a DynamicEducationAsset. */
                    class DynamicEducationAsset implements IDynamicEducationAsset {

                        /**
                         * Constructs a new DynamicEducationAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicEducationAsset);

                        /** DynamicEducationAsset program_id. */
                        public program_id: string;

                        /** DynamicEducationAsset location_id. */
                        public location_id: string;

                        /** DynamicEducationAsset program_name. */
                        public program_name: string;

                        /** DynamicEducationAsset subject. */
                        public subject: string;

                        /** DynamicEducationAsset program_description. */
                        public program_description: string;

                        /** DynamicEducationAsset school_name. */
                        public school_name: string;

                        /** DynamicEducationAsset address. */
                        public address: string;

                        /** DynamicEducationAsset contextual_keywords. */
                        public contextual_keywords: string[];

                        /** DynamicEducationAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicEducationAsset similar_program_ids. */
                        public similar_program_ids: string[];

                        /** DynamicEducationAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicEducationAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /** DynamicEducationAsset thumbnail_image_url. */
                        public thumbnail_image_url: string;

                        /** DynamicEducationAsset image_url. */
                        public image_url: string;

                        /**
                         * Creates a new DynamicEducationAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicEducationAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicEducationAsset): google.ads.googleads.v23.common.DynamicEducationAsset;

                        /**
                         * Encodes the specified DynamicEducationAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicEducationAsset.verify|verify} messages.
                         * @param message DynamicEducationAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicEducationAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicEducationAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicEducationAsset.verify|verify} messages.
                         * @param message DynamicEducationAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicEducationAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a MobileAppAsset. */
                    interface IMobileAppAsset {

                        /** MobileAppAsset app_id */
                        app_id?: (string|null);

                        /** MobileAppAsset app_store */
                        app_store?: (google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|null);

                        /** MobileAppAsset link_text */
                        link_text?: (string|null);

                        /** MobileAppAsset start_date */
                        start_date?: (string|null);

                        /** MobileAppAsset end_date */
                        end_date?: (string|null);
                    }

                    /** Represents a MobileAppAsset. */
                    class MobileAppAsset implements IMobileAppAsset {

                        /**
                         * Constructs a new MobileAppAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMobileAppAsset);

                        /** MobileAppAsset app_id. */
                        public app_id: string;

                        /** MobileAppAsset app_store. */
                        public app_store: (google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor);

                        /** MobileAppAsset link_text. */
                        public link_text: string;

                        /** MobileAppAsset start_date. */
                        public start_date: string;

                        /** MobileAppAsset end_date. */
                        public end_date: string;

                        /**
                         * Creates a new MobileAppAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileAppAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMobileAppAsset): google.ads.googleads.v23.common.MobileAppAsset;

                        /**
                         * Encodes the specified MobileAppAsset message. Does not implicitly {@link google.ads.googleads.v23.common.MobileAppAsset.verify|verify} messages.
                         * @param message MobileAppAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMobileAppAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileAppAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MobileAppAsset.verify|verify} messages.
                         * @param message MobileAppAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMobileAppAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a HotelCalloutAsset. */
                    interface IHotelCalloutAsset {

                        /** HotelCalloutAsset text */
                        text?: (string|null);

                        /** HotelCalloutAsset language_code */
                        language_code?: (string|null);
                    }

                    /** Represents a HotelCalloutAsset. */
                    class HotelCalloutAsset implements IHotelCalloutAsset {

                        /**
                         * Constructs a new HotelCalloutAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelCalloutAsset);

                        /** HotelCalloutAsset text. */
                        public text: string;

                        /** HotelCalloutAsset language_code. */
                        public language_code: string;

                        /**
                         * Creates a new HotelCalloutAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelCalloutAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelCalloutAsset): google.ads.googleads.v23.common.HotelCalloutAsset;

                        /**
                         * Encodes the specified HotelCalloutAsset message. Does not implicitly {@link google.ads.googleads.v23.common.HotelCalloutAsset.verify|verify} messages.
                         * @param message HotelCalloutAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelCalloutAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelCalloutAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelCalloutAsset.verify|verify} messages.
                         * @param message HotelCalloutAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelCalloutAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a CallAsset. */
                    interface ICallAsset {

                        /** CallAsset country_code */
                        country_code?: (string|null);

                        /** CallAsset phone_number */
                        phone_number?: (string|null);

                        /** CallAsset call_conversion_reporting_state */
                        call_conversion_reporting_state?: (google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState|null);

                        /** CallAsset call_conversion_action */
                        call_conversion_action?: (string|null);

                        /** CallAsset ad_schedule_targets */
                        ad_schedule_targets?: (google.ads.googleads.v23.common.IAdScheduleInfo[]|null);
                    }

                    /** Represents a CallAsset. */
                    class CallAsset implements ICallAsset {

                        /**
                         * Constructs a new CallAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICallAsset);

                        /** CallAsset country_code. */
                        public country_code: string;

                        /** CallAsset phone_number. */
                        public phone_number: string;

                        /** CallAsset call_conversion_reporting_state. */
                        public call_conversion_reporting_state: (google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState);

                        /** CallAsset call_conversion_action. */
                        public call_conversion_action: string;

                        /** CallAsset ad_schedule_targets. */
                        public ad_schedule_targets: google.ads.googleads.v23.common.IAdScheduleInfo[];

                        /**
                         * Creates a new CallAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICallAsset): google.ads.googleads.v23.common.CallAsset;

                        /**
                         * Encodes the specified CallAsset message. Does not implicitly {@link google.ads.googleads.v23.common.CallAsset.verify|verify} messages.
                         * @param message CallAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICallAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CallAsset.verify|verify} messages.
                         * @param message CallAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICallAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PriceAsset. */
                    interface IPriceAsset {

                        /** PriceAsset type */
                        type?: (google.ads.googleads.v23.enums.PriceExtensionTypeEnum.PriceExtensionType|keyof typeof google.ads.googleads.v23.enums.PriceExtensionTypeEnum.PriceExtensionType|null);

                        /** PriceAsset price_qualifier */
                        price_qualifier?: (google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier|keyof typeof google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier|null);

                        /** PriceAsset language_code */
                        language_code?: (string|null);

                        /** PriceAsset price_offerings */
                        price_offerings?: (google.ads.googleads.v23.common.IPriceOffering[]|null);
                    }

                    /** Represents a PriceAsset. */
                    class PriceAsset implements IPriceAsset {

                        /**
                         * Constructs a new PriceAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPriceAsset);

                        /** PriceAsset type. */
                        public type: (google.ads.googleads.v23.enums.PriceExtensionTypeEnum.PriceExtensionType|keyof typeof google.ads.googleads.v23.enums.PriceExtensionTypeEnum.PriceExtensionType);

                        /** PriceAsset price_qualifier. */
                        public price_qualifier: (google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier|keyof typeof google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier);

                        /** PriceAsset language_code. */
                        public language_code: string;

                        /** PriceAsset price_offerings. */
                        public price_offerings: google.ads.googleads.v23.common.IPriceOffering[];

                        /**
                         * Creates a new PriceAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPriceAsset): google.ads.googleads.v23.common.PriceAsset;

                        /**
                         * Encodes the specified PriceAsset message. Does not implicitly {@link google.ads.googleads.v23.common.PriceAsset.verify|verify} messages.
                         * @param message PriceAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPriceAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PriceAsset.verify|verify} messages.
                         * @param message PriceAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPriceAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PriceOffering. */
                    interface IPriceOffering {

                        /** PriceOffering header */
                        header?: (string|null);

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

                        /** PriceOffering price */
                        price?: (google.ads.googleads.v23.common.IMoney|null);

                        /** PriceOffering unit */
                        unit?: (google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit|keyof typeof google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit|null);

                        /** PriceOffering final_url */
                        final_url?: (string|null);

                        /** PriceOffering final_mobile_url */
                        final_mobile_url?: (string|null);
                    }

                    /** Represents a PriceOffering. */
                    class PriceOffering implements IPriceOffering {

                        /**
                         * Constructs a new PriceOffering.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPriceOffering);

                        /** PriceOffering header. */
                        public header: string;

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

                        /** PriceOffering price. */
                        public price?: (google.ads.googleads.v23.common.IMoney|null);

                        /** PriceOffering unit. */
                        public unit: (google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit|keyof typeof google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit);

                        /** PriceOffering final_url. */
                        public final_url: string;

                        /** PriceOffering final_mobile_url. */
                        public final_mobile_url: string;

                        /**
                         * Creates a new PriceOffering instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceOffering instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPriceOffering): google.ads.googleads.v23.common.PriceOffering;

                        /**
                         * Encodes the specified PriceOffering message. Does not implicitly {@link google.ads.googleads.v23.common.PriceOffering.verify|verify} messages.
                         * @param message PriceOffering message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPriceOffering, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceOffering message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PriceOffering.verify|verify} messages.
                         * @param message PriceOffering message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPriceOffering, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a CallToActionAsset. */
                    interface ICallToActionAsset {

                        /** CallToActionAsset call_to_action */
                        call_to_action?: (google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType|keyof typeof google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType|null);
                    }

                    /** Represents a CallToActionAsset. */
                    class CallToActionAsset implements ICallToActionAsset {

                        /**
                         * Constructs a new CallToActionAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICallToActionAsset);

                        /** CallToActionAsset call_to_action. */
                        public call_to_action: (google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType|keyof typeof google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType);

                        /**
                         * Creates a new CallToActionAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallToActionAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICallToActionAsset): google.ads.googleads.v23.common.CallToActionAsset;

                        /**
                         * Encodes the specified CallToActionAsset message. Does not implicitly {@link google.ads.googleads.v23.common.CallToActionAsset.verify|verify} messages.
                         * @param message CallToActionAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICallToActionAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallToActionAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CallToActionAsset.verify|verify} messages.
                         * @param message CallToActionAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICallToActionAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicRealEstateAsset. */
                    interface IDynamicRealEstateAsset {

                        /** DynamicRealEstateAsset listing_id */
                        listing_id?: (string|null);

                        /** DynamicRealEstateAsset listing_name */
                        listing_name?: (string|null);

                        /** DynamicRealEstateAsset city_name */
                        city_name?: (string|null);

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

                        /** DynamicRealEstateAsset address */
                        address?: (string|null);

                        /** DynamicRealEstateAsset price */
                        price?: (string|null);

                        /** DynamicRealEstateAsset image_url */
                        image_url?: (string|null);

                        /** DynamicRealEstateAsset property_type */
                        property_type?: (string|null);

                        /** DynamicRealEstateAsset listing_type */
                        listing_type?: (string|null);

                        /** DynamicRealEstateAsset contextual_keywords */
                        contextual_keywords?: (string[]|null);

                        /** DynamicRealEstateAsset formatted_price */
                        formatted_price?: (string|null);

                        /** DynamicRealEstateAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicRealEstateAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicRealEstateAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);

                        /** DynamicRealEstateAsset similar_listing_ids */
                        similar_listing_ids?: (string[]|null);
                    }

                    /** Represents a DynamicRealEstateAsset. */
                    class DynamicRealEstateAsset implements IDynamicRealEstateAsset {

                        /**
                         * Constructs a new DynamicRealEstateAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicRealEstateAsset);

                        /** DynamicRealEstateAsset listing_id. */
                        public listing_id: string;

                        /** DynamicRealEstateAsset listing_name. */
                        public listing_name: string;

                        /** DynamicRealEstateAsset city_name. */
                        public city_name: string;

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

                        /** DynamicRealEstateAsset address. */
                        public address: string;

                        /** DynamicRealEstateAsset price. */
                        public price: string;

                        /** DynamicRealEstateAsset image_url. */
                        public image_url: string;

                        /** DynamicRealEstateAsset property_type. */
                        public property_type: string;

                        /** DynamicRealEstateAsset listing_type. */
                        public listing_type: string;

                        /** DynamicRealEstateAsset contextual_keywords. */
                        public contextual_keywords: string[];

                        /** DynamicRealEstateAsset formatted_price. */
                        public formatted_price: string;

                        /** DynamicRealEstateAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicRealEstateAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicRealEstateAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /** DynamicRealEstateAsset similar_listing_ids. */
                        public similar_listing_ids: string[];

                        /**
                         * Creates a new DynamicRealEstateAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicRealEstateAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicRealEstateAsset): google.ads.googleads.v23.common.DynamicRealEstateAsset;

                        /**
                         * Encodes the specified DynamicRealEstateAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicRealEstateAsset.verify|verify} messages.
                         * @param message DynamicRealEstateAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicRealEstateAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicRealEstateAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicRealEstateAsset.verify|verify} messages.
                         * @param message DynamicRealEstateAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicRealEstateAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicCustomAsset. */
                    interface IDynamicCustomAsset {

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

                        /** DynamicCustomAsset id2 */
                        id2?: (string|null);

                        /** DynamicCustomAsset item_title */
                        item_title?: (string|null);

                        /** DynamicCustomAsset item_subtitle */
                        item_subtitle?: (string|null);

                        /** DynamicCustomAsset item_description */
                        item_description?: (string|null);

                        /** DynamicCustomAsset item_address */
                        item_address?: (string|null);

                        /** DynamicCustomAsset item_category */
                        item_category?: (string|null);

                        /** DynamicCustomAsset price */
                        price?: (string|null);

                        /** DynamicCustomAsset sale_price */
                        sale_price?: (string|null);

                        /** DynamicCustomAsset formatted_price */
                        formatted_price?: (string|null);

                        /** DynamicCustomAsset formatted_sale_price */
                        formatted_sale_price?: (string|null);

                        /** DynamicCustomAsset image_url */
                        image_url?: (string|null);

                        /** DynamicCustomAsset contextual_keywords */
                        contextual_keywords?: (string[]|null);

                        /** DynamicCustomAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicCustomAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicCustomAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);

                        /** DynamicCustomAsset similar_ids */
                        similar_ids?: (string[]|null);
                    }

                    /** Represents a DynamicCustomAsset. */
                    class DynamicCustomAsset implements IDynamicCustomAsset {

                        /**
                         * Constructs a new DynamicCustomAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicCustomAsset);

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

                        /** DynamicCustomAsset id2. */
                        public id2: string;

                        /** DynamicCustomAsset item_title. */
                        public item_title: string;

                        /** DynamicCustomAsset item_subtitle. */
                        public item_subtitle: string;

                        /** DynamicCustomAsset item_description. */
                        public item_description: string;

                        /** DynamicCustomAsset item_address. */
                        public item_address: string;

                        /** DynamicCustomAsset item_category. */
                        public item_category: string;

                        /** DynamicCustomAsset price. */
                        public price: string;

                        /** DynamicCustomAsset sale_price. */
                        public sale_price: string;

                        /** DynamicCustomAsset formatted_price. */
                        public formatted_price: string;

                        /** DynamicCustomAsset formatted_sale_price. */
                        public formatted_sale_price: string;

                        /** DynamicCustomAsset image_url. */
                        public image_url: string;

                        /** DynamicCustomAsset contextual_keywords. */
                        public contextual_keywords: string[];

                        /** DynamicCustomAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicCustomAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicCustomAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /** DynamicCustomAsset similar_ids. */
                        public similar_ids: string[];

                        /**
                         * Creates a new DynamicCustomAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicCustomAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicCustomAsset): google.ads.googleads.v23.common.DynamicCustomAsset;

                        /**
                         * Encodes the specified DynamicCustomAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicCustomAsset.verify|verify} messages.
                         * @param message DynamicCustomAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicCustomAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicCustomAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicCustomAsset.verify|verify} messages.
                         * @param message DynamicCustomAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicCustomAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicHotelsAndRentalsAsset. */
                    interface IDynamicHotelsAndRentalsAsset {

                        /** DynamicHotelsAndRentalsAsset property_id */
                        property_id?: (string|null);

                        /** DynamicHotelsAndRentalsAsset property_name */
                        property_name?: (string|null);

                        /** DynamicHotelsAndRentalsAsset image_url */
                        image_url?: (string|null);

                        /** DynamicHotelsAndRentalsAsset destination_name */
                        destination_name?: (string|null);

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

                        /** DynamicHotelsAndRentalsAsset price */
                        price?: (string|null);

                        /** DynamicHotelsAndRentalsAsset sale_price */
                        sale_price?: (string|null);

                        /** DynamicHotelsAndRentalsAsset star_rating */
                        star_rating?: (number|null);

                        /** DynamicHotelsAndRentalsAsset category */
                        category?: (string|null);

                        /** DynamicHotelsAndRentalsAsset contextual_keywords */
                        contextual_keywords?: (string[]|null);

                        /** DynamicHotelsAndRentalsAsset address */
                        address?: (string|null);

                        /** DynamicHotelsAndRentalsAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicHotelsAndRentalsAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicHotelsAndRentalsAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);

                        /** DynamicHotelsAndRentalsAsset formatted_price */
                        formatted_price?: (string|null);

                        /** DynamicHotelsAndRentalsAsset formatted_sale_price */
                        formatted_sale_price?: (string|null);

                        /** DynamicHotelsAndRentalsAsset similar_property_ids */
                        similar_property_ids?: (string[]|null);
                    }

                    /** Represents a DynamicHotelsAndRentalsAsset. */
                    class DynamicHotelsAndRentalsAsset implements IDynamicHotelsAndRentalsAsset {

                        /**
                         * Constructs a new DynamicHotelsAndRentalsAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicHotelsAndRentalsAsset);

                        /** DynamicHotelsAndRentalsAsset property_id. */
                        public property_id: string;

                        /** DynamicHotelsAndRentalsAsset property_name. */
                        public property_name: string;

                        /** DynamicHotelsAndRentalsAsset image_url. */
                        public image_url: string;

                        /** DynamicHotelsAndRentalsAsset destination_name. */
                        public destination_name: string;

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

                        /** DynamicHotelsAndRentalsAsset price. */
                        public price: string;

                        /** DynamicHotelsAndRentalsAsset sale_price. */
                        public sale_price: string;

                        /** DynamicHotelsAndRentalsAsset star_rating. */
                        public star_rating: number;

                        /** DynamicHotelsAndRentalsAsset category. */
                        public category: string;

                        /** DynamicHotelsAndRentalsAsset contextual_keywords. */
                        public contextual_keywords: string[];

                        /** DynamicHotelsAndRentalsAsset address. */
                        public address: string;

                        /** DynamicHotelsAndRentalsAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicHotelsAndRentalsAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicHotelsAndRentalsAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /** DynamicHotelsAndRentalsAsset formatted_price. */
                        public formatted_price: string;

                        /** DynamicHotelsAndRentalsAsset formatted_sale_price. */
                        public formatted_sale_price: string;

                        /** DynamicHotelsAndRentalsAsset similar_property_ids. */
                        public similar_property_ids: string[];

                        /**
                         * Creates a new DynamicHotelsAndRentalsAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicHotelsAndRentalsAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicHotelsAndRentalsAsset): google.ads.googleads.v23.common.DynamicHotelsAndRentalsAsset;

                        /**
                         * Encodes the specified DynamicHotelsAndRentalsAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicHotelsAndRentalsAsset.verify|verify} messages.
                         * @param message DynamicHotelsAndRentalsAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicHotelsAndRentalsAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicHotelsAndRentalsAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicHotelsAndRentalsAsset.verify|verify} messages.
                         * @param message DynamicHotelsAndRentalsAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicHotelsAndRentalsAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicFlightsAsset. */
                    interface IDynamicFlightsAsset {

                        /** DynamicFlightsAsset destination_id */
                        destination_id?: (string|null);

                        /** DynamicFlightsAsset origin_id */
                        origin_id?: (string|null);

                        /** DynamicFlightsAsset flight_description */
                        flight_description?: (string|null);

                        /** DynamicFlightsAsset image_url */
                        image_url?: (string|null);

                        /** DynamicFlightsAsset destination_name */
                        destination_name?: (string|null);

                        /** DynamicFlightsAsset origin_name */
                        origin_name?: (string|null);

                        /** DynamicFlightsAsset flight_price */
                        flight_price?: (string|null);

                        /** DynamicFlightsAsset flight_sale_price */
                        flight_sale_price?: (string|null);

                        /** DynamicFlightsAsset formatted_price */
                        formatted_price?: (string|null);

                        /** DynamicFlightsAsset formatted_sale_price */
                        formatted_sale_price?: (string|null);

                        /** DynamicFlightsAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicFlightsAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicFlightsAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);

                        /** DynamicFlightsAsset similar_destination_ids */
                        similar_destination_ids?: (string[]|null);

                        /** DynamicFlightsAsset custom_mapping */
                        custom_mapping?: (string|null);
                    }

                    /** Represents a DynamicFlightsAsset. */
                    class DynamicFlightsAsset implements IDynamicFlightsAsset {

                        /**
                         * Constructs a new DynamicFlightsAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicFlightsAsset);

                        /** DynamicFlightsAsset destination_id. */
                        public destination_id: string;

                        /** DynamicFlightsAsset origin_id. */
                        public origin_id: string;

                        /** DynamicFlightsAsset flight_description. */
                        public flight_description: string;

                        /** DynamicFlightsAsset image_url. */
                        public image_url: string;

                        /** DynamicFlightsAsset destination_name. */
                        public destination_name: string;

                        /** DynamicFlightsAsset origin_name. */
                        public origin_name: string;

                        /** DynamicFlightsAsset flight_price. */
                        public flight_price: string;

                        /** DynamicFlightsAsset flight_sale_price. */
                        public flight_sale_price: string;

                        /** DynamicFlightsAsset formatted_price. */
                        public formatted_price: string;

                        /** DynamicFlightsAsset formatted_sale_price. */
                        public formatted_sale_price: string;

                        /** DynamicFlightsAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicFlightsAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicFlightsAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /** DynamicFlightsAsset similar_destination_ids. */
                        public similar_destination_ids: string[];

                        /** DynamicFlightsAsset custom_mapping. */
                        public custom_mapping: string;

                        /**
                         * Creates a new DynamicFlightsAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicFlightsAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicFlightsAsset): google.ads.googleads.v23.common.DynamicFlightsAsset;

                        /**
                         * Encodes the specified DynamicFlightsAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicFlightsAsset.verify|verify} messages.
                         * @param message DynamicFlightsAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicFlightsAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicFlightsAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicFlightsAsset.verify|verify} messages.
                         * @param message DynamicFlightsAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicFlightsAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DemandGenCarouselCardAsset. */
                    interface IDemandGenCarouselCardAsset {

                        /** DemandGenCarouselCardAsset marketing_image_asset */
                        marketing_image_asset?: (string|null);

                        /** DemandGenCarouselCardAsset square_marketing_image_asset */
                        square_marketing_image_asset?: (string|null);

                        /** DemandGenCarouselCardAsset portrait_marketing_image_asset */
                        portrait_marketing_image_asset?: (string|null);

                        /** DemandGenCarouselCardAsset headline */
                        headline?: (string|null);

                        /** DemandGenCarouselCardAsset call_to_action_text */
                        call_to_action_text?: (string|null);
                    }

                    /** Represents a DemandGenCarouselCardAsset. */
                    class DemandGenCarouselCardAsset implements IDemandGenCarouselCardAsset {

                        /**
                         * Constructs a new DemandGenCarouselCardAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDemandGenCarouselCardAsset);

                        /** DemandGenCarouselCardAsset marketing_image_asset. */
                        public marketing_image_asset: string;

                        /** DemandGenCarouselCardAsset square_marketing_image_asset. */
                        public square_marketing_image_asset: string;

                        /** DemandGenCarouselCardAsset portrait_marketing_image_asset. */
                        public portrait_marketing_image_asset: string;

                        /** DemandGenCarouselCardAsset headline. */
                        public headline: string;

                        /** DemandGenCarouselCardAsset call_to_action_text. */
                        public call_to_action_text: string;

                        /**
                         * Creates a new DemandGenCarouselCardAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DemandGenCarouselCardAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDemandGenCarouselCardAsset): google.ads.googleads.v23.common.DemandGenCarouselCardAsset;

                        /**
                         * Encodes the specified DemandGenCarouselCardAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenCarouselCardAsset.verify|verify} messages.
                         * @param message DemandGenCarouselCardAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDemandGenCarouselCardAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DemandGenCarouselCardAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DemandGenCarouselCardAsset.verify|verify} messages.
                         * @param message DemandGenCarouselCardAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDemandGenCarouselCardAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicTravelAsset. */
                    interface IDynamicTravelAsset {

                        /** DynamicTravelAsset destination_id */
                        destination_id?: (string|null);

                        /** DynamicTravelAsset origin_id */
                        origin_id?: (string|null);

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

                        /** DynamicTravelAsset destination_name */
                        destination_name?: (string|null);

                        /** DynamicTravelAsset destination_address */
                        destination_address?: (string|null);

                        /** DynamicTravelAsset origin_name */
                        origin_name?: (string|null);

                        /** DynamicTravelAsset price */
                        price?: (string|null);

                        /** DynamicTravelAsset sale_price */
                        sale_price?: (string|null);

                        /** DynamicTravelAsset formatted_price */
                        formatted_price?: (string|null);

                        /** DynamicTravelAsset formatted_sale_price */
                        formatted_sale_price?: (string|null);

                        /** DynamicTravelAsset category */
                        category?: (string|null);

                        /** DynamicTravelAsset contextual_keywords */
                        contextual_keywords?: (string[]|null);

                        /** DynamicTravelAsset similar_destination_ids */
                        similar_destination_ids?: (string[]|null);

                        /** DynamicTravelAsset image_url */
                        image_url?: (string|null);

                        /** DynamicTravelAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicTravelAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicTravelAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);
                    }

                    /** Represents a DynamicTravelAsset. */
                    class DynamicTravelAsset implements IDynamicTravelAsset {

                        /**
                         * Constructs a new DynamicTravelAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicTravelAsset);

                        /** DynamicTravelAsset destination_id. */
                        public destination_id: string;

                        /** DynamicTravelAsset origin_id. */
                        public origin_id: string;

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

                        /** DynamicTravelAsset destination_name. */
                        public destination_name: string;

                        /** DynamicTravelAsset destination_address. */
                        public destination_address: string;

                        /** DynamicTravelAsset origin_name. */
                        public origin_name: string;

                        /** DynamicTravelAsset price. */
                        public price: string;

                        /** DynamicTravelAsset sale_price. */
                        public sale_price: string;

                        /** DynamicTravelAsset formatted_price. */
                        public formatted_price: string;

                        /** DynamicTravelAsset formatted_sale_price. */
                        public formatted_sale_price: string;

                        /** DynamicTravelAsset category. */
                        public category: string;

                        /** DynamicTravelAsset contextual_keywords. */
                        public contextual_keywords: string[];

                        /** DynamicTravelAsset similar_destination_ids. */
                        public similar_destination_ids: string[];

                        /** DynamicTravelAsset image_url. */
                        public image_url: string;

                        /** DynamicTravelAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicTravelAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicTravelAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /**
                         * Creates a new DynamicTravelAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicTravelAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicTravelAsset): google.ads.googleads.v23.common.DynamicTravelAsset;

                        /**
                         * Encodes the specified DynamicTravelAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicTravelAsset.verify|verify} messages.
                         * @param message DynamicTravelAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicTravelAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicTravelAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicTravelAsset.verify|verify} messages.
                         * @param message DynamicTravelAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicTravelAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicLocalAsset. */
                    interface IDynamicLocalAsset {

                        /** DynamicLocalAsset deal_id */
                        deal_id?: (string|null);

                        /** DynamicLocalAsset deal_name */
                        deal_name?: (string|null);

                        /** DynamicLocalAsset subtitle */
                        subtitle?: (string|null);

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

                        /** DynamicLocalAsset price */
                        price?: (string|null);

                        /** DynamicLocalAsset sale_price */
                        sale_price?: (string|null);

                        /** DynamicLocalAsset image_url */
                        image_url?: (string|null);

                        /** DynamicLocalAsset address */
                        address?: (string|null);

                        /** DynamicLocalAsset category */
                        category?: (string|null);

                        /** DynamicLocalAsset contextual_keywords */
                        contextual_keywords?: (string[]|null);

                        /** DynamicLocalAsset formatted_price */
                        formatted_price?: (string|null);

                        /** DynamicLocalAsset formatted_sale_price */
                        formatted_sale_price?: (string|null);

                        /** DynamicLocalAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicLocalAsset similar_deal_ids */
                        similar_deal_ids?: (string[]|null);

                        /** DynamicLocalAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicLocalAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);
                    }

                    /** Represents a DynamicLocalAsset. */
                    class DynamicLocalAsset implements IDynamicLocalAsset {

                        /**
                         * Constructs a new DynamicLocalAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicLocalAsset);

                        /** DynamicLocalAsset deal_id. */
                        public deal_id: string;

                        /** DynamicLocalAsset deal_name. */
                        public deal_name: string;

                        /** DynamicLocalAsset subtitle. */
                        public subtitle: string;

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

                        /** DynamicLocalAsset price. */
                        public price: string;

                        /** DynamicLocalAsset sale_price. */
                        public sale_price: string;

                        /** DynamicLocalAsset image_url. */
                        public image_url: string;

                        /** DynamicLocalAsset address. */
                        public address: string;

                        /** DynamicLocalAsset category. */
                        public category: string;

                        /** DynamicLocalAsset contextual_keywords. */
                        public contextual_keywords: string[];

                        /** DynamicLocalAsset formatted_price. */
                        public formatted_price: string;

                        /** DynamicLocalAsset formatted_sale_price. */
                        public formatted_sale_price: string;

                        /** DynamicLocalAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicLocalAsset similar_deal_ids. */
                        public similar_deal_ids: string[];

                        /** DynamicLocalAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicLocalAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /**
                         * Creates a new DynamicLocalAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicLocalAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicLocalAsset): google.ads.googleads.v23.common.DynamicLocalAsset;

                        /**
                         * Encodes the specified DynamicLocalAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicLocalAsset.verify|verify} messages.
                         * @param message DynamicLocalAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicLocalAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicLocalAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicLocalAsset.verify|verify} messages.
                         * @param message DynamicLocalAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicLocalAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a DynamicJobsAsset. */
                    interface IDynamicJobsAsset {

                        /** DynamicJobsAsset job_id */
                        job_id?: (string|null);

                        /** DynamicJobsAsset location_id */
                        location_id?: (string|null);

                        /** DynamicJobsAsset job_title */
                        job_title?: (string|null);

                        /** DynamicJobsAsset job_subtitle */
                        job_subtitle?: (string|null);

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

                        /** DynamicJobsAsset image_url */
                        image_url?: (string|null);

                        /** DynamicJobsAsset job_category */
                        job_category?: (string|null);

                        /** DynamicJobsAsset contextual_keywords */
                        contextual_keywords?: (string[]|null);

                        /** DynamicJobsAsset address */
                        address?: (string|null);

                        /** DynamicJobsAsset salary */
                        salary?: (string|null);

                        /** DynamicJobsAsset android_app_link */
                        android_app_link?: (string|null);

                        /** DynamicJobsAsset similar_job_ids */
                        similar_job_ids?: (string[]|null);

                        /** DynamicJobsAsset ios_app_link */
                        ios_app_link?: (string|null);

                        /** DynamicJobsAsset ios_app_store_id */
                        ios_app_store_id?: (number|null);
                    }

                    /** Represents a DynamicJobsAsset. */
                    class DynamicJobsAsset implements IDynamicJobsAsset {

                        /**
                         * Constructs a new DynamicJobsAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDynamicJobsAsset);

                        /** DynamicJobsAsset job_id. */
                        public job_id: string;

                        /** DynamicJobsAsset location_id. */
                        public location_id: string;

                        /** DynamicJobsAsset job_title. */
                        public job_title: string;

                        /** DynamicJobsAsset job_subtitle. */
                        public job_subtitle: string;

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

                        /** DynamicJobsAsset image_url. */
                        public image_url: string;

                        /** DynamicJobsAsset job_category. */
                        public job_category: string;

                        /** DynamicJobsAsset contextual_keywords. */
                        public contextual_keywords: string[];

                        /** DynamicJobsAsset address. */
                        public address: string;

                        /** DynamicJobsAsset salary. */
                        public salary: string;

                        /** DynamicJobsAsset android_app_link. */
                        public android_app_link: string;

                        /** DynamicJobsAsset similar_job_ids. */
                        public similar_job_ids: string[];

                        /** DynamicJobsAsset ios_app_link. */
                        public ios_app_link: string;

                        /** DynamicJobsAsset ios_app_store_id. */
                        public ios_app_store_id: number;

                        /**
                         * Creates a new DynamicJobsAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicJobsAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDynamicJobsAsset): google.ads.googleads.v23.common.DynamicJobsAsset;

                        /**
                         * Encodes the specified DynamicJobsAsset message. Does not implicitly {@link google.ads.googleads.v23.common.DynamicJobsAsset.verify|verify} messages.
                         * @param message DynamicJobsAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDynamicJobsAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicJobsAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DynamicJobsAsset.verify|verify} messages.
                         * @param message DynamicJobsAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDynamicJobsAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a LocationAsset. */
                    interface ILocationAsset {

                        /** LocationAsset place_id */
                        place_id?: (string|null);

                        /** LocationAsset business_profile_locations */
                        business_profile_locations?: (google.ads.googleads.v23.common.IBusinessProfileLocation[]|null);

                        /** LocationAsset location_ownership_type */
                        location_ownership_type?: (google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType|keyof typeof google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType|null);
                    }

                    /** Represents a LocationAsset. */
                    class LocationAsset implements ILocationAsset {

                        /**
                         * Constructs a new LocationAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocationAsset);

                        /** LocationAsset place_id. */
                        public place_id: string;

                        /** LocationAsset business_profile_locations. */
                        public business_profile_locations: google.ads.googleads.v23.common.IBusinessProfileLocation[];

                        /** LocationAsset location_ownership_type. */
                        public location_ownership_type: (google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType|keyof typeof google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.LocationOwnershipType);

                        /**
                         * Creates a new LocationAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocationAsset): google.ads.googleads.v23.common.LocationAsset;

                        /**
                         * Encodes the specified LocationAsset message. Does not implicitly {@link google.ads.googleads.v23.common.LocationAsset.verify|verify} messages.
                         * @param message LocationAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocationAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocationAsset.verify|verify} messages.
                         * @param message LocationAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocationAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a BusinessProfileLocation. */
                    interface IBusinessProfileLocation {

                        /** BusinessProfileLocation labels */
                        labels?: (string[]|null);

                        /** BusinessProfileLocation store_code */
                        store_code?: (string|null);

                        /** BusinessProfileLocation listing_id */
                        listing_id?: (number|null);
                    }

                    /** Represents a BusinessProfileLocation. */
                    class BusinessProfileLocation implements IBusinessProfileLocation {

                        /**
                         * Constructs a new BusinessProfileLocation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBusinessProfileLocation);

                        /** BusinessProfileLocation labels. */
                        public labels: string[];

                        /** BusinessProfileLocation store_code. */
                        public store_code: string;

                        /** BusinessProfileLocation listing_id. */
                        public listing_id: number;

                        /**
                         * Creates a new BusinessProfileLocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessProfileLocation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBusinessProfileLocation): google.ads.googleads.v23.common.BusinessProfileLocation;

                        /**
                         * Encodes the specified BusinessProfileLocation message. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileLocation.verify|verify} messages.
                         * @param message BusinessProfileLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBusinessProfileLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessProfileLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BusinessProfileLocation.verify|verify} messages.
                         * @param message BusinessProfileLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBusinessProfileLocation, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a HotelPropertyAsset. */
                    interface IHotelPropertyAsset {

                        /** HotelPropertyAsset place_id */
                        place_id?: (string|null);

                        /** HotelPropertyAsset hotel_address */
                        hotel_address?: (string|null);

                        /** HotelPropertyAsset hotel_name */
                        hotel_name?: (string|null);
                    }

                    /** Represents a HotelPropertyAsset. */
                    class HotelPropertyAsset implements IHotelPropertyAsset {

                        /**
                         * Constructs a new HotelPropertyAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelPropertyAsset);

                        /** HotelPropertyAsset place_id. */
                        public place_id: string;

                        /** HotelPropertyAsset hotel_address. */
                        public hotel_address: string;

                        /** HotelPropertyAsset hotel_name. */
                        public hotel_name: string;

                        /**
                         * Creates a new HotelPropertyAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelPropertyAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelPropertyAsset): google.ads.googleads.v23.common.HotelPropertyAsset;

                        /**
                         * Encodes the specified HotelPropertyAsset message. Does not implicitly {@link google.ads.googleads.v23.common.HotelPropertyAsset.verify|verify} messages.
                         * @param message HotelPropertyAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelPropertyAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelPropertyAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelPropertyAsset.verify|verify} messages.
                         * @param message HotelPropertyAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelPropertyAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a BusinessMessageAsset. */
                    interface IBusinessMessageAsset {

                        /** BusinessMessageAsset message_provider */
                        message_provider?: (google.ads.googleads.v23.enums.BusinessMessageProviderEnum.BusinessMessageProvider|keyof typeof google.ads.googleads.v23.enums.BusinessMessageProviderEnum.BusinessMessageProvider|null);

                        /** BusinessMessageAsset starter_message */
                        starter_message?: (string|null);

                        /** BusinessMessageAsset call_to_action */
                        call_to_action?: (google.ads.googleads.v23.common.IBusinessMessageCallToActionInfo|null);

                        /** BusinessMessageAsset whatsapp_info */
                        whatsapp_info?: (google.ads.googleads.v23.common.IWhatsappBusinessMessageInfo|null);

                        /** BusinessMessageAsset facebook_messenger_info */
                        facebook_messenger_info?: (google.ads.googleads.v23.common.IFacebookMessengerBusinessMessageInfo|null);

                        /** BusinessMessageAsset zalo_info */
                        zalo_info?: (google.ads.googleads.v23.common.IZaloBusinessMessageInfo|null);
                    }

                    /** Represents a BusinessMessageAsset. */
                    class BusinessMessageAsset implements IBusinessMessageAsset {

                        /**
                         * Constructs a new BusinessMessageAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBusinessMessageAsset);

                        /** BusinessMessageAsset message_provider. */
                        public message_provider: (google.ads.googleads.v23.enums.BusinessMessageProviderEnum.BusinessMessageProvider|keyof typeof google.ads.googleads.v23.enums.BusinessMessageProviderEnum.BusinessMessageProvider);

                        /** BusinessMessageAsset starter_message. */
                        public starter_message: string;

                        /** BusinessMessageAsset call_to_action. */
                        public call_to_action?: (google.ads.googleads.v23.common.IBusinessMessageCallToActionInfo|null);

                        /** BusinessMessageAsset whatsapp_info. */
                        public whatsapp_info?: (google.ads.googleads.v23.common.IWhatsappBusinessMessageInfo|null);

                        /** BusinessMessageAsset facebook_messenger_info. */
                        public facebook_messenger_info?: (google.ads.googleads.v23.common.IFacebookMessengerBusinessMessageInfo|null);

                        /** BusinessMessageAsset zalo_info. */
                        public zalo_info?: (google.ads.googleads.v23.common.IZaloBusinessMessageInfo|null);

                        /** BusinessMessageAsset message_provider_data. */
                        public message_provider_data?: ("whatsapp_info"|"facebook_messenger_info"|"zalo_info");

                        /**
                         * Creates a new BusinessMessageAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessMessageAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBusinessMessageAsset): google.ads.googleads.v23.common.BusinessMessageAsset;

                        /**
                         * Encodes the specified BusinessMessageAsset message. Does not implicitly {@link google.ads.googleads.v23.common.BusinessMessageAsset.verify|verify} messages.
                         * @param message BusinessMessageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBusinessMessageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessMessageAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BusinessMessageAsset.verify|verify} messages.
                         * @param message BusinessMessageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBusinessMessageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a WhatsappBusinessMessageInfo. */
                    interface IWhatsappBusinessMessageInfo {

                        /** WhatsappBusinessMessageInfo country_code */
                        country_code?: (string|null);

                        /** WhatsappBusinessMessageInfo phone_number */
                        phone_number?: (string|null);
                    }

                    /** Represents a WhatsappBusinessMessageInfo. */
                    class WhatsappBusinessMessageInfo implements IWhatsappBusinessMessageInfo {

                        /**
                         * Constructs a new WhatsappBusinessMessageInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IWhatsappBusinessMessageInfo);

                        /** WhatsappBusinessMessageInfo country_code. */
                        public country_code: string;

                        /** WhatsappBusinessMessageInfo phone_number. */
                        public phone_number: string;

                        /**
                         * Creates a new WhatsappBusinessMessageInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WhatsappBusinessMessageInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IWhatsappBusinessMessageInfo): google.ads.googleads.v23.common.WhatsappBusinessMessageInfo;

                        /**
                         * Encodes the specified WhatsappBusinessMessageInfo message. Does not implicitly {@link google.ads.googleads.v23.common.WhatsappBusinessMessageInfo.verify|verify} messages.
                         * @param message WhatsappBusinessMessageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IWhatsappBusinessMessageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WhatsappBusinessMessageInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.WhatsappBusinessMessageInfo.verify|verify} messages.
                         * @param message WhatsappBusinessMessageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IWhatsappBusinessMessageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a FacebookMessengerBusinessMessageInfo. */
                    interface IFacebookMessengerBusinessMessageInfo {

                        /** FacebookMessengerBusinessMessageInfo page_name */
                        page_name?: (string|null);
                    }

                    /** Represents a FacebookMessengerBusinessMessageInfo. */
                    class FacebookMessengerBusinessMessageInfo implements IFacebookMessengerBusinessMessageInfo {

                        /**
                         * Constructs a new FacebookMessengerBusinessMessageInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFacebookMessengerBusinessMessageInfo);

                        /** FacebookMessengerBusinessMessageInfo page_name. */
                        public page_name: string;

                        /**
                         * Creates a new FacebookMessengerBusinessMessageInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FacebookMessengerBusinessMessageInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFacebookMessengerBusinessMessageInfo): google.ads.googleads.v23.common.FacebookMessengerBusinessMessageInfo;

                        /**
                         * Encodes the specified FacebookMessengerBusinessMessageInfo message. Does not implicitly {@link google.ads.googleads.v23.common.FacebookMessengerBusinessMessageInfo.verify|verify} messages.
                         * @param message FacebookMessengerBusinessMessageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFacebookMessengerBusinessMessageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FacebookMessengerBusinessMessageInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FacebookMessengerBusinessMessageInfo.verify|verify} messages.
                         * @param message FacebookMessengerBusinessMessageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFacebookMessengerBusinessMessageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a ZaloBusinessMessageInfo. */
                    interface IZaloBusinessMessageInfo {

                        /** ZaloBusinessMessageInfo oa_id */
                        oa_id?: (number|null);

                        /** ZaloBusinessMessageInfo custom_name */
                        custom_name?: (string|null);
                    }

                    /** Represents a ZaloBusinessMessageInfo. */
                    class ZaloBusinessMessageInfo implements IZaloBusinessMessageInfo {

                        /**
                         * Constructs a new ZaloBusinessMessageInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IZaloBusinessMessageInfo);

                        /** ZaloBusinessMessageInfo oa_id. */
                        public oa_id?: (number|null);

                        /** ZaloBusinessMessageInfo custom_name. */
                        public custom_name?: (string|null);

                        /** ZaloBusinessMessageInfo zalo_id. */
                        public zalo_id?: ("oa_id"|"custom_name");

                        /**
                         * Creates a new ZaloBusinessMessageInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ZaloBusinessMessageInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IZaloBusinessMessageInfo): google.ads.googleads.v23.common.ZaloBusinessMessageInfo;

                        /**
                         * Encodes the specified ZaloBusinessMessageInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ZaloBusinessMessageInfo.verify|verify} messages.
                         * @param message ZaloBusinessMessageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IZaloBusinessMessageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ZaloBusinessMessageInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ZaloBusinessMessageInfo.verify|verify} messages.
                         * @param message ZaloBusinessMessageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IZaloBusinessMessageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a BusinessMessageCallToActionInfo. */
                    interface IBusinessMessageCallToActionInfo {

                        /** BusinessMessageCallToActionInfo call_to_action_selection */
                        call_to_action_selection?: (google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum.BusinessMessageCallToActionType|keyof typeof google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum.BusinessMessageCallToActionType|null);

                        /** BusinessMessageCallToActionInfo call_to_action_description */
                        call_to_action_description?: (string|null);
                    }

                    /** Represents a BusinessMessageCallToActionInfo. */
                    class BusinessMessageCallToActionInfo implements IBusinessMessageCallToActionInfo {

                        /**
                         * Constructs a new BusinessMessageCallToActionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBusinessMessageCallToActionInfo);

                        /** BusinessMessageCallToActionInfo call_to_action_selection. */
                        public call_to_action_selection: (google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum.BusinessMessageCallToActionType|keyof typeof google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum.BusinessMessageCallToActionType);

                        /** BusinessMessageCallToActionInfo call_to_action_description. */
                        public call_to_action_description: string;

                        /**
                         * Creates a new BusinessMessageCallToActionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessMessageCallToActionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBusinessMessageCallToActionInfo): google.ads.googleads.v23.common.BusinessMessageCallToActionInfo;

                        /**
                         * Encodes the specified BusinessMessageCallToActionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.BusinessMessageCallToActionInfo.verify|verify} messages.
                         * @param message BusinessMessageCallToActionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBusinessMessageCallToActionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessMessageCallToActionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BusinessMessageCallToActionInfo.verify|verify} messages.
                         * @param message BusinessMessageCallToActionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBusinessMessageCallToActionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of an AppDeepLinkAsset. */
                    interface IAppDeepLinkAsset {

                        /** AppDeepLinkAsset app_deep_link_uri */
                        app_deep_link_uri?: (string|null);
                    }

                    /** Represents an AppDeepLinkAsset. */
                    class AppDeepLinkAsset implements IAppDeepLinkAsset {

                        /**
                         * Constructs a new AppDeepLinkAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAppDeepLinkAsset);

                        /** AppDeepLinkAsset app_deep_link_uri. */
                        public app_deep_link_uri: string;

                        /**
                         * Creates a new AppDeepLinkAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppDeepLinkAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAppDeepLinkAsset): google.ads.googleads.v23.common.AppDeepLinkAsset;

                        /**
                         * Encodes the specified AppDeepLinkAsset message. Does not implicitly {@link google.ads.googleads.v23.common.AppDeepLinkAsset.verify|verify} messages.
                         * @param message AppDeepLinkAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAppDeepLinkAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppDeepLinkAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AppDeepLinkAsset.verify|verify} messages.
                         * @param message AppDeepLinkAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAppDeepLinkAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

                    /** Properties of a YouTubeVideoListAsset. */
                    interface IYouTubeVideoListAsset {

                        /** YouTubeVideoListAsset youtube_videos */
                        youtube_videos?: (google.ads.googleads.v23.common.IAdVideoAsset[]|null);
                    }

                    /** Represents a YouTubeVideoListAsset. */
                    class YouTubeVideoListAsset implements IYouTubeVideoListAsset {

                        /**
                         * Constructs a new YouTubeVideoListAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYouTubeVideoListAsset);

                        /** YouTubeVideoListAsset youtube_videos. */
                        public youtube_videos: google.ads.googleads.v23.common.IAdVideoAsset[];

                        /**
                         * Creates a new YouTubeVideoListAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeVideoListAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYouTubeVideoListAsset): google.ads.googleads.v23.common.YouTubeVideoListAsset;

                        /**
                         * Encodes the specified YouTubeVideoListAsset message. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeVideoListAsset.verify|verify} messages.
                         * @param message YouTubeVideoListAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYouTubeVideoListAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeVideoListAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeVideoListAsset.verify|verify} messages.
                         * @param message YouTubeVideoListAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYouTubeVideoListAsset, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a KeywordInfo. */
                    interface IKeywordInfo {

                        /** KeywordInfo text */
                        text?: (string|null);

                        /** KeywordInfo match_type */
                        match_type?: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|null);
                    }

                    /** Represents a KeywordInfo. */
                    class KeywordInfo implements IKeywordInfo {

                        /**
                         * Constructs a new KeywordInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordInfo);

                        /** KeywordInfo text. */
                        public text?: (string|null);

                        /** KeywordInfo match_type. */
                        public match_type: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType);

                        /**
                         * Creates a new KeywordInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordInfo): google.ads.googleads.v23.common.KeywordInfo;

                        /**
                         * Encodes the specified KeywordInfo message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordInfo.verify|verify} messages.
                         * @param message KeywordInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordInfo.verify|verify} messages.
                         * @param message KeywordInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a PlacementInfo. */
                    interface IPlacementInfo {

                        /** PlacementInfo url */
                        url?: (string|null);
                    }

                    /** Represents a PlacementInfo. */
                    class PlacementInfo implements IPlacementInfo {

                        /**
                         * Constructs a new PlacementInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPlacementInfo);

                        /** PlacementInfo url. */
                        public url?: (string|null);

                        /**
                         * Creates a new PlacementInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlacementInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPlacementInfo): google.ads.googleads.v23.common.PlacementInfo;

                        /**
                         * Encodes the specified PlacementInfo message. Does not implicitly {@link google.ads.googleads.v23.common.PlacementInfo.verify|verify} messages.
                         * @param message PlacementInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPlacementInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlacementInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PlacementInfo.verify|verify} messages.
                         * @param message PlacementInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPlacementInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

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

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

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

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

                    /** Properties of a NegativeKeywordListInfo. */
                    interface INegativeKeywordListInfo {

                        /** NegativeKeywordListInfo shared_set */
                        shared_set?: (string|null);
                    }

                    /** Represents a NegativeKeywordListInfo. */
                    class NegativeKeywordListInfo implements INegativeKeywordListInfo {

                        /**
                         * Constructs a new NegativeKeywordListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.INegativeKeywordListInfo);

                        /** NegativeKeywordListInfo shared_set. */
                        public shared_set?: (string|null);

                        /**
                         * Creates a new NegativeKeywordListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NegativeKeywordListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.INegativeKeywordListInfo): google.ads.googleads.v23.common.NegativeKeywordListInfo;

                        /**
                         * Encodes the specified NegativeKeywordListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.NegativeKeywordListInfo.verify|verify} messages.
                         * @param message NegativeKeywordListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.INegativeKeywordListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NegativeKeywordListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.NegativeKeywordListInfo.verify|verify} messages.
                         * @param message NegativeKeywordListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.INegativeKeywordListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

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

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

                        /**
                         * Creates a NegativeKeywordListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NegativeKeywordListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.NegativeKeywordListInfo;

                        /**
                         * Creates a plain object from a NegativeKeywordListInfo message. Also converts values to other types if specified.
                         * @param message NegativeKeywordListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.NegativeKeywordListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NegativeKeywordListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NegativeKeywordListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MobileAppCategoryInfo. */
                    interface IMobileAppCategoryInfo {

                        /** MobileAppCategoryInfo mobile_app_category_constant */
                        mobile_app_category_constant?: (string|null);
                    }

                    /** Represents a MobileAppCategoryInfo. */
                    class MobileAppCategoryInfo implements IMobileAppCategoryInfo {

                        /**
                         * Constructs a new MobileAppCategoryInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMobileAppCategoryInfo);

                        /** MobileAppCategoryInfo mobile_app_category_constant. */
                        public mobile_app_category_constant?: (string|null);

                        /**
                         * Creates a new MobileAppCategoryInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileAppCategoryInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMobileAppCategoryInfo): google.ads.googleads.v23.common.MobileAppCategoryInfo;

                        /**
                         * Encodes the specified MobileAppCategoryInfo message. Does not implicitly {@link google.ads.googleads.v23.common.MobileAppCategoryInfo.verify|verify} messages.
                         * @param message MobileAppCategoryInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMobileAppCategoryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileAppCategoryInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MobileAppCategoryInfo.verify|verify} messages.
                         * @param message MobileAppCategoryInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMobileAppCategoryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileAppCategoryInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MobileAppCategoryInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.MobileAppCategoryInfo;

                        /**
                         * Decodes a MobileAppCategoryInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MobileAppCategoryInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.MobileAppCategoryInfo;

                        /**
                         * Verifies a MobileAppCategoryInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileAppCategoryInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MobileAppCategoryInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.MobileAppCategoryInfo;

                        /**
                         * Creates a plain object from a MobileAppCategoryInfo message. Also converts values to other types if specified.
                         * @param message MobileAppCategoryInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.MobileAppCategoryInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileAppCategoryInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MobileAppCategoryInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MobileApplicationInfo. */
                    interface IMobileApplicationInfo {

                        /** MobileApplicationInfo app_id */
                        app_id?: (string|null);

                        /** MobileApplicationInfo name */
                        name?: (string|null);
                    }

                    /** Represents a MobileApplicationInfo. */
                    class MobileApplicationInfo implements IMobileApplicationInfo {

                        /**
                         * Constructs a new MobileApplicationInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMobileApplicationInfo);

                        /** MobileApplicationInfo app_id. */
                        public app_id?: (string|null);

                        /** MobileApplicationInfo name. */
                        public name?: (string|null);

                        /**
                         * Creates a new MobileApplicationInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileApplicationInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMobileApplicationInfo): google.ads.googleads.v23.common.MobileApplicationInfo;

                        /**
                         * Encodes the specified MobileApplicationInfo message. Does not implicitly {@link google.ads.googleads.v23.common.MobileApplicationInfo.verify|verify} messages.
                         * @param message MobileApplicationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMobileApplicationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileApplicationInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MobileApplicationInfo.verify|verify} messages.
                         * @param message MobileApplicationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMobileApplicationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileApplicationInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MobileApplicationInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.MobileApplicationInfo;

                        /**
                         * Decodes a MobileApplicationInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MobileApplicationInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.MobileApplicationInfo;

                        /**
                         * Verifies a MobileApplicationInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileApplicationInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MobileApplicationInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.MobileApplicationInfo;

                        /**
                         * Creates a plain object from a MobileApplicationInfo message. Also converts values to other types if specified.
                         * @param message MobileApplicationInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.MobileApplicationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileApplicationInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MobileApplicationInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocationInfo. */
                    interface ILocationInfo {

                        /** LocationInfo geo_target_constant */
                        geo_target_constant?: (string|null);
                    }

                    /** Represents a LocationInfo. */
                    class LocationInfo implements ILocationInfo {

                        /**
                         * Constructs a new LocationInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocationInfo);

                        /** LocationInfo geo_target_constant. */
                        public geo_target_constant?: (string|null);

                        /**
                         * Creates a new LocationInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocationInfo): google.ads.googleads.v23.common.LocationInfo;

                        /**
                         * Encodes the specified LocationInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LocationInfo.verify|verify} messages.
                         * @param message LocationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocationInfo.verify|verify} messages.
                         * @param message LocationInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LocationInfo;

                        /**
                         * Decodes a LocationInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LocationInfo;

                        /**
                         * Verifies a LocationInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LocationInfo;

                        /**
                         * Creates a plain object from a LocationInfo message. Also converts values to other types if specified.
                         * @param message LocationInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LocationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeviceInfo. */
                    interface IDeviceInfo {

                        /** DeviceInfo type */
                        type?: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device|null);
                    }

                    /** Represents a DeviceInfo. */
                    class DeviceInfo implements IDeviceInfo {

                        /**
                         * Constructs a new DeviceInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDeviceInfo);

                        /** DeviceInfo type. */
                        public type: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device);

                        /**
                         * Creates a new DeviceInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeviceInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDeviceInfo): google.ads.googleads.v23.common.DeviceInfo;

                        /**
                         * Encodes the specified DeviceInfo message. Does not implicitly {@link google.ads.googleads.v23.common.DeviceInfo.verify|verify} messages.
                         * @param message DeviceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDeviceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeviceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DeviceInfo.verify|verify} messages.
                         * @param message DeviceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDeviceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeviceInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeviceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.DeviceInfo;

                        /**
                         * Decodes a DeviceInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeviceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.DeviceInfo;

                        /**
                         * Verifies a DeviceInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DeviceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeviceInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.DeviceInfo;

                        /**
                         * Creates a plain object from a DeviceInfo message. Also converts values to other types if specified.
                         * @param message DeviceInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.DeviceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeviceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeviceInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListingGroupInfo. */
                    interface IListingGroupInfo {

                        /** ListingGroupInfo type */
                        type?: (google.ads.googleads.v23.enums.ListingGroupTypeEnum.ListingGroupType|keyof typeof google.ads.googleads.v23.enums.ListingGroupTypeEnum.ListingGroupType|null);

                        /** ListingGroupInfo case_value */
                        case_value?: (google.ads.googleads.v23.common.IListingDimensionInfo|null);

                        /** ListingGroupInfo parent_ad_group_criterion */
                        parent_ad_group_criterion?: (string|null);

                        /** ListingGroupInfo path */
                        path?: (google.ads.googleads.v23.common.IListingDimensionPath|null);
                    }

                    /** Represents a ListingGroupInfo. */
                    class ListingGroupInfo implements IListingGroupInfo {

                        /**
                         * Constructs a new ListingGroupInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IListingGroupInfo);

                        /** ListingGroupInfo type. */
                        public type: (google.ads.googleads.v23.enums.ListingGroupTypeEnum.ListingGroupType|keyof typeof google.ads.googleads.v23.enums.ListingGroupTypeEnum.ListingGroupType);

                        /** ListingGroupInfo case_value. */
                        public case_value?: (google.ads.googleads.v23.common.IListingDimensionInfo|null);

                        /** ListingGroupInfo parent_ad_group_criterion. */
                        public parent_ad_group_criterion?: (string|null);

                        /** ListingGroupInfo path. */
                        public path?: (google.ads.googleads.v23.common.IListingDimensionPath|null);

                        /**
                         * Creates a new ListingGroupInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IListingGroupInfo): google.ads.googleads.v23.common.ListingGroupInfo;

                        /**
                         * Encodes the specified ListingGroupInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ListingGroupInfo.verify|verify} messages.
                         * @param message ListingGroupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IListingGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ListingGroupInfo.verify|verify} messages.
                         * @param message ListingGroupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IListingGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ListingGroupInfo;

                        /**
                         * Decodes a ListingGroupInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ListingGroupInfo;

                        /**
                         * Verifies a ListingGroupInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ListingGroupInfo;

                        /**
                         * Creates a plain object from a ListingGroupInfo message. Also converts values to other types if specified.
                         * @param message ListingGroupInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ListingGroupInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListingDimensionPath. */
                    interface IListingDimensionPath {

                        /** ListingDimensionPath dimensions */
                        dimensions?: (google.ads.googleads.v23.common.IListingDimensionInfo[]|null);
                    }

                    /** Represents a ListingDimensionPath. */
                    class ListingDimensionPath implements IListingDimensionPath {

                        /**
                         * Constructs a new ListingDimensionPath.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IListingDimensionPath);

                        /** ListingDimensionPath dimensions. */
                        public dimensions: google.ads.googleads.v23.common.IListingDimensionInfo[];

                        /**
                         * Creates a new ListingDimensionPath instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingDimensionPath instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IListingDimensionPath): google.ads.googleads.v23.common.ListingDimensionPath;

                        /**
                         * Encodes the specified ListingDimensionPath message. Does not implicitly {@link google.ads.googleads.v23.common.ListingDimensionPath.verify|verify} messages.
                         * @param message ListingDimensionPath message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IListingDimensionPath, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingDimensionPath message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ListingDimensionPath.verify|verify} messages.
                         * @param message ListingDimensionPath message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IListingDimensionPath, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingDimensionPath message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingDimensionPath
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ListingDimensionPath;

                        /**
                         * Decodes a ListingDimensionPath message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingDimensionPath
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ListingDimensionPath;

                        /**
                         * Verifies a ListingDimensionPath message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingDimensionPath message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingDimensionPath
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ListingDimensionPath;

                        /**
                         * Creates a plain object from a ListingDimensionPath message. Also converts values to other types if specified.
                         * @param message ListingDimensionPath
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ListingDimensionPath, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingDimensionPath to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingDimensionPath
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListingScopeInfo. */
                    interface IListingScopeInfo {

                        /** ListingScopeInfo dimensions */
                        dimensions?: (google.ads.googleads.v23.common.IListingDimensionInfo[]|null);
                    }

                    /** Represents a ListingScopeInfo. */
                    class ListingScopeInfo implements IListingScopeInfo {

                        /**
                         * Constructs a new ListingScopeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IListingScopeInfo);

                        /** ListingScopeInfo dimensions. */
                        public dimensions: google.ads.googleads.v23.common.IListingDimensionInfo[];

                        /**
                         * Creates a new ListingScopeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingScopeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IListingScopeInfo): google.ads.googleads.v23.common.ListingScopeInfo;

                        /**
                         * Encodes the specified ListingScopeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ListingScopeInfo.verify|verify} messages.
                         * @param message ListingScopeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IListingScopeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingScopeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ListingScopeInfo.verify|verify} messages.
                         * @param message ListingScopeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IListingScopeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingScopeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingScopeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ListingScopeInfo;

                        /**
                         * Decodes a ListingScopeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingScopeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ListingScopeInfo;

                        /**
                         * Verifies a ListingScopeInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingScopeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingScopeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ListingScopeInfo;

                        /**
                         * Creates a plain object from a ListingScopeInfo message. Also converts values to other types if specified.
                         * @param message ListingScopeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ListingScopeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingScopeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingScopeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListingDimensionInfo. */
                    interface IListingDimensionInfo {

                        /** ListingDimensionInfo hotel_id */
                        hotel_id?: (google.ads.googleads.v23.common.IHotelIdInfo|null);

                        /** ListingDimensionInfo hotel_class */
                        hotel_class?: (google.ads.googleads.v23.common.IHotelClassInfo|null);

                        /** ListingDimensionInfo hotel_country_region */
                        hotel_country_region?: (google.ads.googleads.v23.common.IHotelCountryRegionInfo|null);

                        /** ListingDimensionInfo hotel_state */
                        hotel_state?: (google.ads.googleads.v23.common.IHotelStateInfo|null);

                        /** ListingDimensionInfo hotel_city */
                        hotel_city?: (google.ads.googleads.v23.common.IHotelCityInfo|null);

                        /** ListingDimensionInfo product_category */
                        product_category?: (google.ads.googleads.v23.common.IProductCategoryInfo|null);

                        /** ListingDimensionInfo product_brand */
                        product_brand?: (google.ads.googleads.v23.common.IProductBrandInfo|null);

                        /** ListingDimensionInfo product_channel */
                        product_channel?: (google.ads.googleads.v23.common.IProductChannelInfo|null);

                        /** ListingDimensionInfo product_channel_exclusivity */
                        product_channel_exclusivity?: (google.ads.googleads.v23.common.IProductChannelExclusivityInfo|null);

                        /** ListingDimensionInfo product_condition */
                        product_condition?: (google.ads.googleads.v23.common.IProductConditionInfo|null);

                        /** ListingDimensionInfo product_custom_attribute */
                        product_custom_attribute?: (google.ads.googleads.v23.common.IProductCustomAttributeInfo|null);

                        /** ListingDimensionInfo product_item_id */
                        product_item_id?: (google.ads.googleads.v23.common.IProductItemIdInfo|null);

                        /** ListingDimensionInfo product_type */
                        product_type?: (google.ads.googleads.v23.common.IProductTypeInfo|null);

                        /** ListingDimensionInfo product_grouping */
                        product_grouping?: (google.ads.googleads.v23.common.IProductGroupingInfo|null);

                        /** ListingDimensionInfo product_labels */
                        product_labels?: (google.ads.googleads.v23.common.IProductLabelsInfo|null);

                        /** ListingDimensionInfo product_legacy_condition */
                        product_legacy_condition?: (google.ads.googleads.v23.common.IProductLegacyConditionInfo|null);

                        /** ListingDimensionInfo product_type_full */
                        product_type_full?: (google.ads.googleads.v23.common.IProductTypeFullInfo|null);

                        /** ListingDimensionInfo activity_id */
                        activity_id?: (google.ads.googleads.v23.common.IActivityIdInfo|null);

                        /** ListingDimensionInfo activity_rating */
                        activity_rating?: (google.ads.googleads.v23.common.IActivityRatingInfo|null);

                        /** ListingDimensionInfo activity_country */
                        activity_country?: (google.ads.googleads.v23.common.IActivityCountryInfo|null);

                        /** ListingDimensionInfo activity_state */
                        activity_state?: (google.ads.googleads.v23.common.IActivityStateInfo|null);

                        /** ListingDimensionInfo activity_city */
                        activity_city?: (google.ads.googleads.v23.common.IActivityCityInfo|null);

                        /** ListingDimensionInfo unknown_listing_dimension */
                        unknown_listing_dimension?: (google.ads.googleads.v23.common.IUnknownListingDimensionInfo|null);
                    }

                    /** Represents a ListingDimensionInfo. */
                    class ListingDimensionInfo implements IListingDimensionInfo {

                        /**
                         * Constructs a new ListingDimensionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IListingDimensionInfo);

                        /** ListingDimensionInfo hotel_id. */
                        public hotel_id?: (google.ads.googleads.v23.common.IHotelIdInfo|null);

                        /** ListingDimensionInfo hotel_class. */
                        public hotel_class?: (google.ads.googleads.v23.common.IHotelClassInfo|null);

                        /** ListingDimensionInfo hotel_country_region. */
                        public hotel_country_region?: (google.ads.googleads.v23.common.IHotelCountryRegionInfo|null);

                        /** ListingDimensionInfo hotel_state. */
                        public hotel_state?: (google.ads.googleads.v23.common.IHotelStateInfo|null);

                        /** ListingDimensionInfo hotel_city. */
                        public hotel_city?: (google.ads.googleads.v23.common.IHotelCityInfo|null);

                        /** ListingDimensionInfo product_category. */
                        public product_category?: (google.ads.googleads.v23.common.IProductCategoryInfo|null);

                        /** ListingDimensionInfo product_brand. */
                        public product_brand?: (google.ads.googleads.v23.common.IProductBrandInfo|null);

                        /** ListingDimensionInfo product_channel. */
                        public product_channel?: (google.ads.googleads.v23.common.IProductChannelInfo|null);

                        /** ListingDimensionInfo product_channel_exclusivity. */
                        public product_channel_exclusivity?: (google.ads.googleads.v23.common.IProductChannelExclusivityInfo|null);

                        /** ListingDimensionInfo product_condition. */
                        public product_condition?: (google.ads.googleads.v23.common.IProductConditionInfo|null);

                        /** ListingDimensionInfo product_custom_attribute. */
                        public product_custom_attribute?: (google.ads.googleads.v23.common.IProductCustomAttributeInfo|null);

                        /** ListingDimensionInfo product_item_id. */
                        public product_item_id?: (google.ads.googleads.v23.common.IProductItemIdInfo|null);

                        /** ListingDimensionInfo product_type. */
                        public product_type?: (google.ads.googleads.v23.common.IProductTypeInfo|null);

                        /** ListingDimensionInfo product_grouping. */
                        public product_grouping?: (google.ads.googleads.v23.common.IProductGroupingInfo|null);

                        /** ListingDimensionInfo product_labels. */
                        public product_labels?: (google.ads.googleads.v23.common.IProductLabelsInfo|null);

                        /** ListingDimensionInfo product_legacy_condition. */
                        public product_legacy_condition?: (google.ads.googleads.v23.common.IProductLegacyConditionInfo|null);

                        /** ListingDimensionInfo product_type_full. */
                        public product_type_full?: (google.ads.googleads.v23.common.IProductTypeFullInfo|null);

                        /** ListingDimensionInfo activity_id. */
                        public activity_id?: (google.ads.googleads.v23.common.IActivityIdInfo|null);

                        /** ListingDimensionInfo activity_rating. */
                        public activity_rating?: (google.ads.googleads.v23.common.IActivityRatingInfo|null);

                        /** ListingDimensionInfo activity_country. */
                        public activity_country?: (google.ads.googleads.v23.common.IActivityCountryInfo|null);

                        /** ListingDimensionInfo activity_state. */
                        public activity_state?: (google.ads.googleads.v23.common.IActivityStateInfo|null);

                        /** ListingDimensionInfo activity_city. */
                        public activity_city?: (google.ads.googleads.v23.common.IActivityCityInfo|null);

                        /** ListingDimensionInfo unknown_listing_dimension. */
                        public unknown_listing_dimension?: (google.ads.googleads.v23.common.IUnknownListingDimensionInfo|null);

                        /** ListingDimensionInfo dimension. */
                        public dimension?: ("hotel_id"|"hotel_class"|"hotel_country_region"|"hotel_state"|"hotel_city"|"product_category"|"product_brand"|"product_channel"|"product_channel_exclusivity"|"product_condition"|"product_custom_attribute"|"product_item_id"|"product_type"|"product_grouping"|"product_labels"|"product_legacy_condition"|"product_type_full"|"activity_id"|"activity_rating"|"activity_country"|"activity_state"|"activity_city"|"unknown_listing_dimension");

                        /**
                         * Creates a new ListingDimensionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingDimensionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IListingDimensionInfo): google.ads.googleads.v23.common.ListingDimensionInfo;

                        /**
                         * Encodes the specified ListingDimensionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ListingDimensionInfo.verify|verify} messages.
                         * @param message ListingDimensionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IListingDimensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingDimensionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ListingDimensionInfo.verify|verify} messages.
                         * @param message ListingDimensionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IListingDimensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingDimensionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingDimensionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ListingDimensionInfo;

                        /**
                         * Decodes a ListingDimensionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingDimensionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ListingDimensionInfo;

                        /**
                         * Verifies a ListingDimensionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingDimensionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingDimensionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ListingDimensionInfo;

                        /**
                         * Creates a plain object from a ListingDimensionInfo message. Also converts values to other types if specified.
                         * @param message ListingDimensionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ListingDimensionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingDimensionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingDimensionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelIdInfo. */
                    interface IHotelIdInfo {

                        /** HotelIdInfo value */
                        value?: (string|null);
                    }

                    /** Represents a HotelIdInfo. */
                    class HotelIdInfo implements IHotelIdInfo {

                        /**
                         * Constructs a new HotelIdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelIdInfo);

                        /** HotelIdInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new HotelIdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelIdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelIdInfo): google.ads.googleads.v23.common.HotelIdInfo;

                        /**
                         * Encodes the specified HotelIdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelIdInfo.verify|verify} messages.
                         * @param message HotelIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelIdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelIdInfo.verify|verify} messages.
                         * @param message HotelIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelIdInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelIdInfo;

                        /**
                         * Decodes a HotelIdInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelIdInfo;

                        /**
                         * Verifies a HotelIdInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelIdInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelIdInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelIdInfo;

                        /**
                         * Creates a plain object from a HotelIdInfo message. Also converts values to other types if specified.
                         * @param message HotelIdInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelIdInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelIdInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelIdInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelClassInfo. */
                    interface IHotelClassInfo {

                        /** HotelClassInfo value */
                        value?: (number|null);
                    }

                    /** Represents a HotelClassInfo. */
                    class HotelClassInfo implements IHotelClassInfo {

                        /**
                         * Constructs a new HotelClassInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelClassInfo);

                        /** HotelClassInfo value. */
                        public value?: (number|null);

                        /**
                         * Creates a new HotelClassInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelClassInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelClassInfo): google.ads.googleads.v23.common.HotelClassInfo;

                        /**
                         * Encodes the specified HotelClassInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelClassInfo.verify|verify} messages.
                         * @param message HotelClassInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelClassInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelClassInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelClassInfo.verify|verify} messages.
                         * @param message HotelClassInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelClassInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelClassInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelClassInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelClassInfo;

                        /**
                         * Decodes a HotelClassInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelClassInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelClassInfo;

                        /**
                         * Verifies a HotelClassInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelClassInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelClassInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelClassInfo;

                        /**
                         * Creates a plain object from a HotelClassInfo message. Also converts values to other types if specified.
                         * @param message HotelClassInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelClassInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelClassInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelClassInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelCountryRegionInfo. */
                    interface IHotelCountryRegionInfo {

                        /** HotelCountryRegionInfo country_region_criterion */
                        country_region_criterion?: (string|null);
                    }

                    /** Represents a HotelCountryRegionInfo. */
                    class HotelCountryRegionInfo implements IHotelCountryRegionInfo {

                        /**
                         * Constructs a new HotelCountryRegionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelCountryRegionInfo);

                        /** HotelCountryRegionInfo country_region_criterion. */
                        public country_region_criterion?: (string|null);

                        /**
                         * Creates a new HotelCountryRegionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelCountryRegionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelCountryRegionInfo): google.ads.googleads.v23.common.HotelCountryRegionInfo;

                        /**
                         * Encodes the specified HotelCountryRegionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelCountryRegionInfo.verify|verify} messages.
                         * @param message HotelCountryRegionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelCountryRegionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelCountryRegionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelCountryRegionInfo.verify|verify} messages.
                         * @param message HotelCountryRegionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelCountryRegionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCountryRegionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelCountryRegionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelCountryRegionInfo;

                        /**
                         * Decodes a HotelCountryRegionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelCountryRegionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelCountryRegionInfo;

                        /**
                         * Verifies a HotelCountryRegionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelCountryRegionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelCountryRegionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelCountryRegionInfo;

                        /**
                         * Creates a plain object from a HotelCountryRegionInfo message. Also converts values to other types if specified.
                         * @param message HotelCountryRegionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelCountryRegionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelCountryRegionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelCountryRegionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelStateInfo. */
                    interface IHotelStateInfo {

                        /** HotelStateInfo state_criterion */
                        state_criterion?: (string|null);
                    }

                    /** Represents a HotelStateInfo. */
                    class HotelStateInfo implements IHotelStateInfo {

                        /**
                         * Constructs a new HotelStateInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelStateInfo);

                        /** HotelStateInfo state_criterion. */
                        public state_criterion?: (string|null);

                        /**
                         * Creates a new HotelStateInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelStateInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelStateInfo): google.ads.googleads.v23.common.HotelStateInfo;

                        /**
                         * Encodes the specified HotelStateInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelStateInfo.verify|verify} messages.
                         * @param message HotelStateInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelStateInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelStateInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelStateInfo.verify|verify} messages.
                         * @param message HotelStateInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelStateInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelStateInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelStateInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelStateInfo;

                        /**
                         * Decodes a HotelStateInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelStateInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelStateInfo;

                        /**
                         * Verifies a HotelStateInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelStateInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelStateInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelStateInfo;

                        /**
                         * Creates a plain object from a HotelStateInfo message. Also converts values to other types if specified.
                         * @param message HotelStateInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelStateInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelStateInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelStateInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelCityInfo. */
                    interface IHotelCityInfo {

                        /** HotelCityInfo city_criterion */
                        city_criterion?: (string|null);
                    }

                    /** Represents a HotelCityInfo. */
                    class HotelCityInfo implements IHotelCityInfo {

                        /**
                         * Constructs a new HotelCityInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelCityInfo);

                        /** HotelCityInfo city_criterion. */
                        public city_criterion?: (string|null);

                        /**
                         * Creates a new HotelCityInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelCityInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelCityInfo): google.ads.googleads.v23.common.HotelCityInfo;

                        /**
                         * Encodes the specified HotelCityInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelCityInfo.verify|verify} messages.
                         * @param message HotelCityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelCityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelCityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelCityInfo.verify|verify} messages.
                         * @param message HotelCityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelCityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCityInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelCityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelCityInfo;

                        /**
                         * Decodes a HotelCityInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelCityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelCityInfo;

                        /**
                         * Verifies a HotelCityInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelCityInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelCityInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelCityInfo;

                        /**
                         * Creates a plain object from a HotelCityInfo message. Also converts values to other types if specified.
                         * @param message HotelCityInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelCityInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelCityInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelCityInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductCategoryInfo. */
                    interface IProductCategoryInfo {

                        /** ProductCategoryInfo category_id */
                        category_id?: (number|null);

                        /** ProductCategoryInfo level */
                        level?: (google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel|keyof typeof google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel|null);
                    }

                    /** Represents a ProductCategoryInfo. */
                    class ProductCategoryInfo implements IProductCategoryInfo {

                        /**
                         * Constructs a new ProductCategoryInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductCategoryInfo);

                        /** ProductCategoryInfo category_id. */
                        public category_id?: (number|null);

                        /** ProductCategoryInfo level. */
                        public level: (google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel|keyof typeof google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel);

                        /**
                         * Creates a new ProductCategoryInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductCategoryInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductCategoryInfo): google.ads.googleads.v23.common.ProductCategoryInfo;

                        /**
                         * Encodes the specified ProductCategoryInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductCategoryInfo.verify|verify} messages.
                         * @param message ProductCategoryInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductCategoryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCategoryInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductCategoryInfo.verify|verify} messages.
                         * @param message ProductCategoryInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductCategoryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCategoryInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductCategoryInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductCategoryInfo;

                        /**
                         * Decodes a ProductCategoryInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductCategoryInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductCategoryInfo;

                        /**
                         * Verifies a ProductCategoryInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductCategoryInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductCategoryInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductCategoryInfo;

                        /**
                         * Creates a plain object from a ProductCategoryInfo message. Also converts values to other types if specified.
                         * @param message ProductCategoryInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductCategoryInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCategoryInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductCategoryInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductBrandInfo. */
                    interface IProductBrandInfo {

                        /** ProductBrandInfo value */
                        value?: (string|null);
                    }

                    /** Represents a ProductBrandInfo. */
                    class ProductBrandInfo implements IProductBrandInfo {

                        /**
                         * Constructs a new ProductBrandInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductBrandInfo);

                        /** ProductBrandInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ProductBrandInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductBrandInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductBrandInfo): google.ads.googleads.v23.common.ProductBrandInfo;

                        /**
                         * Encodes the specified ProductBrandInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductBrandInfo.verify|verify} messages.
                         * @param message ProductBrandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductBrandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductBrandInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductBrandInfo.verify|verify} messages.
                         * @param message ProductBrandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductBrandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductBrandInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductBrandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductBrandInfo;

                        /**
                         * Decodes a ProductBrandInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductBrandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductBrandInfo;

                        /**
                         * Verifies a ProductBrandInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductBrandInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductBrandInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductBrandInfo;

                        /**
                         * Creates a plain object from a ProductBrandInfo message. Also converts values to other types if specified.
                         * @param message ProductBrandInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductBrandInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductBrandInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductBrandInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductChannelInfo. */
                    interface IProductChannelInfo {

                        /** ProductChannelInfo channel */
                        channel?: (google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|null);
                    }

                    /** Represents a ProductChannelInfo. */
                    class ProductChannelInfo implements IProductChannelInfo {

                        /**
                         * Constructs a new ProductChannelInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductChannelInfo);

                        /** ProductChannelInfo channel. */
                        public channel: (google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel);

                        /**
                         * Creates a new ProductChannelInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductChannelInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductChannelInfo): google.ads.googleads.v23.common.ProductChannelInfo;

                        /**
                         * Encodes the specified ProductChannelInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductChannelInfo.verify|verify} messages.
                         * @param message ProductChannelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductChannelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductChannelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductChannelInfo.verify|verify} messages.
                         * @param message ProductChannelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductChannelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductChannelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductChannelInfo;

                        /**
                         * Decodes a ProductChannelInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductChannelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductChannelInfo;

                        /**
                         * Verifies a ProductChannelInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductChannelInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductChannelInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductChannelInfo;

                        /**
                         * Creates a plain object from a ProductChannelInfo message. Also converts values to other types if specified.
                         * @param message ProductChannelInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductChannelInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductChannelInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductChannelInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductChannelExclusivityInfo. */
                    interface IProductChannelExclusivityInfo {

                        /** ProductChannelExclusivityInfo channel_exclusivity */
                        channel_exclusivity?: (google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|null);
                    }

                    /** Represents a ProductChannelExclusivityInfo. */
                    class ProductChannelExclusivityInfo implements IProductChannelExclusivityInfo {

                        /**
                         * Constructs a new ProductChannelExclusivityInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductChannelExclusivityInfo);

                        /** ProductChannelExclusivityInfo channel_exclusivity. */
                        public channel_exclusivity: (google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity);

                        /**
                         * Creates a new ProductChannelExclusivityInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductChannelExclusivityInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductChannelExclusivityInfo): google.ads.googleads.v23.common.ProductChannelExclusivityInfo;

                        /**
                         * Encodes the specified ProductChannelExclusivityInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductChannelExclusivityInfo.verify|verify} messages.
                         * @param message ProductChannelExclusivityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductChannelExclusivityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductChannelExclusivityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductChannelExclusivityInfo.verify|verify} messages.
                         * @param message ProductChannelExclusivityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductChannelExclusivityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelExclusivityInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductChannelExclusivityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductChannelExclusivityInfo;

                        /**
                         * Decodes a ProductChannelExclusivityInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductChannelExclusivityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductChannelExclusivityInfo;

                        /**
                         * Verifies a ProductChannelExclusivityInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductChannelExclusivityInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductChannelExclusivityInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductChannelExclusivityInfo;

                        /**
                         * Creates a plain object from a ProductChannelExclusivityInfo message. Also converts values to other types if specified.
                         * @param message ProductChannelExclusivityInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductChannelExclusivityInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductChannelExclusivityInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductChannelExclusivityInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductConditionInfo. */
                    interface IProductConditionInfo {

                        /** ProductConditionInfo condition */
                        condition?: (google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|null);
                    }

                    /** Represents a ProductConditionInfo. */
                    class ProductConditionInfo implements IProductConditionInfo {

                        /**
                         * Constructs a new ProductConditionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductConditionInfo);

                        /** ProductConditionInfo condition. */
                        public condition: (google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition);

                        /**
                         * Creates a new ProductConditionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductConditionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductConditionInfo): google.ads.googleads.v23.common.ProductConditionInfo;

                        /**
                         * Encodes the specified ProductConditionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductConditionInfo.verify|verify} messages.
                         * @param message ProductConditionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductConditionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductConditionInfo.verify|verify} messages.
                         * @param message ProductConditionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductConditionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductConditionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductConditionInfo;

                        /**
                         * Decodes a ProductConditionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductConditionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductConditionInfo;

                        /**
                         * Verifies a ProductConditionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductConditionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductConditionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductConditionInfo;

                        /**
                         * Creates a plain object from a ProductConditionInfo message. Also converts values to other types if specified.
                         * @param message ProductConditionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductConditionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductConditionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductConditionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductCustomAttributeInfo. */
                    interface IProductCustomAttributeInfo {

                        /** ProductCustomAttributeInfo value */
                        value?: (string|null);

                        /** ProductCustomAttributeInfo index */
                        index?: (google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex|keyof typeof google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex|null);
                    }

                    /** Represents a ProductCustomAttributeInfo. */
                    class ProductCustomAttributeInfo implements IProductCustomAttributeInfo {

                        /**
                         * Constructs a new ProductCustomAttributeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductCustomAttributeInfo);

                        /** ProductCustomAttributeInfo value. */
                        public value?: (string|null);

                        /** ProductCustomAttributeInfo index. */
                        public index: (google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex|keyof typeof google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex);

                        /**
                         * Creates a new ProductCustomAttributeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductCustomAttributeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductCustomAttributeInfo): google.ads.googleads.v23.common.ProductCustomAttributeInfo;

                        /**
                         * Encodes the specified ProductCustomAttributeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductCustomAttributeInfo.verify|verify} messages.
                         * @param message ProductCustomAttributeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductCustomAttributeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCustomAttributeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductCustomAttributeInfo.verify|verify} messages.
                         * @param message ProductCustomAttributeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductCustomAttributeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCustomAttributeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductCustomAttributeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductCustomAttributeInfo;

                        /**
                         * Decodes a ProductCustomAttributeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductCustomAttributeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductCustomAttributeInfo;

                        /**
                         * Verifies a ProductCustomAttributeInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductCustomAttributeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductCustomAttributeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductCustomAttributeInfo;

                        /**
                         * Creates a plain object from a ProductCustomAttributeInfo message. Also converts values to other types if specified.
                         * @param message ProductCustomAttributeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductCustomAttributeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCustomAttributeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductCustomAttributeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductItemIdInfo. */
                    interface IProductItemIdInfo {

                        /** ProductItemIdInfo value */
                        value?: (string|null);
                    }

                    /** Represents a ProductItemIdInfo. */
                    class ProductItemIdInfo implements IProductItemIdInfo {

                        /**
                         * Constructs a new ProductItemIdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductItemIdInfo);

                        /** ProductItemIdInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ProductItemIdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductItemIdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductItemIdInfo): google.ads.googleads.v23.common.ProductItemIdInfo;

                        /**
                         * Encodes the specified ProductItemIdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductItemIdInfo.verify|verify} messages.
                         * @param message ProductItemIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductItemIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductItemIdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductItemIdInfo.verify|verify} messages.
                         * @param message ProductItemIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductItemIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductItemIdInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductItemIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductItemIdInfo;

                        /**
                         * Decodes a ProductItemIdInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductItemIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductItemIdInfo;

                        /**
                         * Verifies a ProductItemIdInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductItemIdInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductItemIdInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductItemIdInfo;

                        /**
                         * Creates a plain object from a ProductItemIdInfo message. Also converts values to other types if specified.
                         * @param message ProductItemIdInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductItemIdInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductItemIdInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductItemIdInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductTypeInfo. */
                    interface IProductTypeInfo {

                        /** ProductTypeInfo value */
                        value?: (string|null);

                        /** ProductTypeInfo level */
                        level?: (google.ads.googleads.v23.enums.ProductTypeLevelEnum.ProductTypeLevel|keyof typeof google.ads.googleads.v23.enums.ProductTypeLevelEnum.ProductTypeLevel|null);
                    }

                    /** Represents a ProductTypeInfo. */
                    class ProductTypeInfo implements IProductTypeInfo {

                        /**
                         * Constructs a new ProductTypeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductTypeInfo);

                        /** ProductTypeInfo value. */
                        public value?: (string|null);

                        /** ProductTypeInfo level. */
                        public level: (google.ads.googleads.v23.enums.ProductTypeLevelEnum.ProductTypeLevel|keyof typeof google.ads.googleads.v23.enums.ProductTypeLevelEnum.ProductTypeLevel);

                        /**
                         * Creates a new ProductTypeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductTypeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductTypeInfo): google.ads.googleads.v23.common.ProductTypeInfo;

                        /**
                         * Encodes the specified ProductTypeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductTypeInfo.verify|verify} messages.
                         * @param message ProductTypeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductTypeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductTypeInfo.verify|verify} messages.
                         * @param message ProductTypeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductTypeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductTypeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductTypeInfo;

                        /**
                         * Decodes a ProductTypeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductTypeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductTypeInfo;

                        /**
                         * Verifies a ProductTypeInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductTypeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductTypeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductTypeInfo;

                        /**
                         * Creates a plain object from a ProductTypeInfo message. Also converts values to other types if specified.
                         * @param message ProductTypeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductTypeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductTypeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductTypeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductGroupingInfo. */
                    interface IProductGroupingInfo {

                        /** ProductGroupingInfo value */
                        value?: (string|null);
                    }

                    /** Represents a ProductGroupingInfo. */
                    class ProductGroupingInfo implements IProductGroupingInfo {

                        /**
                         * Constructs a new ProductGroupingInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductGroupingInfo);

                        /** ProductGroupingInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ProductGroupingInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductGroupingInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductGroupingInfo): google.ads.googleads.v23.common.ProductGroupingInfo;

                        /**
                         * Encodes the specified ProductGroupingInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductGroupingInfo.verify|verify} messages.
                         * @param message ProductGroupingInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductGroupingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductGroupingInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductGroupingInfo.verify|verify} messages.
                         * @param message ProductGroupingInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductGroupingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductGroupingInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductGroupingInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductGroupingInfo;

                        /**
                         * Decodes a ProductGroupingInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductGroupingInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductGroupingInfo;

                        /**
                         * Verifies a ProductGroupingInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductGroupingInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductGroupingInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductGroupingInfo;

                        /**
                         * Creates a plain object from a ProductGroupingInfo message. Also converts values to other types if specified.
                         * @param message ProductGroupingInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductGroupingInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductGroupingInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductGroupingInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductLabelsInfo. */
                    interface IProductLabelsInfo {

                        /** ProductLabelsInfo value */
                        value?: (string|null);
                    }

                    /** Represents a ProductLabelsInfo. */
                    class ProductLabelsInfo implements IProductLabelsInfo {

                        /**
                         * Constructs a new ProductLabelsInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductLabelsInfo);

                        /** ProductLabelsInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ProductLabelsInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductLabelsInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductLabelsInfo): google.ads.googleads.v23.common.ProductLabelsInfo;

                        /**
                         * Encodes the specified ProductLabelsInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductLabelsInfo.verify|verify} messages.
                         * @param message ProductLabelsInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductLabelsInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductLabelsInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductLabelsInfo.verify|verify} messages.
                         * @param message ProductLabelsInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductLabelsInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductLabelsInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductLabelsInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductLabelsInfo;

                        /**
                         * Decodes a ProductLabelsInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductLabelsInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductLabelsInfo;

                        /**
                         * Verifies a ProductLabelsInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductLabelsInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductLabelsInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductLabelsInfo;

                        /**
                         * Creates a plain object from a ProductLabelsInfo message. Also converts values to other types if specified.
                         * @param message ProductLabelsInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductLabelsInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductLabelsInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductLabelsInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductLegacyConditionInfo. */
                    interface IProductLegacyConditionInfo {

                        /** ProductLegacyConditionInfo value */
                        value?: (string|null);
                    }

                    /** Represents a ProductLegacyConditionInfo. */
                    class ProductLegacyConditionInfo implements IProductLegacyConditionInfo {

                        /**
                         * Constructs a new ProductLegacyConditionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductLegacyConditionInfo);

                        /** ProductLegacyConditionInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ProductLegacyConditionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductLegacyConditionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductLegacyConditionInfo): google.ads.googleads.v23.common.ProductLegacyConditionInfo;

                        /**
                         * Encodes the specified ProductLegacyConditionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductLegacyConditionInfo.verify|verify} messages.
                         * @param message ProductLegacyConditionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductLegacyConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductLegacyConditionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductLegacyConditionInfo.verify|verify} messages.
                         * @param message ProductLegacyConditionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductLegacyConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductLegacyConditionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductLegacyConditionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductLegacyConditionInfo;

                        /**
                         * Decodes a ProductLegacyConditionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductLegacyConditionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductLegacyConditionInfo;

                        /**
                         * Verifies a ProductLegacyConditionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductLegacyConditionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductLegacyConditionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductLegacyConditionInfo;

                        /**
                         * Creates a plain object from a ProductLegacyConditionInfo message. Also converts values to other types if specified.
                         * @param message ProductLegacyConditionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductLegacyConditionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductLegacyConditionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductLegacyConditionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductTypeFullInfo. */
                    interface IProductTypeFullInfo {

                        /** ProductTypeFullInfo value */
                        value?: (string|null);
                    }

                    /** Represents a ProductTypeFullInfo. */
                    class ProductTypeFullInfo implements IProductTypeFullInfo {

                        /**
                         * Constructs a new ProductTypeFullInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProductTypeFullInfo);

                        /** ProductTypeFullInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ProductTypeFullInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductTypeFullInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProductTypeFullInfo): google.ads.googleads.v23.common.ProductTypeFullInfo;

                        /**
                         * Encodes the specified ProductTypeFullInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProductTypeFullInfo.verify|verify} messages.
                         * @param message ProductTypeFullInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProductTypeFullInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductTypeFullInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProductTypeFullInfo.verify|verify} messages.
                         * @param message ProductTypeFullInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProductTypeFullInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductTypeFullInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductTypeFullInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProductTypeFullInfo;

                        /**
                         * Decodes a ProductTypeFullInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductTypeFullInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProductTypeFullInfo;

                        /**
                         * Verifies a ProductTypeFullInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductTypeFullInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductTypeFullInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProductTypeFullInfo;

                        /**
                         * Creates a plain object from a ProductTypeFullInfo message. Also converts values to other types if specified.
                         * @param message ProductTypeFullInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProductTypeFullInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductTypeFullInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductTypeFullInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UnknownListingDimensionInfo. */
                    interface IUnknownListingDimensionInfo {
                    }

                    /** Represents an UnknownListingDimensionInfo. */
                    class UnknownListingDimensionInfo implements IUnknownListingDimensionInfo {

                        /**
                         * Constructs a new UnknownListingDimensionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUnknownListingDimensionInfo);

                        /**
                         * Creates a new UnknownListingDimensionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UnknownListingDimensionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUnknownListingDimensionInfo): google.ads.googleads.v23.common.UnknownListingDimensionInfo;

                        /**
                         * Encodes the specified UnknownListingDimensionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UnknownListingDimensionInfo.verify|verify} messages.
                         * @param message UnknownListingDimensionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUnknownListingDimensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UnknownListingDimensionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UnknownListingDimensionInfo.verify|verify} messages.
                         * @param message UnknownListingDimensionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUnknownListingDimensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UnknownListingDimensionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UnknownListingDimensionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UnknownListingDimensionInfo;

                        /**
                         * Decodes an UnknownListingDimensionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UnknownListingDimensionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UnknownListingDimensionInfo;

                        /**
                         * Verifies an UnknownListingDimensionInfo message.
                         * @param message Plain 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 UnknownListingDimensionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UnknownListingDimensionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UnknownListingDimensionInfo;

                        /**
                         * Creates a plain object from an UnknownListingDimensionInfo message. Also converts values to other types if specified.
                         * @param message UnknownListingDimensionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UnknownListingDimensionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UnknownListingDimensionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UnknownListingDimensionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelDateSelectionTypeInfo. */
                    interface IHotelDateSelectionTypeInfo {

                        /** HotelDateSelectionTypeInfo type */
                        type?: (google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|null);
                    }

                    /** Represents a HotelDateSelectionTypeInfo. */
                    class HotelDateSelectionTypeInfo implements IHotelDateSelectionTypeInfo {

                        /**
                         * Constructs a new HotelDateSelectionTypeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelDateSelectionTypeInfo);

                        /** HotelDateSelectionTypeInfo type. */
                        public type: (google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType);

                        /**
                         * Creates a new HotelDateSelectionTypeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelDateSelectionTypeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelDateSelectionTypeInfo): google.ads.googleads.v23.common.HotelDateSelectionTypeInfo;

                        /**
                         * Encodes the specified HotelDateSelectionTypeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelDateSelectionTypeInfo.verify|verify} messages.
                         * @param message HotelDateSelectionTypeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelDateSelectionTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelDateSelectionTypeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelDateSelectionTypeInfo.verify|verify} messages.
                         * @param message HotelDateSelectionTypeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelDateSelectionTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelDateSelectionTypeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelDateSelectionTypeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelDateSelectionTypeInfo;

                        /**
                         * Decodes a HotelDateSelectionTypeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelDateSelectionTypeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelDateSelectionTypeInfo;

                        /**
                         * Verifies a HotelDateSelectionTypeInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelDateSelectionTypeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelDateSelectionTypeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelDateSelectionTypeInfo;

                        /**
                         * Creates a plain object from a HotelDateSelectionTypeInfo message. Also converts values to other types if specified.
                         * @param message HotelDateSelectionTypeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelDateSelectionTypeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelDateSelectionTypeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelDateSelectionTypeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelAdvanceBookingWindowInfo. */
                    interface IHotelAdvanceBookingWindowInfo {

                        /** HotelAdvanceBookingWindowInfo min_days */
                        min_days?: (number|null);

                        /** HotelAdvanceBookingWindowInfo max_days */
                        max_days?: (number|null);
                    }

                    /** Represents a HotelAdvanceBookingWindowInfo. */
                    class HotelAdvanceBookingWindowInfo implements IHotelAdvanceBookingWindowInfo {

                        /**
                         * Constructs a new HotelAdvanceBookingWindowInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelAdvanceBookingWindowInfo);

                        /** HotelAdvanceBookingWindowInfo min_days. */
                        public min_days?: (number|null);

                        /** HotelAdvanceBookingWindowInfo max_days. */
                        public max_days?: (number|null);

                        /**
                         * Creates a new HotelAdvanceBookingWindowInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelAdvanceBookingWindowInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelAdvanceBookingWindowInfo): google.ads.googleads.v23.common.HotelAdvanceBookingWindowInfo;

                        /**
                         * Encodes the specified HotelAdvanceBookingWindowInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelAdvanceBookingWindowInfo.verify|verify} messages.
                         * @param message HotelAdvanceBookingWindowInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelAdvanceBookingWindowInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelAdvanceBookingWindowInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelAdvanceBookingWindowInfo.verify|verify} messages.
                         * @param message HotelAdvanceBookingWindowInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelAdvanceBookingWindowInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelAdvanceBookingWindowInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelAdvanceBookingWindowInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelAdvanceBookingWindowInfo;

                        /**
                         * Decodes a HotelAdvanceBookingWindowInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelAdvanceBookingWindowInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelAdvanceBookingWindowInfo;

                        /**
                         * Verifies a HotelAdvanceBookingWindowInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelAdvanceBookingWindowInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelAdvanceBookingWindowInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelAdvanceBookingWindowInfo;

                        /**
                         * Creates a plain object from a HotelAdvanceBookingWindowInfo message. Also converts values to other types if specified.
                         * @param message HotelAdvanceBookingWindowInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelAdvanceBookingWindowInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelAdvanceBookingWindowInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelAdvanceBookingWindowInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelLengthOfStayInfo. */
                    interface IHotelLengthOfStayInfo {

                        /** HotelLengthOfStayInfo min_nights */
                        min_nights?: (number|null);

                        /** HotelLengthOfStayInfo max_nights */
                        max_nights?: (number|null);
                    }

                    /** Represents a HotelLengthOfStayInfo. */
                    class HotelLengthOfStayInfo implements IHotelLengthOfStayInfo {

                        /**
                         * Constructs a new HotelLengthOfStayInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelLengthOfStayInfo);

                        /** HotelLengthOfStayInfo min_nights. */
                        public min_nights?: (number|null);

                        /** HotelLengthOfStayInfo max_nights. */
                        public max_nights?: (number|null);

                        /**
                         * Creates a new HotelLengthOfStayInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelLengthOfStayInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelLengthOfStayInfo): google.ads.googleads.v23.common.HotelLengthOfStayInfo;

                        /**
                         * Encodes the specified HotelLengthOfStayInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelLengthOfStayInfo.verify|verify} messages.
                         * @param message HotelLengthOfStayInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelLengthOfStayInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelLengthOfStayInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelLengthOfStayInfo.verify|verify} messages.
                         * @param message HotelLengthOfStayInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelLengthOfStayInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelLengthOfStayInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelLengthOfStayInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelLengthOfStayInfo;

                        /**
                         * Decodes a HotelLengthOfStayInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelLengthOfStayInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelLengthOfStayInfo;

                        /**
                         * Verifies a HotelLengthOfStayInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelLengthOfStayInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelLengthOfStayInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelLengthOfStayInfo;

                        /**
                         * Creates a plain object from a HotelLengthOfStayInfo message. Also converts values to other types if specified.
                         * @param message HotelLengthOfStayInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelLengthOfStayInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelLengthOfStayInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelLengthOfStayInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelCheckInDateRangeInfo. */
                    interface IHotelCheckInDateRangeInfo {

                        /** HotelCheckInDateRangeInfo start_date */
                        start_date?: (string|null);

                        /** HotelCheckInDateRangeInfo end_date */
                        end_date?: (string|null);
                    }

                    /** Represents a HotelCheckInDateRangeInfo. */
                    class HotelCheckInDateRangeInfo implements IHotelCheckInDateRangeInfo {

                        /**
                         * Constructs a new HotelCheckInDateRangeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelCheckInDateRangeInfo);

                        /** HotelCheckInDateRangeInfo start_date. */
                        public start_date: string;

                        /** HotelCheckInDateRangeInfo end_date. */
                        public end_date: string;

                        /**
                         * Creates a new HotelCheckInDateRangeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelCheckInDateRangeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelCheckInDateRangeInfo): google.ads.googleads.v23.common.HotelCheckInDateRangeInfo;

                        /**
                         * Encodes the specified HotelCheckInDateRangeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelCheckInDateRangeInfo.verify|verify} messages.
                         * @param message HotelCheckInDateRangeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelCheckInDateRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelCheckInDateRangeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelCheckInDateRangeInfo.verify|verify} messages.
                         * @param message HotelCheckInDateRangeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelCheckInDateRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCheckInDateRangeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelCheckInDateRangeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelCheckInDateRangeInfo;

                        /**
                         * Decodes a HotelCheckInDateRangeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelCheckInDateRangeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelCheckInDateRangeInfo;

                        /**
                         * Verifies a HotelCheckInDateRangeInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelCheckInDateRangeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelCheckInDateRangeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelCheckInDateRangeInfo;

                        /**
                         * Creates a plain object from a HotelCheckInDateRangeInfo message. Also converts values to other types if specified.
                         * @param message HotelCheckInDateRangeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelCheckInDateRangeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelCheckInDateRangeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelCheckInDateRangeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelCheckInDayInfo. */
                    interface IHotelCheckInDayInfo {

                        /** HotelCheckInDayInfo day_of_week */
                        day_of_week?: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|null);
                    }

                    /** Represents a HotelCheckInDayInfo. */
                    class HotelCheckInDayInfo implements IHotelCheckInDayInfo {

                        /**
                         * Constructs a new HotelCheckInDayInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHotelCheckInDayInfo);

                        /** HotelCheckInDayInfo day_of_week. */
                        public day_of_week: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek);

                        /**
                         * Creates a new HotelCheckInDayInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelCheckInDayInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHotelCheckInDayInfo): google.ads.googleads.v23.common.HotelCheckInDayInfo;

                        /**
                         * Encodes the specified HotelCheckInDayInfo message. Does not implicitly {@link google.ads.googleads.v23.common.HotelCheckInDayInfo.verify|verify} messages.
                         * @param message HotelCheckInDayInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHotelCheckInDayInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelCheckInDayInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HotelCheckInDayInfo.verify|verify} messages.
                         * @param message HotelCheckInDayInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHotelCheckInDayInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCheckInDayInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelCheckInDayInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HotelCheckInDayInfo;

                        /**
                         * Decodes a HotelCheckInDayInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelCheckInDayInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HotelCheckInDayInfo;

                        /**
                         * Verifies a HotelCheckInDayInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelCheckInDayInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelCheckInDayInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HotelCheckInDayInfo;

                        /**
                         * Creates a plain object from a HotelCheckInDayInfo message. Also converts values to other types if specified.
                         * @param message HotelCheckInDayInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HotelCheckInDayInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelCheckInDayInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelCheckInDayInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ActivityIdInfo. */
                    interface IActivityIdInfo {

                        /** ActivityIdInfo value */
                        value?: (string|null);
                    }

                    /** Represents an ActivityIdInfo. */
                    class ActivityIdInfo implements IActivityIdInfo {

                        /**
                         * Constructs a new ActivityIdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IActivityIdInfo);

                        /** ActivityIdInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ActivityIdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ActivityIdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IActivityIdInfo): google.ads.googleads.v23.common.ActivityIdInfo;

                        /**
                         * Encodes the specified ActivityIdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ActivityIdInfo.verify|verify} messages.
                         * @param message ActivityIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IActivityIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ActivityIdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ActivityIdInfo.verify|verify} messages.
                         * @param message ActivityIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IActivityIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ActivityIdInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ActivityIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ActivityIdInfo;

                        /**
                         * Decodes an ActivityIdInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ActivityIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ActivityIdInfo;

                        /**
                         * Verifies an ActivityIdInfo message.
                         * @param message Plain 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 ActivityIdInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ActivityIdInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ActivityIdInfo;

                        /**
                         * Creates a plain object from an ActivityIdInfo message. Also converts values to other types if specified.
                         * @param message ActivityIdInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ActivityIdInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ActivityIdInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ActivityIdInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ActivityRatingInfo. */
                    interface IActivityRatingInfo {

                        /** ActivityRatingInfo value */
                        value?: (number|null);
                    }

                    /** Represents an ActivityRatingInfo. */
                    class ActivityRatingInfo implements IActivityRatingInfo {

                        /**
                         * Constructs a new ActivityRatingInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IActivityRatingInfo);

                        /** ActivityRatingInfo value. */
                        public value?: (number|null);

                        /**
                         * Creates a new ActivityRatingInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ActivityRatingInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IActivityRatingInfo): google.ads.googleads.v23.common.ActivityRatingInfo;

                        /**
                         * Encodes the specified ActivityRatingInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ActivityRatingInfo.verify|verify} messages.
                         * @param message ActivityRatingInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IActivityRatingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ActivityRatingInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ActivityRatingInfo.verify|verify} messages.
                         * @param message ActivityRatingInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IActivityRatingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ActivityRatingInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ActivityRatingInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ActivityRatingInfo;

                        /**
                         * Decodes an ActivityRatingInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ActivityRatingInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ActivityRatingInfo;

                        /**
                         * Verifies an ActivityRatingInfo message.
                         * @param message Plain 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 ActivityRatingInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ActivityRatingInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ActivityRatingInfo;

                        /**
                         * Creates a plain object from an ActivityRatingInfo message. Also converts values to other types if specified.
                         * @param message ActivityRatingInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ActivityRatingInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ActivityRatingInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ActivityRatingInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ActivityCountryInfo. */
                    interface IActivityCountryInfo {

                        /** ActivityCountryInfo value */
                        value?: (string|null);
                    }

                    /** Represents an ActivityCountryInfo. */
                    class ActivityCountryInfo implements IActivityCountryInfo {

                        /**
                         * Constructs a new ActivityCountryInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IActivityCountryInfo);

                        /** ActivityCountryInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ActivityCountryInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ActivityCountryInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IActivityCountryInfo): google.ads.googleads.v23.common.ActivityCountryInfo;

                        /**
                         * Encodes the specified ActivityCountryInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ActivityCountryInfo.verify|verify} messages.
                         * @param message ActivityCountryInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IActivityCountryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ActivityCountryInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ActivityCountryInfo.verify|verify} messages.
                         * @param message ActivityCountryInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IActivityCountryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ActivityCountryInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ActivityCountryInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ActivityCountryInfo;

                        /**
                         * Decodes an ActivityCountryInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ActivityCountryInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ActivityCountryInfo;

                        /**
                         * Verifies an ActivityCountryInfo message.
                         * @param message Plain 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 ActivityCountryInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ActivityCountryInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ActivityCountryInfo;

                        /**
                         * Creates a plain object from an ActivityCountryInfo message. Also converts values to other types if specified.
                         * @param message ActivityCountryInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ActivityCountryInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ActivityCountryInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ActivityCountryInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ActivityStateInfo. */
                    interface IActivityStateInfo {

                        /** ActivityStateInfo value */
                        value?: (string|null);
                    }

                    /** Represents an ActivityStateInfo. */
                    class ActivityStateInfo implements IActivityStateInfo {

                        /**
                         * Constructs a new ActivityStateInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IActivityStateInfo);

                        /** ActivityStateInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ActivityStateInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ActivityStateInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IActivityStateInfo): google.ads.googleads.v23.common.ActivityStateInfo;

                        /**
                         * Encodes the specified ActivityStateInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ActivityStateInfo.verify|verify} messages.
                         * @param message ActivityStateInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IActivityStateInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ActivityStateInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ActivityStateInfo.verify|verify} messages.
                         * @param message ActivityStateInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IActivityStateInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ActivityStateInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ActivityStateInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ActivityStateInfo;

                        /**
                         * Decodes an ActivityStateInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ActivityStateInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ActivityStateInfo;

                        /**
                         * Verifies an ActivityStateInfo message.
                         * @param message Plain 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 ActivityStateInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ActivityStateInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ActivityStateInfo;

                        /**
                         * Creates a plain object from an ActivityStateInfo message. Also converts values to other types if specified.
                         * @param message ActivityStateInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ActivityStateInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ActivityStateInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ActivityStateInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ActivityCityInfo. */
                    interface IActivityCityInfo {

                        /** ActivityCityInfo value */
                        value?: (string|null);
                    }

                    /** Represents an ActivityCityInfo. */
                    class ActivityCityInfo implements IActivityCityInfo {

                        /**
                         * Constructs a new ActivityCityInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IActivityCityInfo);

                        /** ActivityCityInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new ActivityCityInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ActivityCityInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IActivityCityInfo): google.ads.googleads.v23.common.ActivityCityInfo;

                        /**
                         * Encodes the specified ActivityCityInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ActivityCityInfo.verify|verify} messages.
                         * @param message ActivityCityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IActivityCityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ActivityCityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ActivityCityInfo.verify|verify} messages.
                         * @param message ActivityCityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IActivityCityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ActivityCityInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ActivityCityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ActivityCityInfo;

                        /**
                         * Decodes an ActivityCityInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ActivityCityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ActivityCityInfo;

                        /**
                         * Verifies an ActivityCityInfo message.
                         * @param message Plain 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 ActivityCityInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ActivityCityInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ActivityCityInfo;

                        /**
                         * Creates a plain object from an ActivityCityInfo message. Also converts values to other types if specified.
                         * @param message ActivityCityInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ActivityCityInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ActivityCityInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ActivityCityInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an InteractionTypeInfo. */
                    interface IInteractionTypeInfo {

                        /** InteractionTypeInfo type */
                        type?: (google.ads.googleads.v23.enums.InteractionTypeEnum.InteractionType|keyof typeof google.ads.googleads.v23.enums.InteractionTypeEnum.InteractionType|null);
                    }

                    /** Represents an InteractionTypeInfo. */
                    class InteractionTypeInfo implements IInteractionTypeInfo {

                        /**
                         * Constructs a new InteractionTypeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IInteractionTypeInfo);

                        /** InteractionTypeInfo type. */
                        public type: (google.ads.googleads.v23.enums.InteractionTypeEnum.InteractionType|keyof typeof google.ads.googleads.v23.enums.InteractionTypeEnum.InteractionType);

                        /**
                         * Creates a new InteractionTypeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InteractionTypeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IInteractionTypeInfo): google.ads.googleads.v23.common.InteractionTypeInfo;

                        /**
                         * Encodes the specified InteractionTypeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.InteractionTypeInfo.verify|verify} messages.
                         * @param message InteractionTypeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IInteractionTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InteractionTypeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.InteractionTypeInfo.verify|verify} messages.
                         * @param message InteractionTypeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IInteractionTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InteractionTypeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InteractionTypeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.InteractionTypeInfo;

                        /**
                         * Decodes an InteractionTypeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InteractionTypeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.InteractionTypeInfo;

                        /**
                         * Verifies an InteractionTypeInfo message.
                         * @param message Plain 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 InteractionTypeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InteractionTypeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.InteractionTypeInfo;

                        /**
                         * Creates a plain object from an InteractionTypeInfo message. Also converts values to other types if specified.
                         * @param message InteractionTypeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.InteractionTypeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InteractionTypeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InteractionTypeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdScheduleInfo. */
                    interface IAdScheduleInfo {

                        /** AdScheduleInfo start_minute */
                        start_minute?: (google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour|null);

                        /** AdScheduleInfo end_minute */
                        end_minute?: (google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour|null);

                        /** AdScheduleInfo start_hour */
                        start_hour?: (number|null);

                        /** AdScheduleInfo end_hour */
                        end_hour?: (number|null);

                        /** AdScheduleInfo day_of_week */
                        day_of_week?: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|null);
                    }

                    /** Represents an AdScheduleInfo. */
                    class AdScheduleInfo implements IAdScheduleInfo {

                        /**
                         * Constructs a new AdScheduleInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAdScheduleInfo);

                        /** AdScheduleInfo start_minute. */
                        public start_minute: (google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour);

                        /** AdScheduleInfo end_minute. */
                        public end_minute: (google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v23.enums.MinuteOfHourEnum.MinuteOfHour);

                        /** AdScheduleInfo start_hour. */
                        public start_hour?: (number|null);

                        /** AdScheduleInfo end_hour. */
                        public end_hour?: (number|null);

                        /** AdScheduleInfo day_of_week. */
                        public day_of_week: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek);

                        /**
                         * Creates a new AdScheduleInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdScheduleInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAdScheduleInfo): google.ads.googleads.v23.common.AdScheduleInfo;

                        /**
                         * Encodes the specified AdScheduleInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AdScheduleInfo.verify|verify} messages.
                         * @param message AdScheduleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAdScheduleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdScheduleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AdScheduleInfo.verify|verify} messages.
                         * @param message AdScheduleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAdScheduleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdScheduleInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdScheduleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AdScheduleInfo;

                        /**
                         * Decodes an AdScheduleInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdScheduleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AdScheduleInfo;

                        /**
                         * Verifies an AdScheduleInfo message.
                         * @param message Plain 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 AdScheduleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdScheduleInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AdScheduleInfo;

                        /**
                         * Creates a plain object from an AdScheduleInfo message. Also converts values to other types if specified.
                         * @param message AdScheduleInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AdScheduleInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdScheduleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdScheduleInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AgeRangeInfo. */
                    interface IAgeRangeInfo {

                        /** AgeRangeInfo type */
                        type?: (google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType|keyof typeof google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType|null);
                    }

                    /** Represents an AgeRangeInfo. */
                    class AgeRangeInfo implements IAgeRangeInfo {

                        /**
                         * Constructs a new AgeRangeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAgeRangeInfo);

                        /** AgeRangeInfo type. */
                        public type: (google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType|keyof typeof google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType);

                        /**
                         * Creates a new AgeRangeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AgeRangeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAgeRangeInfo): google.ads.googleads.v23.common.AgeRangeInfo;

                        /**
                         * Encodes the specified AgeRangeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AgeRangeInfo.verify|verify} messages.
                         * @param message AgeRangeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAgeRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AgeRangeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AgeRangeInfo.verify|verify} messages.
                         * @param message AgeRangeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAgeRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeRangeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AgeRangeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AgeRangeInfo;

                        /**
                         * Decodes an AgeRangeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AgeRangeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AgeRangeInfo;

                        /**
                         * Verifies an AgeRangeInfo message.
                         * @param message Plain 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 AgeRangeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AgeRangeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AgeRangeInfo;

                        /**
                         * Creates a plain object from an AgeRangeInfo message. Also converts values to other types if specified.
                         * @param message AgeRangeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AgeRangeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AgeRangeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AgeRangeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenderInfo. */
                    interface IGenderInfo {

                        /** GenderInfo type */
                        type?: (google.ads.googleads.v23.enums.GenderTypeEnum.GenderType|keyof typeof google.ads.googleads.v23.enums.GenderTypeEnum.GenderType|null);
                    }

                    /** Represents a GenderInfo. */
                    class GenderInfo implements IGenderInfo {

                        /**
                         * Constructs a new GenderInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IGenderInfo);

                        /** GenderInfo type. */
                        public type: (google.ads.googleads.v23.enums.GenderTypeEnum.GenderType|keyof typeof google.ads.googleads.v23.enums.GenderTypeEnum.GenderType);

                        /**
                         * Creates a new GenderInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenderInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IGenderInfo): google.ads.googleads.v23.common.GenderInfo;

                        /**
                         * Encodes the specified GenderInfo message. Does not implicitly {@link google.ads.googleads.v23.common.GenderInfo.verify|verify} messages.
                         * @param message GenderInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IGenderInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenderInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.GenderInfo.verify|verify} messages.
                         * @param message GenderInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IGenderInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenderInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenderInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.GenderInfo;

                        /**
                         * Decodes a GenderInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenderInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.GenderInfo;

                        /**
                         * Verifies a GenderInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenderInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenderInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.GenderInfo;

                        /**
                         * Creates a plain object from a GenderInfo message. Also converts values to other types if specified.
                         * @param message GenderInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.GenderInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenderInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenderInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IncomeRangeInfo. */
                    interface IIncomeRangeInfo {

                        /** IncomeRangeInfo type */
                        type?: (google.ads.googleads.v23.enums.IncomeRangeTypeEnum.IncomeRangeType|keyof typeof google.ads.googleads.v23.enums.IncomeRangeTypeEnum.IncomeRangeType|null);
                    }

                    /** Represents an IncomeRangeInfo. */
                    class IncomeRangeInfo implements IIncomeRangeInfo {

                        /**
                         * Constructs a new IncomeRangeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IIncomeRangeInfo);

                        /** IncomeRangeInfo type. */
                        public type: (google.ads.googleads.v23.enums.IncomeRangeTypeEnum.IncomeRangeType|keyof typeof google.ads.googleads.v23.enums.IncomeRangeTypeEnum.IncomeRangeType);

                        /**
                         * Creates a new IncomeRangeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IncomeRangeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IIncomeRangeInfo): google.ads.googleads.v23.common.IncomeRangeInfo;

                        /**
                         * Encodes the specified IncomeRangeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.IncomeRangeInfo.verify|verify} messages.
                         * @param message IncomeRangeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IIncomeRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncomeRangeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.IncomeRangeInfo.verify|verify} messages.
                         * @param message IncomeRangeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IIncomeRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncomeRangeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IncomeRangeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.IncomeRangeInfo;

                        /**
                         * Decodes an IncomeRangeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IncomeRangeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.IncomeRangeInfo;

                        /**
                         * Verifies an IncomeRangeInfo message.
                         * @param message Plain 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 IncomeRangeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IncomeRangeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.IncomeRangeInfo;

                        /**
                         * Creates a plain object from an IncomeRangeInfo message. Also converts values to other types if specified.
                         * @param message IncomeRangeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.IncomeRangeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncomeRangeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IncomeRangeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ParentalStatusInfo. */
                    interface IParentalStatusInfo {

                        /** ParentalStatusInfo type */
                        type?: (google.ads.googleads.v23.enums.ParentalStatusTypeEnum.ParentalStatusType|keyof typeof google.ads.googleads.v23.enums.ParentalStatusTypeEnum.ParentalStatusType|null);
                    }

                    /** Represents a ParentalStatusInfo. */
                    class ParentalStatusInfo implements IParentalStatusInfo {

                        /**
                         * Constructs a new ParentalStatusInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IParentalStatusInfo);

                        /** ParentalStatusInfo type. */
                        public type: (google.ads.googleads.v23.enums.ParentalStatusTypeEnum.ParentalStatusType|keyof typeof google.ads.googleads.v23.enums.ParentalStatusTypeEnum.ParentalStatusType);

                        /**
                         * Creates a new ParentalStatusInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ParentalStatusInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IParentalStatusInfo): google.ads.googleads.v23.common.ParentalStatusInfo;

                        /**
                         * Encodes the specified ParentalStatusInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ParentalStatusInfo.verify|verify} messages.
                         * @param message ParentalStatusInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IParentalStatusInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ParentalStatusInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ParentalStatusInfo.verify|verify} messages.
                         * @param message ParentalStatusInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IParentalStatusInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ParentalStatusInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ParentalStatusInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ParentalStatusInfo;

                        /**
                         * Decodes a ParentalStatusInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ParentalStatusInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ParentalStatusInfo;

                        /**
                         * Verifies a ParentalStatusInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ParentalStatusInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ParentalStatusInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ParentalStatusInfo;

                        /**
                         * Creates a plain object from a ParentalStatusInfo message. Also converts values to other types if specified.
                         * @param message ParentalStatusInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ParentalStatusInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ParentalStatusInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ParentalStatusInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeVideoInfo. */
                    interface IYouTubeVideoInfo {

                        /** YouTubeVideoInfo video_id */
                        video_id?: (string|null);
                    }

                    /** Represents a YouTubeVideoInfo. */
                    class YouTubeVideoInfo implements IYouTubeVideoInfo {

                        /**
                         * Constructs a new YouTubeVideoInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYouTubeVideoInfo);

                        /** YouTubeVideoInfo video_id. */
                        public video_id?: (string|null);

                        /**
                         * Creates a new YouTubeVideoInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeVideoInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYouTubeVideoInfo): google.ads.googleads.v23.common.YouTubeVideoInfo;

                        /**
                         * Encodes the specified YouTubeVideoInfo message. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeVideoInfo.verify|verify} messages.
                         * @param message YouTubeVideoInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYouTubeVideoInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeVideoInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeVideoInfo.verify|verify} messages.
                         * @param message YouTubeVideoInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYouTubeVideoInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeVideoInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeVideoInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.YouTubeVideoInfo;

                        /**
                         * Decodes a YouTubeVideoInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeVideoInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.YouTubeVideoInfo;

                        /**
                         * Verifies a YouTubeVideoInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeVideoInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeVideoInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.YouTubeVideoInfo;

                        /**
                         * Creates a plain object from a YouTubeVideoInfo message. Also converts values to other types if specified.
                         * @param message YouTubeVideoInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.YouTubeVideoInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeVideoInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeVideoInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeChannelInfo. */
                    interface IYouTubeChannelInfo {

                        /** YouTubeChannelInfo channel_id */
                        channel_id?: (string|null);
                    }

                    /** Represents a YouTubeChannelInfo. */
                    class YouTubeChannelInfo implements IYouTubeChannelInfo {

                        /**
                         * Constructs a new YouTubeChannelInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYouTubeChannelInfo);

                        /** YouTubeChannelInfo channel_id. */
                        public channel_id?: (string|null);

                        /**
                         * Creates a new YouTubeChannelInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeChannelInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYouTubeChannelInfo): google.ads.googleads.v23.common.YouTubeChannelInfo;

                        /**
                         * Encodes the specified YouTubeChannelInfo message. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeChannelInfo.verify|verify} messages.
                         * @param message YouTubeChannelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYouTubeChannelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeChannelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeChannelInfo.verify|verify} messages.
                         * @param message YouTubeChannelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYouTubeChannelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeChannelInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeChannelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.YouTubeChannelInfo;

                        /**
                         * Decodes a YouTubeChannelInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeChannelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.YouTubeChannelInfo;

                        /**
                         * Verifies a YouTubeChannelInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeChannelInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeChannelInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.YouTubeChannelInfo;

                        /**
                         * Creates a plain object from a YouTubeChannelInfo message. Also converts values to other types if specified.
                         * @param message YouTubeChannelInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.YouTubeChannelInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeChannelInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeChannelInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListInfo. */
                    interface IUserListInfo {

                        /** UserListInfo user_list */
                        user_list?: (string|null);
                    }

                    /** Represents a UserListInfo. */
                    class UserListInfo implements IUserListInfo {

                        /**
                         * Constructs a new UserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListInfo);

                        /** UserListInfo user_list. */
                        public user_list?: (string|null);

                        /**
                         * Creates a new UserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListInfo): google.ads.googleads.v23.common.UserListInfo;

                        /**
                         * Encodes the specified UserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListInfo.verify|verify} messages.
                         * @param message UserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListInfo.verify|verify} messages.
                         * @param message UserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListInfo;

                        /**
                         * Decodes a UserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListInfo;

                        /**
                         * Verifies a UserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListInfo;

                        /**
                         * Creates a plain object from a UserListInfo message. Also converts values to other types if specified.
                         * @param message UserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProximityInfo. */
                    interface IProximityInfo {

                        /** ProximityInfo geo_point */
                        geo_point?: (google.ads.googleads.v23.common.IGeoPointInfo|null);

                        /** ProximityInfo radius */
                        radius?: (number|null);

                        /** ProximityInfo radius_units */
                        radius_units?: (google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits|keyof typeof google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits|null);

                        /** ProximityInfo address */
                        address?: (google.ads.googleads.v23.common.IAddressInfo|null);
                    }

                    /** Represents a ProximityInfo. */
                    class ProximityInfo implements IProximityInfo {

                        /**
                         * Constructs a new ProximityInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IProximityInfo);

                        /** ProximityInfo geo_point. */
                        public geo_point?: (google.ads.googleads.v23.common.IGeoPointInfo|null);

                        /** ProximityInfo radius. */
                        public radius?: (number|null);

                        /** ProximityInfo radius_units. */
                        public radius_units: (google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits|keyof typeof google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits);

                        /** ProximityInfo address. */
                        public address?: (google.ads.googleads.v23.common.IAddressInfo|null);

                        /**
                         * Creates a new ProximityInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProximityInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IProximityInfo): google.ads.googleads.v23.common.ProximityInfo;

                        /**
                         * Encodes the specified ProximityInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ProximityInfo.verify|verify} messages.
                         * @param message ProximityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IProximityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProximityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ProximityInfo.verify|verify} messages.
                         * @param message ProximityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IProximityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProximityInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProximityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ProximityInfo;

                        /**
                         * Decodes a ProximityInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProximityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ProximityInfo;

                        /**
                         * Verifies a ProximityInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProximityInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProximityInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ProximityInfo;

                        /**
                         * Creates a plain object from a ProximityInfo message. Also converts values to other types if specified.
                         * @param message ProximityInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ProximityInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProximityInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProximityInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GeoPointInfo. */
                    interface IGeoPointInfo {

                        /** GeoPointInfo longitude_in_micro_degrees */
                        longitude_in_micro_degrees?: (number|null);

                        /** GeoPointInfo latitude_in_micro_degrees */
                        latitude_in_micro_degrees?: (number|null);
                    }

                    /** Represents a GeoPointInfo. */
                    class GeoPointInfo implements IGeoPointInfo {

                        /**
                         * Constructs a new GeoPointInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IGeoPointInfo);

                        /** GeoPointInfo longitude_in_micro_degrees. */
                        public longitude_in_micro_degrees?: (number|null);

                        /** GeoPointInfo latitude_in_micro_degrees. */
                        public latitude_in_micro_degrees?: (number|null);

                        /**
                         * Creates a new GeoPointInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoPointInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IGeoPointInfo): google.ads.googleads.v23.common.GeoPointInfo;

                        /**
                         * Encodes the specified GeoPointInfo message. Does not implicitly {@link google.ads.googleads.v23.common.GeoPointInfo.verify|verify} messages.
                         * @param message GeoPointInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IGeoPointInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoPointInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.GeoPointInfo.verify|verify} messages.
                         * @param message GeoPointInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IGeoPointInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoPointInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeoPointInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.GeoPointInfo;

                        /**
                         * Decodes a GeoPointInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeoPointInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.GeoPointInfo;

                        /**
                         * Verifies a GeoPointInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoPointInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeoPointInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.GeoPointInfo;

                        /**
                         * Creates a plain object from a GeoPointInfo message. Also converts values to other types if specified.
                         * @param message GeoPointInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.GeoPointInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoPointInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeoPointInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddressInfo. */
                    interface IAddressInfo {

                        /** AddressInfo postal_code */
                        postal_code?: (string|null);

                        /** AddressInfo province_code */
                        province_code?: (string|null);

                        /** AddressInfo country_code */
                        country_code?: (string|null);

                        /** AddressInfo province_name */
                        province_name?: (string|null);

                        /** AddressInfo street_address */
                        street_address?: (string|null);

                        /** AddressInfo street_address2 */
                        street_address2?: (string|null);

                        /** AddressInfo city_name */
                        city_name?: (string|null);
                    }

                    /** Represents an AddressInfo. */
                    class AddressInfo implements IAddressInfo {

                        /**
                         * Constructs a new AddressInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAddressInfo);

                        /** AddressInfo postal_code. */
                        public postal_code?: (string|null);

                        /** AddressInfo province_code. */
                        public province_code?: (string|null);

                        /** AddressInfo country_code. */
                        public country_code?: (string|null);

                        /** AddressInfo province_name. */
                        public province_name?: (string|null);

                        /** AddressInfo street_address. */
                        public street_address?: (string|null);

                        /** AddressInfo street_address2. */
                        public street_address2?: (string|null);

                        /** AddressInfo city_name. */
                        public city_name?: (string|null);

                        /**
                         * Creates a new AddressInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddressInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAddressInfo): google.ads.googleads.v23.common.AddressInfo;

                        /**
                         * Encodes the specified AddressInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AddressInfo.verify|verify} messages.
                         * @param message AddressInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAddressInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddressInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AddressInfo.verify|verify} messages.
                         * @param message AddressInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAddressInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddressInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddressInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AddressInfo;

                        /**
                         * Decodes an AddressInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddressInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AddressInfo;

                        /**
                         * Verifies an AddressInfo message.
                         * @param message Plain 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 AddressInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddressInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AddressInfo;

                        /**
                         * Creates a plain object from an AddressInfo message. Also converts values to other types if specified.
                         * @param message AddressInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AddressInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddressInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddressInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TopicInfo. */
                    interface ITopicInfo {

                        /** TopicInfo topic_constant */
                        topic_constant?: (string|null);

                        /** TopicInfo path */
                        path?: (string[]|null);
                    }

                    /** Represents a TopicInfo. */
                    class TopicInfo implements ITopicInfo {

                        /**
                         * Constructs a new TopicInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITopicInfo);

                        /** TopicInfo topic_constant. */
                        public topic_constant?: (string|null);

                        /** TopicInfo path. */
                        public path: string[];

                        /**
                         * Creates a new TopicInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TopicInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITopicInfo): google.ads.googleads.v23.common.TopicInfo;

                        /**
                         * Encodes the specified TopicInfo message. Does not implicitly {@link google.ads.googleads.v23.common.TopicInfo.verify|verify} messages.
                         * @param message TopicInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITopicInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TopicInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TopicInfo.verify|verify} messages.
                         * @param message TopicInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITopicInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TopicInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TopicInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TopicInfo;

                        /**
                         * Decodes a TopicInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TopicInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TopicInfo;

                        /**
                         * Verifies a TopicInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TopicInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TopicInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TopicInfo;

                        /**
                         * Creates a plain object from a TopicInfo message. Also converts values to other types if specified.
                         * @param message TopicInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TopicInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TopicInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TopicInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LanguageInfo. */
                    interface ILanguageInfo {

                        /** LanguageInfo language_constant */
                        language_constant?: (string|null);
                    }

                    /** Represents a LanguageInfo. */
                    class LanguageInfo implements ILanguageInfo {

                        /**
                         * Constructs a new LanguageInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILanguageInfo);

                        /** LanguageInfo language_constant. */
                        public language_constant?: (string|null);

                        /**
                         * Creates a new LanguageInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LanguageInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILanguageInfo): google.ads.googleads.v23.common.LanguageInfo;

                        /**
                         * Encodes the specified LanguageInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LanguageInfo.verify|verify} messages.
                         * @param message LanguageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILanguageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LanguageInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LanguageInfo.verify|verify} messages.
                         * @param message LanguageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILanguageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LanguageInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LanguageInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LanguageInfo;

                        /**
                         * Decodes a LanguageInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LanguageInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LanguageInfo;

                        /**
                         * Verifies a LanguageInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LanguageInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LanguageInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LanguageInfo;

                        /**
                         * Creates a plain object from a LanguageInfo message. Also converts values to other types if specified.
                         * @param message LanguageInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LanguageInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LanguageInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LanguageInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IpBlockInfo. */
                    interface IIpBlockInfo {

                        /** IpBlockInfo ip_address */
                        ip_address?: (string|null);
                    }

                    /** Represents an IpBlockInfo. */
                    class IpBlockInfo implements IIpBlockInfo {

                        /**
                         * Constructs a new IpBlockInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IIpBlockInfo);

                        /** IpBlockInfo ip_address. */
                        public ip_address?: (string|null);

                        /**
                         * Creates a new IpBlockInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IpBlockInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IIpBlockInfo): google.ads.googleads.v23.common.IpBlockInfo;

                        /**
                         * Encodes the specified IpBlockInfo message. Does not implicitly {@link google.ads.googleads.v23.common.IpBlockInfo.verify|verify} messages.
                         * @param message IpBlockInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IIpBlockInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IpBlockInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.IpBlockInfo.verify|verify} messages.
                         * @param message IpBlockInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IIpBlockInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IpBlockInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IpBlockInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.IpBlockInfo;

                        /**
                         * Decodes an IpBlockInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IpBlockInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.IpBlockInfo;

                        /**
                         * Verifies an IpBlockInfo message.
                         * @param message Plain 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 IpBlockInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IpBlockInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.IpBlockInfo;

                        /**
                         * Creates a plain object from an IpBlockInfo message. Also converts values to other types if specified.
                         * @param message IpBlockInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.IpBlockInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IpBlockInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IpBlockInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ContentLabelInfo. */
                    interface IContentLabelInfo {

                        /** ContentLabelInfo type */
                        type?: (google.ads.googleads.v23.enums.ContentLabelTypeEnum.ContentLabelType|keyof typeof google.ads.googleads.v23.enums.ContentLabelTypeEnum.ContentLabelType|null);
                    }

                    /** Represents a ContentLabelInfo. */
                    class ContentLabelInfo implements IContentLabelInfo {

                        /**
                         * Constructs a new ContentLabelInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IContentLabelInfo);

                        /** ContentLabelInfo type. */
                        public type: (google.ads.googleads.v23.enums.ContentLabelTypeEnum.ContentLabelType|keyof typeof google.ads.googleads.v23.enums.ContentLabelTypeEnum.ContentLabelType);

                        /**
                         * Creates a new ContentLabelInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ContentLabelInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IContentLabelInfo): google.ads.googleads.v23.common.ContentLabelInfo;

                        /**
                         * Encodes the specified ContentLabelInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ContentLabelInfo.verify|verify} messages.
                         * @param message ContentLabelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IContentLabelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContentLabelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ContentLabelInfo.verify|verify} messages.
                         * @param message ContentLabelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IContentLabelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContentLabelInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ContentLabelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ContentLabelInfo;

                        /**
                         * Decodes a ContentLabelInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ContentLabelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ContentLabelInfo;

                        /**
                         * Verifies a ContentLabelInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContentLabelInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ContentLabelInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ContentLabelInfo;

                        /**
                         * Creates a plain object from a ContentLabelInfo message. Also converts values to other types if specified.
                         * @param message ContentLabelInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ContentLabelInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContentLabelInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ContentLabelInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CarrierInfo. */
                    interface ICarrierInfo {

                        /** CarrierInfo carrier_constant */
                        carrier_constant?: (string|null);
                    }

                    /** Represents a CarrierInfo. */
                    class CarrierInfo implements ICarrierInfo {

                        /**
                         * Constructs a new CarrierInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICarrierInfo);

                        /** CarrierInfo carrier_constant. */
                        public carrier_constant?: (string|null);

                        /**
                         * Creates a new CarrierInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CarrierInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICarrierInfo): google.ads.googleads.v23.common.CarrierInfo;

                        /**
                         * Encodes the specified CarrierInfo message. Does not implicitly {@link google.ads.googleads.v23.common.CarrierInfo.verify|verify} messages.
                         * @param message CarrierInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICarrierInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CarrierInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CarrierInfo.verify|verify} messages.
                         * @param message CarrierInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICarrierInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CarrierInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CarrierInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CarrierInfo;

                        /**
                         * Decodes a CarrierInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CarrierInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CarrierInfo;

                        /**
                         * Verifies a CarrierInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CarrierInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CarrierInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CarrierInfo;

                        /**
                         * Creates a plain object from a CarrierInfo message. Also converts values to other types if specified.
                         * @param message CarrierInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CarrierInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CarrierInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CarrierInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserInterestInfo. */
                    interface IUserInterestInfo {

                        /** UserInterestInfo user_interest_category */
                        user_interest_category?: (string|null);
                    }

                    /** Represents a UserInterestInfo. */
                    class UserInterestInfo implements IUserInterestInfo {

                        /**
                         * Constructs a new UserInterestInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserInterestInfo);

                        /** UserInterestInfo user_interest_category. */
                        public user_interest_category?: (string|null);

                        /**
                         * Creates a new UserInterestInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserInterestInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserInterestInfo): google.ads.googleads.v23.common.UserInterestInfo;

                        /**
                         * Encodes the specified UserInterestInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserInterestInfo.verify|verify} messages.
                         * @param message UserInterestInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserInterestInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterestInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserInterestInfo.verify|verify} messages.
                         * @param message UserInterestInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserInterestInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterestInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserInterestInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserInterestInfo;

                        /**
                         * Decodes a UserInterestInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserInterestInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserInterestInfo;

                        /**
                         * Verifies a UserInterestInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterestInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserInterestInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserInterestInfo;

                        /**
                         * Creates a plain object from a UserInterestInfo message. Also converts values to other types if specified.
                         * @param message UserInterestInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserInterestInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterestInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserInterestInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a WebpageInfo. */
                    interface IWebpageInfo {

                        /** WebpageInfo criterion_name */
                        criterion_name?: (string|null);

                        /** WebpageInfo conditions */
                        conditions?: (google.ads.googleads.v23.common.IWebpageConditionInfo[]|null);

                        /** WebpageInfo coverage_percentage */
                        coverage_percentage?: (number|null);

                        /** WebpageInfo sample */
                        sample?: (google.ads.googleads.v23.common.IWebpageSampleInfo|null);
                    }

                    /** Represents a WebpageInfo. */
                    class WebpageInfo implements IWebpageInfo {

                        /**
                         * Constructs a new WebpageInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IWebpageInfo);

                        /** WebpageInfo criterion_name. */
                        public criterion_name?: (string|null);

                        /** WebpageInfo conditions. */
                        public conditions: google.ads.googleads.v23.common.IWebpageConditionInfo[];

                        /** WebpageInfo coverage_percentage. */
                        public coverage_percentage: number;

                        /** WebpageInfo sample. */
                        public sample?: (google.ads.googleads.v23.common.IWebpageSampleInfo|null);

                        /**
                         * Creates a new WebpageInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IWebpageInfo): google.ads.googleads.v23.common.WebpageInfo;

                        /**
                         * Encodes the specified WebpageInfo message. Does not implicitly {@link google.ads.googleads.v23.common.WebpageInfo.verify|verify} messages.
                         * @param message WebpageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IWebpageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.WebpageInfo.verify|verify} messages.
                         * @param message WebpageInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IWebpageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WebpageInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.WebpageInfo;

                        /**
                         * Decodes a WebpageInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WebpageInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.WebpageInfo;

                        /**
                         * Verifies a WebpageInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WebpageInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.WebpageInfo;

                        /**
                         * Creates a plain object from a WebpageInfo message. Also converts values to other types if specified.
                         * @param message WebpageInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.WebpageInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WebpageInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a WebpageConditionInfo. */
                    interface IWebpageConditionInfo {

                        /** WebpageConditionInfo operand */
                        operand?: (google.ads.googleads.v23.enums.WebpageConditionOperandEnum.WebpageConditionOperand|keyof typeof google.ads.googleads.v23.enums.WebpageConditionOperandEnum.WebpageConditionOperand|null);

                        /** WebpageConditionInfo operator */
                        operator?: (google.ads.googleads.v23.enums.WebpageConditionOperatorEnum.WebpageConditionOperator|keyof typeof google.ads.googleads.v23.enums.WebpageConditionOperatorEnum.WebpageConditionOperator|null);

                        /** WebpageConditionInfo argument */
                        argument?: (string|null);
                    }

                    /** Represents a WebpageConditionInfo. */
                    class WebpageConditionInfo implements IWebpageConditionInfo {

                        /**
                         * Constructs a new WebpageConditionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IWebpageConditionInfo);

                        /** WebpageConditionInfo operand. */
                        public operand: (google.ads.googleads.v23.enums.WebpageConditionOperandEnum.WebpageConditionOperand|keyof typeof google.ads.googleads.v23.enums.WebpageConditionOperandEnum.WebpageConditionOperand);

                        /** WebpageConditionInfo operator. */
                        public operator: (google.ads.googleads.v23.enums.WebpageConditionOperatorEnum.WebpageConditionOperator|keyof typeof google.ads.googleads.v23.enums.WebpageConditionOperatorEnum.WebpageConditionOperator);

                        /** WebpageConditionInfo argument. */
                        public argument?: (string|null);

                        /**
                         * Creates a new WebpageConditionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageConditionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IWebpageConditionInfo): google.ads.googleads.v23.common.WebpageConditionInfo;

                        /**
                         * Encodes the specified WebpageConditionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.WebpageConditionInfo.verify|verify} messages.
                         * @param message WebpageConditionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IWebpageConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageConditionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.WebpageConditionInfo.verify|verify} messages.
                         * @param message WebpageConditionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IWebpageConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageConditionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WebpageConditionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.WebpageConditionInfo;

                        /**
                         * Decodes a WebpageConditionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WebpageConditionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.WebpageConditionInfo;

                        /**
                         * Verifies a WebpageConditionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageConditionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WebpageConditionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.WebpageConditionInfo;

                        /**
                         * Creates a plain object from a WebpageConditionInfo message. Also converts values to other types if specified.
                         * @param message WebpageConditionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.WebpageConditionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageConditionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WebpageConditionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a WebpageListInfo. */
                    interface IWebpageListInfo {

                        /** WebpageListInfo shared_set */
                        shared_set?: (string|null);
                    }

                    /** Represents a WebpageListInfo. */
                    class WebpageListInfo implements IWebpageListInfo {

                        /**
                         * Constructs a new WebpageListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IWebpageListInfo);

                        /** WebpageListInfo shared_set. */
                        public shared_set?: (string|null);

                        /**
                         * Creates a new WebpageListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IWebpageListInfo): google.ads.googleads.v23.common.WebpageListInfo;

                        /**
                         * Encodes the specified WebpageListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.WebpageListInfo.verify|verify} messages.
                         * @param message WebpageListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IWebpageListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.WebpageListInfo.verify|verify} messages.
                         * @param message WebpageListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IWebpageListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WebpageListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.WebpageListInfo;

                        /**
                         * Decodes a WebpageListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WebpageListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.WebpageListInfo;

                        /**
                         * Verifies a WebpageListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WebpageListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.WebpageListInfo;

                        /**
                         * Creates a plain object from a WebpageListInfo message. Also converts values to other types if specified.
                         * @param message WebpageListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.WebpageListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WebpageListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a WebpageSampleInfo. */
                    interface IWebpageSampleInfo {

                        /** WebpageSampleInfo sample_urls */
                        sample_urls?: (string[]|null);
                    }

                    /** Represents a WebpageSampleInfo. */
                    class WebpageSampleInfo implements IWebpageSampleInfo {

                        /**
                         * Constructs a new WebpageSampleInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IWebpageSampleInfo);

                        /** WebpageSampleInfo sample_urls. */
                        public sample_urls: string[];

                        /**
                         * Creates a new WebpageSampleInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageSampleInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IWebpageSampleInfo): google.ads.googleads.v23.common.WebpageSampleInfo;

                        /**
                         * Encodes the specified WebpageSampleInfo message. Does not implicitly {@link google.ads.googleads.v23.common.WebpageSampleInfo.verify|verify} messages.
                         * @param message WebpageSampleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IWebpageSampleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageSampleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.WebpageSampleInfo.verify|verify} messages.
                         * @param message WebpageSampleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IWebpageSampleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageSampleInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WebpageSampleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.WebpageSampleInfo;

                        /**
                         * Decodes a WebpageSampleInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WebpageSampleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.WebpageSampleInfo;

                        /**
                         * Verifies a WebpageSampleInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageSampleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WebpageSampleInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.WebpageSampleInfo;

                        /**
                         * Creates a plain object from a WebpageSampleInfo message. Also converts values to other types if specified.
                         * @param message WebpageSampleInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.WebpageSampleInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageSampleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WebpageSampleInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OperatingSystemVersionInfo. */
                    interface IOperatingSystemVersionInfo {

                        /** OperatingSystemVersionInfo operating_system_version_constant */
                        operating_system_version_constant?: (string|null);
                    }

                    /** Represents an OperatingSystemVersionInfo. */
                    class OperatingSystemVersionInfo implements IOperatingSystemVersionInfo {

                        /**
                         * Constructs a new OperatingSystemVersionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IOperatingSystemVersionInfo);

                        /** OperatingSystemVersionInfo operating_system_version_constant. */
                        public operating_system_version_constant?: (string|null);

                        /**
                         * Creates a new OperatingSystemVersionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperatingSystemVersionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IOperatingSystemVersionInfo): google.ads.googleads.v23.common.OperatingSystemVersionInfo;

                        /**
                         * Encodes the specified OperatingSystemVersionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.OperatingSystemVersionInfo.verify|verify} messages.
                         * @param message OperatingSystemVersionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IOperatingSystemVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatingSystemVersionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.OperatingSystemVersionInfo.verify|verify} messages.
                         * @param message OperatingSystemVersionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IOperatingSystemVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatingSystemVersionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperatingSystemVersionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.OperatingSystemVersionInfo;

                        /**
                         * Decodes an OperatingSystemVersionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperatingSystemVersionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.OperatingSystemVersionInfo;

                        /**
                         * Verifies an OperatingSystemVersionInfo message.
                         * @param message Plain 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 OperatingSystemVersionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OperatingSystemVersionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.OperatingSystemVersionInfo;

                        /**
                         * Creates a plain object from an OperatingSystemVersionInfo message. Also converts values to other types if specified.
                         * @param message OperatingSystemVersionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.OperatingSystemVersionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatingSystemVersionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OperatingSystemVersionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AppPaymentModelInfo. */
                    interface IAppPaymentModelInfo {

                        /** AppPaymentModelInfo type */
                        type?: (google.ads.googleads.v23.enums.AppPaymentModelTypeEnum.AppPaymentModelType|keyof typeof google.ads.googleads.v23.enums.AppPaymentModelTypeEnum.AppPaymentModelType|null);
                    }

                    /** Represents an AppPaymentModelInfo. */
                    class AppPaymentModelInfo implements IAppPaymentModelInfo {

                        /**
                         * Constructs a new AppPaymentModelInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAppPaymentModelInfo);

                        /** AppPaymentModelInfo type. */
                        public type: (google.ads.googleads.v23.enums.AppPaymentModelTypeEnum.AppPaymentModelType|keyof typeof google.ads.googleads.v23.enums.AppPaymentModelTypeEnum.AppPaymentModelType);

                        /**
                         * Creates a new AppPaymentModelInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppPaymentModelInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAppPaymentModelInfo): google.ads.googleads.v23.common.AppPaymentModelInfo;

                        /**
                         * Encodes the specified AppPaymentModelInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AppPaymentModelInfo.verify|verify} messages.
                         * @param message AppPaymentModelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAppPaymentModelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppPaymentModelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AppPaymentModelInfo.verify|verify} messages.
                         * @param message AppPaymentModelInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAppPaymentModelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppPaymentModelInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppPaymentModelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AppPaymentModelInfo;

                        /**
                         * Decodes an AppPaymentModelInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppPaymentModelInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AppPaymentModelInfo;

                        /**
                         * Verifies an AppPaymentModelInfo message.
                         * @param message Plain 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 AppPaymentModelInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppPaymentModelInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AppPaymentModelInfo;

                        /**
                         * Creates a plain object from an AppPaymentModelInfo message. Also converts values to other types if specified.
                         * @param message AppPaymentModelInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AppPaymentModelInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppPaymentModelInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppPaymentModelInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MobileDeviceInfo. */
                    interface IMobileDeviceInfo {

                        /** MobileDeviceInfo mobile_device_constant */
                        mobile_device_constant?: (string|null);
                    }

                    /** Represents a MobileDeviceInfo. */
                    class MobileDeviceInfo implements IMobileDeviceInfo {

                        /**
                         * Constructs a new MobileDeviceInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMobileDeviceInfo);

                        /** MobileDeviceInfo mobile_device_constant. */
                        public mobile_device_constant?: (string|null);

                        /**
                         * Creates a new MobileDeviceInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileDeviceInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMobileDeviceInfo): google.ads.googleads.v23.common.MobileDeviceInfo;

                        /**
                         * Encodes the specified MobileDeviceInfo message. Does not implicitly {@link google.ads.googleads.v23.common.MobileDeviceInfo.verify|verify} messages.
                         * @param message MobileDeviceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMobileDeviceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileDeviceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MobileDeviceInfo.verify|verify} messages.
                         * @param message MobileDeviceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMobileDeviceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileDeviceInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MobileDeviceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.MobileDeviceInfo;

                        /**
                         * Decodes a MobileDeviceInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MobileDeviceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.MobileDeviceInfo;

                        /**
                         * Verifies a MobileDeviceInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileDeviceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MobileDeviceInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.MobileDeviceInfo;

                        /**
                         * Creates a plain object from a MobileDeviceInfo message. Also converts values to other types if specified.
                         * @param message MobileDeviceInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.MobileDeviceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileDeviceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MobileDeviceInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomAffinityInfo. */
                    interface ICustomAffinityInfo {

                        /** CustomAffinityInfo custom_affinity */
                        custom_affinity?: (string|null);
                    }

                    /** Represents a CustomAffinityInfo. */
                    class CustomAffinityInfo implements ICustomAffinityInfo {

                        /**
                         * Constructs a new CustomAffinityInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomAffinityInfo);

                        /** CustomAffinityInfo custom_affinity. */
                        public custom_affinity?: (string|null);

                        /**
                         * Creates a new CustomAffinityInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAffinityInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomAffinityInfo): google.ads.googleads.v23.common.CustomAffinityInfo;

                        /**
                         * Encodes the specified CustomAffinityInfo message. Does not implicitly {@link google.ads.googleads.v23.common.CustomAffinityInfo.verify|verify} messages.
                         * @param message CustomAffinityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomAffinityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAffinityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomAffinityInfo.verify|verify} messages.
                         * @param message CustomAffinityInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomAffinityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAffinityInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAffinityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomAffinityInfo;

                        /**
                         * Decodes a CustomAffinityInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAffinityInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomAffinityInfo;

                        /**
                         * Verifies a CustomAffinityInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAffinityInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAffinityInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomAffinityInfo;

                        /**
                         * Creates a plain object from a CustomAffinityInfo message. Also converts values to other types if specified.
                         * @param message CustomAffinityInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomAffinityInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAffinityInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAffinityInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomIntentInfo. */
                    interface ICustomIntentInfo {

                        /** CustomIntentInfo custom_intent */
                        custom_intent?: (string|null);
                    }

                    /** Represents a CustomIntentInfo. */
                    class CustomIntentInfo implements ICustomIntentInfo {

                        /**
                         * Constructs a new CustomIntentInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomIntentInfo);

                        /** CustomIntentInfo custom_intent. */
                        public custom_intent?: (string|null);

                        /**
                         * Creates a new CustomIntentInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomIntentInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomIntentInfo): google.ads.googleads.v23.common.CustomIntentInfo;

                        /**
                         * Encodes the specified CustomIntentInfo message. Does not implicitly {@link google.ads.googleads.v23.common.CustomIntentInfo.verify|verify} messages.
                         * @param message CustomIntentInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomIntentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomIntentInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomIntentInfo.verify|verify} messages.
                         * @param message CustomIntentInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomIntentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomIntentInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomIntentInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomIntentInfo;

                        /**
                         * Decodes a CustomIntentInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomIntentInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomIntentInfo;

                        /**
                         * Verifies a CustomIntentInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomIntentInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomIntentInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomIntentInfo;

                        /**
                         * Creates a plain object from a CustomIntentInfo message. Also converts values to other types if specified.
                         * @param message CustomIntentInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomIntentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomIntentInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomIntentInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocationGroupInfo. */
                    interface ILocationGroupInfo {

                        /** LocationGroupInfo geo_target_constants */
                        geo_target_constants?: (string[]|null);

                        /** LocationGroupInfo radius */
                        radius?: (number|null);

                        /** LocationGroupInfo radius_units */
                        radius_units?: (google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits|keyof typeof google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits|null);

                        /** LocationGroupInfo feed_item_sets */
                        feed_item_sets?: (string[]|null);

                        /** LocationGroupInfo enable_customer_level_location_asset_set */
                        enable_customer_level_location_asset_set?: (boolean|null);

                        /** LocationGroupInfo location_group_asset_sets */
                        location_group_asset_sets?: (string[]|null);
                    }

                    /** Represents a LocationGroupInfo. */
                    class LocationGroupInfo implements ILocationGroupInfo {

                        /**
                         * Constructs a new LocationGroupInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocationGroupInfo);

                        /** LocationGroupInfo geo_target_constants. */
                        public geo_target_constants: string[];

                        /** LocationGroupInfo radius. */
                        public radius?: (number|null);

                        /** LocationGroupInfo radius_units. */
                        public radius_units: (google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits|keyof typeof google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits);

                        /** LocationGroupInfo feed_item_sets. */
                        public feed_item_sets: string[];

                        /** LocationGroupInfo enable_customer_level_location_asset_set. */
                        public enable_customer_level_location_asset_set?: (boolean|null);

                        /** LocationGroupInfo location_group_asset_sets. */
                        public location_group_asset_sets: string[];

                        /**
                         * Creates a new LocationGroupInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationGroupInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocationGroupInfo): google.ads.googleads.v23.common.LocationGroupInfo;

                        /**
                         * Encodes the specified LocationGroupInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LocationGroupInfo.verify|verify} messages.
                         * @param message LocationGroupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocationGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocationGroupInfo.verify|verify} messages.
                         * @param message LocationGroupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocationGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationGroupInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationGroupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LocationGroupInfo;

                        /**
                         * Decodes a LocationGroupInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationGroupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LocationGroupInfo;

                        /**
                         * Verifies a LocationGroupInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationGroupInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationGroupInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LocationGroupInfo;

                        /**
                         * Creates a plain object from a LocationGroupInfo message. Also converts values to other types if specified.
                         * @param message LocationGroupInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LocationGroupInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationGroupInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationGroupInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomAudienceInfo. */
                    interface ICustomAudienceInfo {

                        /** CustomAudienceInfo custom_audience */
                        custom_audience?: (string|null);
                    }

                    /** Represents a CustomAudienceInfo. */
                    class CustomAudienceInfo implements ICustomAudienceInfo {

                        /**
                         * Constructs a new CustomAudienceInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomAudienceInfo);

                        /** CustomAudienceInfo custom_audience. */
                        public custom_audience: string;

                        /**
                         * Creates a new CustomAudienceInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomAudienceInfo): google.ads.googleads.v23.common.CustomAudienceInfo;

                        /**
                         * Encodes the specified CustomAudienceInfo message. Does not implicitly {@link google.ads.googleads.v23.common.CustomAudienceInfo.verify|verify} messages.
                         * @param message CustomAudienceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomAudienceInfo.verify|verify} messages.
                         * @param message CustomAudienceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomAudienceInfo;

                        /**
                         * Decodes a CustomAudienceInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomAudienceInfo;

                        /**
                         * Verifies a CustomAudienceInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomAudienceInfo;

                        /**
                         * Creates a plain object from a CustomAudienceInfo message. Also converts values to other types if specified.
                         * @param message CustomAudienceInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomAudienceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CombinedAudienceInfo. */
                    interface ICombinedAudienceInfo {

                        /** CombinedAudienceInfo combined_audience */
                        combined_audience?: (string|null);
                    }

                    /** Represents a CombinedAudienceInfo. */
                    class CombinedAudienceInfo implements ICombinedAudienceInfo {

                        /**
                         * Constructs a new CombinedAudienceInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICombinedAudienceInfo);

                        /** CombinedAudienceInfo combined_audience. */
                        public combined_audience: string;

                        /**
                         * Creates a new CombinedAudienceInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CombinedAudienceInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICombinedAudienceInfo): google.ads.googleads.v23.common.CombinedAudienceInfo;

                        /**
                         * Encodes the specified CombinedAudienceInfo message. Does not implicitly {@link google.ads.googleads.v23.common.CombinedAudienceInfo.verify|verify} messages.
                         * @param message CombinedAudienceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICombinedAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CombinedAudienceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CombinedAudienceInfo.verify|verify} messages.
                         * @param message CombinedAudienceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICombinedAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CombinedAudienceInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CombinedAudienceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CombinedAudienceInfo;

                        /**
                         * Decodes a CombinedAudienceInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CombinedAudienceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CombinedAudienceInfo;

                        /**
                         * Verifies a CombinedAudienceInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CombinedAudienceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CombinedAudienceInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CombinedAudienceInfo;

                        /**
                         * Creates a plain object from a CombinedAudienceInfo message. Also converts values to other types if specified.
                         * @param message CombinedAudienceInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CombinedAudienceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CombinedAudienceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CombinedAudienceInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInfo. */
                    interface IAudienceInfo {

                        /** AudienceInfo audience */
                        audience?: (string|null);
                    }

                    /** Represents an AudienceInfo. */
                    class AudienceInfo implements IAudienceInfo {

                        /**
                         * Constructs a new AudienceInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceInfo);

                        /** AudienceInfo audience. */
                        public audience: string;

                        /**
                         * Creates a new AudienceInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceInfo): google.ads.googleads.v23.common.AudienceInfo;

                        /**
                         * Encodes the specified AudienceInfo message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInfo.verify|verify} messages.
                         * @param message AudienceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInfo.verify|verify} messages.
                         * @param message AudienceInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceInfo;

                        /**
                         * Decodes an AudienceInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceInfo;

                        /**
                         * Verifies an AudienceInfo message.
                         * @param message Plain 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 AudienceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceInfo;

                        /**
                         * Creates a plain object from an AudienceInfo message. Also converts values to other types if specified.
                         * @param message AudienceInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordThemeInfo. */
                    interface IKeywordThemeInfo {

                        /** KeywordThemeInfo keyword_theme_constant */
                        keyword_theme_constant?: (string|null);

                        /** KeywordThemeInfo free_form_keyword_theme */
                        free_form_keyword_theme?: (string|null);
                    }

                    /** Represents a KeywordThemeInfo. */
                    class KeywordThemeInfo implements IKeywordThemeInfo {

                        /**
                         * Constructs a new KeywordThemeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordThemeInfo);

                        /** KeywordThemeInfo keyword_theme_constant. */
                        public keyword_theme_constant?: (string|null);

                        /** KeywordThemeInfo free_form_keyword_theme. */
                        public free_form_keyword_theme?: (string|null);

                        /** KeywordThemeInfo keyword_theme. */
                        public keyword_theme?: ("keyword_theme_constant"|"free_form_keyword_theme");

                        /**
                         * Creates a new KeywordThemeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordThemeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordThemeInfo): google.ads.googleads.v23.common.KeywordThemeInfo;

                        /**
                         * Encodes the specified KeywordThemeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordThemeInfo.verify|verify} messages.
                         * @param message KeywordThemeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordThemeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordThemeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordThemeInfo.verify|verify} messages.
                         * @param message KeywordThemeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordThemeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordThemeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordThemeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KeywordThemeInfo;

                        /**
                         * Decodes a KeywordThemeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordThemeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KeywordThemeInfo;

                        /**
                         * Verifies a KeywordThemeInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordThemeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordThemeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KeywordThemeInfo;

                        /**
                         * Creates a plain object from a KeywordThemeInfo message. Also converts values to other types if specified.
                         * @param message KeywordThemeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KeywordThemeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordThemeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordThemeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocalServiceIdInfo. */
                    interface ILocalServiceIdInfo {

                        /** LocalServiceIdInfo service_id */
                        service_id?: (string|null);
                    }

                    /** Represents a LocalServiceIdInfo. */
                    class LocalServiceIdInfo implements ILocalServiceIdInfo {

                        /**
                         * Constructs a new LocalServiceIdInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocalServiceIdInfo);

                        /** LocalServiceIdInfo service_id. */
                        public service_id: string;

                        /**
                         * Creates a new LocalServiceIdInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServiceIdInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocalServiceIdInfo): google.ads.googleads.v23.common.LocalServiceIdInfo;

                        /**
                         * Encodes the specified LocalServiceIdInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LocalServiceIdInfo.verify|verify} messages.
                         * @param message LocalServiceIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocalServiceIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServiceIdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocalServiceIdInfo.verify|verify} messages.
                         * @param message LocalServiceIdInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocalServiceIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServiceIdInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServiceIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LocalServiceIdInfo;

                        /**
                         * Decodes a LocalServiceIdInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServiceIdInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LocalServiceIdInfo;

                        /**
                         * Verifies a LocalServiceIdInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServiceIdInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServiceIdInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LocalServiceIdInfo;

                        /**
                         * Creates a plain object from a LocalServiceIdInfo message. Also converts values to other types if specified.
                         * @param message LocalServiceIdInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LocalServiceIdInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServiceIdInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServiceIdInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchThemeInfo. */
                    interface ISearchThemeInfo {

                        /** SearchThemeInfo text */
                        text?: (string|null);
                    }

                    /** Represents a SearchThemeInfo. */
                    class SearchThemeInfo implements ISearchThemeInfo {

                        /**
                         * Constructs a new SearchThemeInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISearchThemeInfo);

                        /** SearchThemeInfo text. */
                        public text: string;

                        /**
                         * Creates a new SearchThemeInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchThemeInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISearchThemeInfo): google.ads.googleads.v23.common.SearchThemeInfo;

                        /**
                         * Encodes the specified SearchThemeInfo message. Does not implicitly {@link google.ads.googleads.v23.common.SearchThemeInfo.verify|verify} messages.
                         * @param message SearchThemeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISearchThemeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchThemeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.SearchThemeInfo.verify|verify} messages.
                         * @param message SearchThemeInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISearchThemeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchThemeInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchThemeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.SearchThemeInfo;

                        /**
                         * Decodes a SearchThemeInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchThemeInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.SearchThemeInfo;

                        /**
                         * Verifies a SearchThemeInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchThemeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchThemeInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.SearchThemeInfo;

                        /**
                         * Creates a plain object from a SearchThemeInfo message. Also converts values to other types if specified.
                         * @param message SearchThemeInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.SearchThemeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchThemeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchThemeInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BrandInfo. */
                    interface IBrandInfo {

                        /** BrandInfo display_name */
                        display_name?: (string|null);

                        /** BrandInfo entity_id */
                        entity_id?: (string|null);

                        /** BrandInfo primary_url */
                        primary_url?: (string|null);

                        /** BrandInfo rejection_reason */
                        rejection_reason?: (google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum.BrandRequestRejectionReason|keyof typeof google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum.BrandRequestRejectionReason|null);

                        /** BrandInfo status */
                        status?: (google.ads.googleads.v23.enums.BrandStateEnum.BrandState|keyof typeof google.ads.googleads.v23.enums.BrandStateEnum.BrandState|null);
                    }

                    /** Represents a BrandInfo. */
                    class BrandInfo implements IBrandInfo {

                        /**
                         * Constructs a new BrandInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBrandInfo);

                        /** BrandInfo display_name. */
                        public display_name?: (string|null);

                        /** BrandInfo entity_id. */
                        public entity_id?: (string|null);

                        /** BrandInfo primary_url. */
                        public primary_url?: (string|null);

                        /** BrandInfo rejection_reason. */
                        public rejection_reason?: (google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum.BrandRequestRejectionReason|keyof typeof google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum.BrandRequestRejectionReason|null);

                        /** BrandInfo status. */
                        public status?: (google.ads.googleads.v23.enums.BrandStateEnum.BrandState|keyof typeof google.ads.googleads.v23.enums.BrandStateEnum.BrandState|null);

                        /**
                         * Creates a new BrandInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBrandInfo): google.ads.googleads.v23.common.BrandInfo;

                        /**
                         * Encodes the specified BrandInfo message. Does not implicitly {@link google.ads.googleads.v23.common.BrandInfo.verify|verify} messages.
                         * @param message BrandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBrandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BrandInfo.verify|verify} messages.
                         * @param message BrandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBrandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.BrandInfo;

                        /**
                         * Decodes a BrandInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.BrandInfo;

                        /**
                         * Verifies a BrandInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.BrandInfo;

                        /**
                         * Creates a plain object from a BrandInfo message. Also converts values to other types if specified.
                         * @param message BrandInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.BrandInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BrandListInfo. */
                    interface IBrandListInfo {

                        /** BrandListInfo shared_set */
                        shared_set?: (string|null);
                    }

                    /** Represents a BrandListInfo. */
                    class BrandListInfo implements IBrandListInfo {

                        /**
                         * Constructs a new BrandListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBrandListInfo);

                        /** BrandListInfo shared_set. */
                        public shared_set?: (string|null);

                        /**
                         * Creates a new BrandListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBrandListInfo): google.ads.googleads.v23.common.BrandListInfo;

                        /**
                         * Encodes the specified BrandListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.BrandListInfo.verify|verify} messages.
                         * @param message BrandListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBrandListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BrandListInfo.verify|verify} messages.
                         * @param message BrandListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBrandListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.BrandListInfo;

                        /**
                         * Decodes a BrandListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.BrandListInfo;

                        /**
                         * Verifies a BrandListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.BrandListInfo;

                        /**
                         * Creates a plain object from a BrandListInfo message. Also converts values to other types if specified.
                         * @param message BrandListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.BrandListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LifeEventInfo. */
                    interface ILifeEventInfo {

                        /** LifeEventInfo life_event_id */
                        life_event_id?: (number|null);
                    }

                    /** Represents a LifeEventInfo. */
                    class LifeEventInfo implements ILifeEventInfo {

                        /**
                         * Constructs a new LifeEventInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILifeEventInfo);

                        /** LifeEventInfo life_event_id. */
                        public life_event_id?: (number|null);

                        /**
                         * Creates a new LifeEventInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LifeEventInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILifeEventInfo): google.ads.googleads.v23.common.LifeEventInfo;

                        /**
                         * Encodes the specified LifeEventInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LifeEventInfo.verify|verify} messages.
                         * @param message LifeEventInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILifeEventInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LifeEventInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LifeEventInfo.verify|verify} messages.
                         * @param message LifeEventInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILifeEventInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LifeEventInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LifeEventInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LifeEventInfo;

                        /**
                         * Decodes a LifeEventInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LifeEventInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LifeEventInfo;

                        /**
                         * Verifies a LifeEventInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LifeEventInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LifeEventInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LifeEventInfo;

                        /**
                         * Creates a plain object from a LifeEventInfo message. Also converts values to other types if specified.
                         * @param message LifeEventInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LifeEventInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LifeEventInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LifeEventInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExtendedDemographicInfo. */
                    interface IExtendedDemographicInfo {

                        /** ExtendedDemographicInfo extended_demographic_id */
                        extended_demographic_id?: (number|null);
                    }

                    /** Represents an ExtendedDemographicInfo. */
                    class ExtendedDemographicInfo implements IExtendedDemographicInfo {

                        /**
                         * Constructs a new ExtendedDemographicInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IExtendedDemographicInfo);

                        /** ExtendedDemographicInfo extended_demographic_id. */
                        public extended_demographic_id?: (number|null);

                        /**
                         * Creates a new ExtendedDemographicInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExtendedDemographicInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IExtendedDemographicInfo): google.ads.googleads.v23.common.ExtendedDemographicInfo;

                        /**
                         * Encodes the specified ExtendedDemographicInfo message. Does not implicitly {@link google.ads.googleads.v23.common.ExtendedDemographicInfo.verify|verify} messages.
                         * @param message ExtendedDemographicInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IExtendedDemographicInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtendedDemographicInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ExtendedDemographicInfo.verify|verify} messages.
                         * @param message ExtendedDemographicInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IExtendedDemographicInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtendedDemographicInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExtendedDemographicInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ExtendedDemographicInfo;

                        /**
                         * Decodes an ExtendedDemographicInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExtendedDemographicInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ExtendedDemographicInfo;

                        /**
                         * Verifies an ExtendedDemographicInfo message.
                         * @param message Plain 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 ExtendedDemographicInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExtendedDemographicInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ExtendedDemographicInfo;

                        /**
                         * Creates a plain object from an ExtendedDemographicInfo message. Also converts values to other types if specified.
                         * @param message ExtendedDemographicInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ExtendedDemographicInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtendedDemographicInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExtendedDemographicInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a VideoLineupInfo. */
                    interface IVideoLineupInfo {

                        /** VideoLineupInfo video_lineup_id */
                        video_lineup_id?: (number|null);
                    }

                    /** Represents a VideoLineupInfo. */
                    class VideoLineupInfo implements IVideoLineupInfo {

                        /**
                         * Constructs a new VideoLineupInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVideoLineupInfo);

                        /** VideoLineupInfo video_lineup_id. */
                        public video_lineup_id?: (number|null);

                        /**
                         * Creates a new VideoLineupInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoLineupInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVideoLineupInfo): google.ads.googleads.v23.common.VideoLineupInfo;

                        /**
                         * Encodes the specified VideoLineupInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VideoLineupInfo.verify|verify} messages.
                         * @param message VideoLineupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVideoLineupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoLineupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VideoLineupInfo.verify|verify} messages.
                         * @param message VideoLineupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVideoLineupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoLineupInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VideoLineupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.VideoLineupInfo;

                        /**
                         * Decodes a VideoLineupInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VideoLineupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.VideoLineupInfo;

                        /**
                         * Verifies a VideoLineupInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VideoLineupInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VideoLineupInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.VideoLineupInfo;

                        /**
                         * Creates a plain object from a VideoLineupInfo message. Also converts values to other types if specified.
                         * @param message VideoLineupInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.VideoLineupInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VideoLineupInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VideoLineupInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlacementListInfo. */
                    interface IPlacementListInfo {

                        /** PlacementListInfo shared_set */
                        shared_set?: (string|null);
                    }

                    /** Represents a PlacementListInfo. */
                    class PlacementListInfo implements IPlacementListInfo {

                        /**
                         * Constructs a new PlacementListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPlacementListInfo);

                        /** PlacementListInfo shared_set. */
                        public shared_set?: (string|null);

                        /**
                         * Creates a new PlacementListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlacementListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPlacementListInfo): google.ads.googleads.v23.common.PlacementListInfo;

                        /**
                         * Encodes the specified PlacementListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.PlacementListInfo.verify|verify} messages.
                         * @param message PlacementListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPlacementListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlacementListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PlacementListInfo.verify|verify} messages.
                         * @param message PlacementListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPlacementListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlacementListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlacementListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.PlacementListInfo;

                        /**
                         * Decodes a PlacementListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlacementListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.PlacementListInfo;

                        /**
                         * Verifies a PlacementListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlacementListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlacementListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PlacementListInfo;

                        /**
                         * Creates a plain object from a PlacementListInfo message. Also converts values to other types if specified.
                         * @param message PlacementListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.PlacementListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlacementListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlacementListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a VerticalAdsItemGroupRuleListInfo. */
                    interface IVerticalAdsItemGroupRuleListInfo {

                        /** VerticalAdsItemGroupRuleListInfo shared_set */
                        shared_set?: (string|null);
                    }

                    /** Represents a VerticalAdsItemGroupRuleListInfo. */
                    class VerticalAdsItemGroupRuleListInfo implements IVerticalAdsItemGroupRuleListInfo {

                        /**
                         * Constructs a new VerticalAdsItemGroupRuleListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleListInfo);

                        /** VerticalAdsItemGroupRuleListInfo shared_set. */
                        public shared_set?: (string|null);

                        /**
                         * Creates a new VerticalAdsItemGroupRuleListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VerticalAdsItemGroupRuleListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleListInfo): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleListInfo;

                        /**
                         * Encodes the specified VerticalAdsItemGroupRuleListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VerticalAdsItemGroupRuleListInfo.verify|verify} messages.
                         * @param message VerticalAdsItemGroupRuleListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VerticalAdsItemGroupRuleListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VerticalAdsItemGroupRuleListInfo.verify|verify} messages.
                         * @param message VerticalAdsItemGroupRuleListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VerticalAdsItemGroupRuleListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VerticalAdsItemGroupRuleListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleListInfo;

                        /**
                         * Decodes a VerticalAdsItemGroupRuleListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VerticalAdsItemGroupRuleListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleListInfo;

                        /**
                         * Verifies a VerticalAdsItemGroupRuleListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VerticalAdsItemGroupRuleListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VerticalAdsItemGroupRuleListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleListInfo;

                        /**
                         * Creates a plain object from a VerticalAdsItemGroupRuleListInfo message. Also converts values to other types if specified.
                         * @param message VerticalAdsItemGroupRuleListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.VerticalAdsItemGroupRuleListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VerticalAdsItemGroupRuleListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VerticalAdsItemGroupRuleListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a VerticalAdsItemGroupRuleInfo. */
                    interface IVerticalAdsItemGroupRuleInfo {

                        /** VerticalAdsItemGroupRuleInfo item_code */
                        item_code?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo country_criterion_id */
                        country_criterion_id?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo region_criterion_id */
                        region_criterion_id?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo city_criterion_id */
                        city_criterion_id?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo hotel_class */
                        hotel_class?: (number|null);
                    }

                    /** Represents a VerticalAdsItemGroupRuleInfo. */
                    class VerticalAdsItemGroupRuleInfo implements IVerticalAdsItemGroupRuleInfo {

                        /**
                         * Constructs a new VerticalAdsItemGroupRuleInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleInfo);

                        /** VerticalAdsItemGroupRuleInfo item_code. */
                        public item_code?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo country_criterion_id. */
                        public country_criterion_id?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo region_criterion_id. */
                        public region_criterion_id?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo city_criterion_id. */
                        public city_criterion_id?: (string|null);

                        /** VerticalAdsItemGroupRuleInfo hotel_class. */
                        public hotel_class?: (number|null);

                        /** VerticalAdsItemGroupRuleInfo dimension. */
                        public dimension?: ("item_code"|"country_criterion_id"|"region_criterion_id"|"city_criterion_id"|"hotel_class");

                        /**
                         * Creates a new VerticalAdsItemGroupRuleInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VerticalAdsItemGroupRuleInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleInfo): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleInfo;

                        /**
                         * Encodes the specified VerticalAdsItemGroupRuleInfo message. Does not implicitly {@link google.ads.googleads.v23.common.VerticalAdsItemGroupRuleInfo.verify|verify} messages.
                         * @param message VerticalAdsItemGroupRuleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VerticalAdsItemGroupRuleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.VerticalAdsItemGroupRuleInfo.verify|verify} messages.
                         * @param message VerticalAdsItemGroupRuleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VerticalAdsItemGroupRuleInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VerticalAdsItemGroupRuleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleInfo;

                        /**
                         * Decodes a VerticalAdsItemGroupRuleInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VerticalAdsItemGroupRuleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleInfo;

                        /**
                         * Verifies a VerticalAdsItemGroupRuleInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VerticalAdsItemGroupRuleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VerticalAdsItemGroupRuleInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.VerticalAdsItemGroupRuleInfo;

                        /**
                         * Creates a plain object from a VerticalAdsItemGroupRuleInfo message. Also converts values to other types if specified.
                         * @param message VerticalAdsItemGroupRuleInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.VerticalAdsItemGroupRuleInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VerticalAdsItemGroupRuleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VerticalAdsItemGroupRuleInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Money. */
                    interface IMoney {

                        /** Money currency_code */
                        currency_code?: (string|null);

                        /** Money amount_micros */
                        amount_micros?: (number|null);
                    }

                    /** Represents a Money. */
                    class Money implements IMoney {

                        /**
                         * Constructs a new Money.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMoney);

                        /** Money currency_code. */
                        public currency_code?: (string|null);

                        /** Money amount_micros. */
                        public amount_micros?: (number|null);

                        /**
                         * Creates a new Money instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Money instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMoney): google.ads.googleads.v23.common.Money;

                        /**
                         * Encodes the specified Money message. Does not implicitly {@link google.ads.googleads.v23.common.Money.verify|verify} messages.
                         * @param message Money message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMoney, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Money message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.Money.verify|verify} messages.
                         * @param message Money message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMoney, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Money message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Money
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.Money;

                        /**
                         * Decodes a Money message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Money
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.Money;

                        /**
                         * Verifies a Money message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Money message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Money
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.Money;

                        /**
                         * Creates a plain object from a Money message. Also converts values to other types if specified.
                         * @param message Money
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.Money, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Money to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Money
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetUsage. */
                    interface IAssetUsage {

                        /** AssetUsage asset */
                        asset?: (string|null);

                        /** AssetUsage served_asset_field_type */
                        served_asset_field_type?: (google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|keyof typeof google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|null);
                    }

                    /** Represents an AssetUsage. */
                    class AssetUsage implements IAssetUsage {

                        /**
                         * Constructs a new AssetUsage.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAssetUsage);

                        /** AssetUsage asset. */
                        public asset: string;

                        /** AssetUsage served_asset_field_type. */
                        public served_asset_field_type: (google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|keyof typeof google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType);

                        /**
                         * Creates a new AssetUsage instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetUsage instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAssetUsage): google.ads.googleads.v23.common.AssetUsage;

                        /**
                         * Encodes the specified AssetUsage message. Does not implicitly {@link google.ads.googleads.v23.common.AssetUsage.verify|verify} messages.
                         * @param message AssetUsage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAssetUsage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetUsage message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AssetUsage.verify|verify} messages.
                         * @param message AssetUsage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAssetUsage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetUsage message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetUsage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AssetUsage;

                        /**
                         * Decodes an AssetUsage message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetUsage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AssetUsage;

                        /**
                         * Verifies an AssetUsage message.
                         * @param message Plain 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 AssetUsage message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetUsage
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AssetUsage;

                        /**
                         * Creates a plain object from an AssetUsage message. Also converts values to other types if specified.
                         * @param message AssetUsage
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AssetUsage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetUsage to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetUsage
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInsightsAttributeMetadata. */
                    interface IAudienceInsightsAttributeMetadata {

                        /** AudienceInsightsAttributeMetadata dimension */
                        dimension?: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|null);

                        /** AudienceInsightsAttributeMetadata attribute */
                        attribute?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute|null);

                        /** AudienceInsightsAttributeMetadata display_name */
                        display_name?: (string|null);

                        /** AudienceInsightsAttributeMetadata display_info */
                        display_info?: (string|null);

                        /** AudienceInsightsAttributeMetadata potential_youtube_reach */
                        potential_youtube_reach?: (number|null);

                        /** AudienceInsightsAttributeMetadata subscriber_share */
                        subscriber_share?: (number|null);

                        /** AudienceInsightsAttributeMetadata viewer_share */
                        viewer_share?: (number|null);

                        /** AudienceInsightsAttributeMetadata youtube_channel_metadata */
                        youtube_channel_metadata?: (google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata youtube_video_metadata */
                        youtube_video_metadata?: (google.ads.googleads.v23.common.IYouTubeVideoAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata lineup_attribute_metadata */
                        lineup_attribute_metadata?: (google.ads.googleads.v23.common.ILineupAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata location_attribute_metadata */
                        location_attribute_metadata?: (google.ads.googleads.v23.common.ILocationAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata user_interest_attribute_metadata */
                        user_interest_attribute_metadata?: (google.ads.googleads.v23.common.IUserInterestAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata knowledge_graph_attribute_metadata */
                        knowledge_graph_attribute_metadata?: (google.ads.googleads.v23.common.IKnowledgeGraphAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata user_list_attribute_metadata */
                        user_list_attribute_metadata?: (google.ads.googleads.v23.common.IUserListAttributeMetadata|null);
                    }

                    /** Represents an AudienceInsightsAttributeMetadata. */
                    class AudienceInsightsAttributeMetadata implements IAudienceInsightsAttributeMetadata {

                        /**
                         * Constructs a new AudienceInsightsAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata);

                        /** AudienceInsightsAttributeMetadata dimension. */
                        public dimension: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension);

                        /** AudienceInsightsAttributeMetadata attribute. */
                        public attribute?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute|null);

                        /** AudienceInsightsAttributeMetadata display_name. */
                        public display_name: string;

                        /** AudienceInsightsAttributeMetadata display_info. */
                        public display_info: string;

                        /** AudienceInsightsAttributeMetadata potential_youtube_reach. */
                        public potential_youtube_reach: number;

                        /** AudienceInsightsAttributeMetadata subscriber_share. */
                        public subscriber_share: number;

                        /** AudienceInsightsAttributeMetadata viewer_share. */
                        public viewer_share: number;

                        /** AudienceInsightsAttributeMetadata youtube_channel_metadata. */
                        public youtube_channel_metadata?: (google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata youtube_video_metadata. */
                        public youtube_video_metadata?: (google.ads.googleads.v23.common.IYouTubeVideoAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata lineup_attribute_metadata. */
                        public lineup_attribute_metadata?: (google.ads.googleads.v23.common.ILineupAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata location_attribute_metadata. */
                        public location_attribute_metadata?: (google.ads.googleads.v23.common.ILocationAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata user_interest_attribute_metadata. */
                        public user_interest_attribute_metadata?: (google.ads.googleads.v23.common.IUserInterestAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata knowledge_graph_attribute_metadata. */
                        public knowledge_graph_attribute_metadata?: (google.ads.googleads.v23.common.IKnowledgeGraphAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata user_list_attribute_metadata. */
                        public user_list_attribute_metadata?: (google.ads.googleads.v23.common.IUserListAttributeMetadata|null);

                        /** AudienceInsightsAttributeMetadata dimension_metadata. */
                        public dimension_metadata?: ("youtube_channel_metadata"|"youtube_video_metadata"|"lineup_attribute_metadata"|"location_attribute_metadata"|"user_interest_attribute_metadata"|"knowledge_graph_attribute_metadata"|"user_list_attribute_metadata");

                        /**
                         * Creates a new AudienceInsightsAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadata;

                        /**
                         * Encodes the specified AudienceInsightsAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsAttributeMetadata.verify|verify} messages.
                         * @param message AudienceInsightsAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsAttributeMetadata.verify|verify} messages.
                         * @param message AudienceInsightsAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadata;

                        /**
                         * Decodes an AudienceInsightsAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadata;

                        /**
                         * Verifies an AudienceInsightsAttributeMetadata message.
                         * @param message Plain 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 AudienceInsightsAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadata;

                        /**
                         * Creates a plain object from an AudienceInsightsAttributeMetadata message. Also converts values to other types if specified.
                         * @param message AudienceInsightsAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceInsightsAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInsightsAttribute. */
                    interface IAudienceInsightsAttribute {

                        /** AudienceInsightsAttribute age_range */
                        age_range?: (google.ads.googleads.v23.common.IAgeRangeInfo|null);

                        /** AudienceInsightsAttribute gender */
                        gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** AudienceInsightsAttribute location */
                        location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** AudienceInsightsAttribute user_interest */
                        user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** AudienceInsightsAttribute entity */
                        entity?: (google.ads.googleads.v23.common.IAudienceInsightsEntity|null);

                        /** AudienceInsightsAttribute category */
                        category?: (google.ads.googleads.v23.common.IAudienceInsightsCategory|null);

                        /** AudienceInsightsAttribute lineup */
                        lineup?: (google.ads.googleads.v23.common.IAudienceInsightsLineup|null);

                        /** AudienceInsightsAttribute parental_status */
                        parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** AudienceInsightsAttribute income_range */
                        income_range?: (google.ads.googleads.v23.common.IIncomeRangeInfo|null);

                        /** AudienceInsightsAttribute youtube_channel */
                        youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** AudienceInsightsAttribute youtube_video */
                        youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** AudienceInsightsAttribute device */
                        device?: (google.ads.googleads.v23.common.IDeviceInfo|null);

                        /** AudienceInsightsAttribute user_list */
                        user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);
                    }

                    /** Represents an AudienceInsightsAttribute. */
                    class AudienceInsightsAttribute implements IAudienceInsightsAttribute {

                        /**
                         * Constructs a new AudienceInsightsAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceInsightsAttribute);

                        /** AudienceInsightsAttribute age_range. */
                        public age_range?: (google.ads.googleads.v23.common.IAgeRangeInfo|null);

                        /** AudienceInsightsAttribute gender. */
                        public gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** AudienceInsightsAttribute location. */
                        public location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** AudienceInsightsAttribute user_interest. */
                        public user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** AudienceInsightsAttribute entity. */
                        public entity?: (google.ads.googleads.v23.common.IAudienceInsightsEntity|null);

                        /** AudienceInsightsAttribute category. */
                        public category?: (google.ads.googleads.v23.common.IAudienceInsightsCategory|null);

                        /** AudienceInsightsAttribute lineup. */
                        public lineup?: (google.ads.googleads.v23.common.IAudienceInsightsLineup|null);

                        /** AudienceInsightsAttribute parental_status. */
                        public parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** AudienceInsightsAttribute income_range. */
                        public income_range?: (google.ads.googleads.v23.common.IIncomeRangeInfo|null);

                        /** AudienceInsightsAttribute youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** AudienceInsightsAttribute youtube_video. */
                        public youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** AudienceInsightsAttribute device. */
                        public device?: (google.ads.googleads.v23.common.IDeviceInfo|null);

                        /** AudienceInsightsAttribute user_list. */
                        public user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** AudienceInsightsAttribute attribute. */
                        public attribute?: ("age_range"|"gender"|"location"|"user_interest"|"entity"|"category"|"lineup"|"parental_status"|"income_range"|"youtube_channel"|"youtube_video"|"device"|"user_list");

                        /**
                         * Creates a new AudienceInsightsAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceInsightsAttribute): google.ads.googleads.v23.common.AudienceInsightsAttribute;

                        /**
                         * Encodes the specified AudienceInsightsAttribute message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsAttribute.verify|verify} messages.
                         * @param message AudienceInsightsAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceInsightsAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsAttribute.verify|verify} messages.
                         * @param message AudienceInsightsAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceInsightsAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceInsightsAttribute;

                        /**
                         * Decodes an AudienceInsightsAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceInsightsAttribute;

                        /**
                         * Verifies an AudienceInsightsAttribute message.
                         * @param message Plain 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 AudienceInsightsAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceInsightsAttribute;

                        /**
                         * Creates a plain object from an AudienceInsightsAttribute message. Also converts values to other types if specified.
                         * @param message AudienceInsightsAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceInsightsAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInsightsEntity. */
                    interface IAudienceInsightsEntity {

                        /** AudienceInsightsEntity knowledge_graph_machine_id */
                        knowledge_graph_machine_id?: (string|null);
                    }

                    /** Represents an AudienceInsightsEntity. */
                    class AudienceInsightsEntity implements IAudienceInsightsEntity {

                        /**
                         * Constructs a new AudienceInsightsEntity.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceInsightsEntity);

                        /** AudienceInsightsEntity knowledge_graph_machine_id. */
                        public knowledge_graph_machine_id: string;

                        /**
                         * Creates a new AudienceInsightsEntity instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsEntity instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceInsightsEntity): google.ads.googleads.v23.common.AudienceInsightsEntity;

                        /**
                         * Encodes the specified AudienceInsightsEntity message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsEntity.verify|verify} messages.
                         * @param message AudienceInsightsEntity message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceInsightsEntity, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsEntity message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsEntity.verify|verify} messages.
                         * @param message AudienceInsightsEntity message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceInsightsEntity, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsEntity message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsEntity
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceInsightsEntity;

                        /**
                         * Decodes an AudienceInsightsEntity message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsEntity
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceInsightsEntity;

                        /**
                         * Verifies an AudienceInsightsEntity message.
                         * @param message Plain 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 AudienceInsightsEntity message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsEntity
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceInsightsEntity;

                        /**
                         * Creates a plain object from an AudienceInsightsEntity message. Also converts values to other types if specified.
                         * @param message AudienceInsightsEntity
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceInsightsEntity, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsEntity to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsEntity
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInsightsCategory. */
                    interface IAudienceInsightsCategory {

                        /** AudienceInsightsCategory category_id */
                        category_id?: (string|null);
                    }

                    /** Represents an AudienceInsightsCategory. */
                    class AudienceInsightsCategory implements IAudienceInsightsCategory {

                        /**
                         * Constructs a new AudienceInsightsCategory.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceInsightsCategory);

                        /** AudienceInsightsCategory category_id. */
                        public category_id: string;

                        /**
                         * Creates a new AudienceInsightsCategory instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsCategory instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceInsightsCategory): google.ads.googleads.v23.common.AudienceInsightsCategory;

                        /**
                         * Encodes the specified AudienceInsightsCategory message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsCategory.verify|verify} messages.
                         * @param message AudienceInsightsCategory message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceInsightsCategory, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsCategory message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsCategory.verify|verify} messages.
                         * @param message AudienceInsightsCategory message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceInsightsCategory, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsCategory message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsCategory
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceInsightsCategory;

                        /**
                         * Decodes an AudienceInsightsCategory message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsCategory
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceInsightsCategory;

                        /**
                         * Verifies an AudienceInsightsCategory message.
                         * @param message Plain 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 AudienceInsightsCategory message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsCategory
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceInsightsCategory;

                        /**
                         * Creates a plain object from an AudienceInsightsCategory message. Also converts values to other types if specified.
                         * @param message AudienceInsightsCategory
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceInsightsCategory, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsCategory to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsCategory
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInsightsLineup. */
                    interface IAudienceInsightsLineup {

                        /** AudienceInsightsLineup lineup_id */
                        lineup_id?: (string|null);
                    }

                    /** Represents an AudienceInsightsLineup. */
                    class AudienceInsightsLineup implements IAudienceInsightsLineup {

                        /**
                         * Constructs a new AudienceInsightsLineup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceInsightsLineup);

                        /** AudienceInsightsLineup lineup_id. */
                        public lineup_id: string;

                        /**
                         * Creates a new AudienceInsightsLineup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsLineup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceInsightsLineup): google.ads.googleads.v23.common.AudienceInsightsLineup;

                        /**
                         * Encodes the specified AudienceInsightsLineup message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsLineup.verify|verify} messages.
                         * @param message AudienceInsightsLineup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceInsightsLineup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsLineup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsLineup.verify|verify} messages.
                         * @param message AudienceInsightsLineup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceInsightsLineup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsLineup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsLineup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceInsightsLineup;

                        /**
                         * Decodes an AudienceInsightsLineup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsLineup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceInsightsLineup;

                        /**
                         * Verifies an AudienceInsightsLineup message.
                         * @param message Plain 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 AudienceInsightsLineup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsLineup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceInsightsLineup;

                        /**
                         * Creates a plain object from an AudienceInsightsLineup message. Also converts values to other types if specified.
                         * @param message AudienceInsightsLineup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceInsightsLineup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsLineup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsLineup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeChannelAttributeMetadata. */
                    interface IYouTubeChannelAttributeMetadata {

                        /** YouTubeChannelAttributeMetadata subscriber_count */
                        subscriber_count?: (number|null);
                    }

                    /** Represents a YouTubeChannelAttributeMetadata. */
                    class YouTubeChannelAttributeMetadata implements IYouTubeChannelAttributeMetadata {

                        /**
                         * Constructs a new YouTubeChannelAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata);

                        /** YouTubeChannelAttributeMetadata subscriber_count. */
                        public subscriber_count: number;

                        /**
                         * Creates a new YouTubeChannelAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeChannelAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata): google.ads.googleads.v23.common.YouTubeChannelAttributeMetadata;

                        /**
                         * Encodes the specified YouTubeChannelAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeChannelAttributeMetadata.verify|verify} messages.
                         * @param message YouTubeChannelAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeChannelAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeChannelAttributeMetadata.verify|verify} messages.
                         * @param message YouTubeChannelAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeChannelAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeChannelAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.YouTubeChannelAttributeMetadata;

                        /**
                         * Decodes a YouTubeChannelAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeChannelAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.YouTubeChannelAttributeMetadata;

                        /**
                         * Verifies a YouTubeChannelAttributeMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeChannelAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeChannelAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.YouTubeChannelAttributeMetadata;

                        /**
                         * Creates a plain object from a YouTubeChannelAttributeMetadata message. Also converts values to other types if specified.
                         * @param message YouTubeChannelAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.YouTubeChannelAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeChannelAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeChannelAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeVideoAttributeMetadata. */
                    interface IYouTubeVideoAttributeMetadata {

                        /** YouTubeVideoAttributeMetadata thumbnail_url */
                        thumbnail_url?: (string|null);

                        /** YouTubeVideoAttributeMetadata video_url */
                        video_url?: (string|null);

                        /** YouTubeVideoAttributeMetadata views_count */
                        views_count?: (number|null);

                        /** YouTubeVideoAttributeMetadata likes_count */
                        likes_count?: (number|null);

                        /** YouTubeVideoAttributeMetadata comments_count */
                        comments_count?: (number|null);

                        /** YouTubeVideoAttributeMetadata video_properties */
                        video_properties?: (google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum.YouTubeVideoProperty[]|null);

                        /** YouTubeVideoAttributeMetadata publish_date */
                        publish_date?: (string|null);
                    }

                    /** Represents a YouTubeVideoAttributeMetadata. */
                    class YouTubeVideoAttributeMetadata implements IYouTubeVideoAttributeMetadata {

                        /**
                         * Constructs a new YouTubeVideoAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYouTubeVideoAttributeMetadata);

                        /** YouTubeVideoAttributeMetadata thumbnail_url. */
                        public thumbnail_url: string;

                        /** YouTubeVideoAttributeMetadata video_url. */
                        public video_url: string;

                        /** YouTubeVideoAttributeMetadata views_count. */
                        public views_count: number;

                        /** YouTubeVideoAttributeMetadata likes_count. */
                        public likes_count: number;

                        /** YouTubeVideoAttributeMetadata comments_count. */
                        public comments_count: number;

                        /** YouTubeVideoAttributeMetadata video_properties. */
                        public video_properties: google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum.YouTubeVideoProperty[];

                        /** YouTubeVideoAttributeMetadata publish_date. */
                        public publish_date: string;

                        /**
                         * Creates a new YouTubeVideoAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeVideoAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYouTubeVideoAttributeMetadata): google.ads.googleads.v23.common.YouTubeVideoAttributeMetadata;

                        /**
                         * Encodes the specified YouTubeVideoAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeVideoAttributeMetadata.verify|verify} messages.
                         * @param message YouTubeVideoAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYouTubeVideoAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeVideoAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YouTubeVideoAttributeMetadata.verify|verify} messages.
                         * @param message YouTubeVideoAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYouTubeVideoAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeVideoAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeVideoAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.YouTubeVideoAttributeMetadata;

                        /**
                         * Decodes a YouTubeVideoAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeVideoAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.YouTubeVideoAttributeMetadata;

                        /**
                         * Verifies a YouTubeVideoAttributeMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeVideoAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeVideoAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.YouTubeVideoAttributeMetadata;

                        /**
                         * Creates a plain object from a YouTubeVideoAttributeMetadata message. Also converts values to other types if specified.
                         * @param message YouTubeVideoAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.YouTubeVideoAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeVideoAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeVideoAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LineupAttributeMetadata. */
                    interface ILineupAttributeMetadata {

                        /** LineupAttributeMetadata inventory_country */
                        inventory_country?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** LineupAttributeMetadata median_monthly_inventory */
                        median_monthly_inventory?: (number|null);

                        /** LineupAttributeMetadata channel_count_lower_bound */
                        channel_count_lower_bound?: (number|null);

                        /** LineupAttributeMetadata channel_count_upper_bound */
                        channel_count_upper_bound?: (number|null);

                        /** LineupAttributeMetadata sample_channels */
                        sample_channels?: (google.ads.googleads.v23.common.LineupAttributeMetadata.ISampleChannel[]|null);
                    }

                    /** Represents a LineupAttributeMetadata. */
                    class LineupAttributeMetadata implements ILineupAttributeMetadata {

                        /**
                         * Constructs a new LineupAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILineupAttributeMetadata);

                        /** LineupAttributeMetadata inventory_country. */
                        public inventory_country?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** LineupAttributeMetadata median_monthly_inventory. */
                        public median_monthly_inventory?: (number|null);

                        /** LineupAttributeMetadata channel_count_lower_bound. */
                        public channel_count_lower_bound?: (number|null);

                        /** LineupAttributeMetadata channel_count_upper_bound. */
                        public channel_count_upper_bound?: (number|null);

                        /** LineupAttributeMetadata sample_channels. */
                        public sample_channels: google.ads.googleads.v23.common.LineupAttributeMetadata.ISampleChannel[];

                        /**
                         * Creates a new LineupAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LineupAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILineupAttributeMetadata): google.ads.googleads.v23.common.LineupAttributeMetadata;

                        /**
                         * Encodes the specified LineupAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.LineupAttributeMetadata.verify|verify} messages.
                         * @param message LineupAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILineupAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LineupAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LineupAttributeMetadata.verify|verify} messages.
                         * @param message LineupAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILineupAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LineupAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LineupAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LineupAttributeMetadata;

                        /**
                         * Decodes a LineupAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LineupAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LineupAttributeMetadata;

                        /**
                         * Verifies a LineupAttributeMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LineupAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LineupAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LineupAttributeMetadata;

                        /**
                         * Creates a plain object from a LineupAttributeMetadata message. Also converts values to other types if specified.
                         * @param message LineupAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LineupAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LineupAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LineupAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LineupAttributeMetadata {

                        /** Properties of a SampleChannel. */
                        interface ISampleChannel {

                            /** SampleChannel youtube_channel */
                            youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                            /** SampleChannel display_name */
                            display_name?: (string|null);

                            /** SampleChannel youtube_channel_metadata */
                            youtube_channel_metadata?: (google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata|null);
                        }

                        /** Represents a SampleChannel. */
                        class SampleChannel implements ISampleChannel {

                            /**
                             * Constructs a new SampleChannel.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.LineupAttributeMetadata.ISampleChannel);

                            /** SampleChannel youtube_channel. */
                            public youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                            /** SampleChannel display_name. */
                            public display_name: string;

                            /** SampleChannel youtube_channel_metadata. */
                            public youtube_channel_metadata?: (google.ads.googleads.v23.common.IYouTubeChannelAttributeMetadata|null);

                            /**
                             * Creates a new SampleChannel instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SampleChannel instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.LineupAttributeMetadata.ISampleChannel): google.ads.googleads.v23.common.LineupAttributeMetadata.SampleChannel;

                            /**
                             * Encodes the specified SampleChannel message. Does not implicitly {@link google.ads.googleads.v23.common.LineupAttributeMetadata.SampleChannel.verify|verify} messages.
                             * @param message SampleChannel message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.LineupAttributeMetadata.ISampleChannel, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SampleChannel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LineupAttributeMetadata.SampleChannel.verify|verify} messages.
                             * @param message SampleChannel message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.LineupAttributeMetadata.ISampleChannel, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SampleChannel message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SampleChannel
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LineupAttributeMetadata.SampleChannel;

                            /**
                             * Decodes a SampleChannel message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SampleChannel
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LineupAttributeMetadata.SampleChannel;

                            /**
                             * Verifies a SampleChannel message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SampleChannel message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SampleChannel
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LineupAttributeMetadata.SampleChannel;

                            /**
                             * Creates a plain object from a SampleChannel message. Also converts values to other types if specified.
                             * @param message SampleChannel
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.common.LineupAttributeMetadata.SampleChannel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SampleChannel to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SampleChannel
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a LocationAttributeMetadata. */
                    interface ILocationAttributeMetadata {

                        /** LocationAttributeMetadata country_location */
                        country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);
                    }

                    /** Represents a LocationAttributeMetadata. */
                    class LocationAttributeMetadata implements ILocationAttributeMetadata {

                        /**
                         * Constructs a new LocationAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocationAttributeMetadata);

                        /** LocationAttributeMetadata country_location. */
                        public country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /**
                         * Creates a new LocationAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocationAttributeMetadata): google.ads.googleads.v23.common.LocationAttributeMetadata;

                        /**
                         * Encodes the specified LocationAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.LocationAttributeMetadata.verify|verify} messages.
                         * @param message LocationAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocationAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocationAttributeMetadata.verify|verify} messages.
                         * @param message LocationAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocationAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LocationAttributeMetadata;

                        /**
                         * Decodes a LocationAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LocationAttributeMetadata;

                        /**
                         * Verifies a LocationAttributeMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LocationAttributeMetadata;

                        /**
                         * Creates a plain object from a LocationAttributeMetadata message. Also converts values to other types if specified.
                         * @param message LocationAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LocationAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserInterestAttributeMetadata. */
                    interface IUserInterestAttributeMetadata {

                        /** UserInterestAttributeMetadata user_interest_description */
                        user_interest_description?: (string|null);
                    }

                    /** Represents a UserInterestAttributeMetadata. */
                    class UserInterestAttributeMetadata implements IUserInterestAttributeMetadata {

                        /**
                         * Constructs a new UserInterestAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserInterestAttributeMetadata);

                        /** UserInterestAttributeMetadata user_interest_description. */
                        public user_interest_description: string;

                        /**
                         * Creates a new UserInterestAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserInterestAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserInterestAttributeMetadata): google.ads.googleads.v23.common.UserInterestAttributeMetadata;

                        /**
                         * Encodes the specified UserInterestAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.UserInterestAttributeMetadata.verify|verify} messages.
                         * @param message UserInterestAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserInterestAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterestAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserInterestAttributeMetadata.verify|verify} messages.
                         * @param message UserInterestAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserInterestAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterestAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserInterestAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserInterestAttributeMetadata;

                        /**
                         * Decodes a UserInterestAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserInterestAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserInterestAttributeMetadata;

                        /**
                         * Verifies a UserInterestAttributeMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterestAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserInterestAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserInterestAttributeMetadata;

                        /**
                         * Creates a plain object from a UserInterestAttributeMetadata message. Also converts values to other types if specified.
                         * @param message UserInterestAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserInterestAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterestAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserInterestAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KnowledgeGraphAttributeMetadata. */
                    interface IKnowledgeGraphAttributeMetadata {

                        /** KnowledgeGraphAttributeMetadata entity_capabilities */
                        entity_capabilities?: (google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum.InsightsKnowledgeGraphEntityCapabilities[]|null);

                        /** KnowledgeGraphAttributeMetadata related_categories */
                        related_categories?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);
                    }

                    /** Represents a KnowledgeGraphAttributeMetadata. */
                    class KnowledgeGraphAttributeMetadata implements IKnowledgeGraphAttributeMetadata {

                        /**
                         * Constructs a new KnowledgeGraphAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKnowledgeGraphAttributeMetadata);

                        /** KnowledgeGraphAttributeMetadata entity_capabilities. */
                        public entity_capabilities: google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum.InsightsKnowledgeGraphEntityCapabilities[];

                        /** KnowledgeGraphAttributeMetadata related_categories. */
                        public related_categories: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /**
                         * Creates a new KnowledgeGraphAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KnowledgeGraphAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKnowledgeGraphAttributeMetadata): google.ads.googleads.v23.common.KnowledgeGraphAttributeMetadata;

                        /**
                         * Encodes the specified KnowledgeGraphAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.KnowledgeGraphAttributeMetadata.verify|verify} messages.
                         * @param message KnowledgeGraphAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKnowledgeGraphAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KnowledgeGraphAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KnowledgeGraphAttributeMetadata.verify|verify} messages.
                         * @param message KnowledgeGraphAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKnowledgeGraphAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KnowledgeGraphAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KnowledgeGraphAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KnowledgeGraphAttributeMetadata;

                        /**
                         * Decodes a KnowledgeGraphAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KnowledgeGraphAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KnowledgeGraphAttributeMetadata;

                        /**
                         * Verifies a KnowledgeGraphAttributeMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KnowledgeGraphAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KnowledgeGraphAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KnowledgeGraphAttributeMetadata;

                        /**
                         * Creates a plain object from a KnowledgeGraphAttributeMetadata message. Also converts values to other types if specified.
                         * @param message KnowledgeGraphAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KnowledgeGraphAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KnowledgeGraphAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KnowledgeGraphAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListAttributeMetadata. */
                    interface IUserListAttributeMetadata {

                        /** UserListAttributeMetadata user_list_type */
                        user_list_type?: (google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|null);
                    }

                    /** Represents a UserListAttributeMetadata. */
                    class UserListAttributeMetadata implements IUserListAttributeMetadata {

                        /**
                         * Constructs a new UserListAttributeMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListAttributeMetadata);

                        /** UserListAttributeMetadata user_list_type. */
                        public user_list_type: (google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v23.enums.UserListTypeEnum.UserListType);

                        /**
                         * Creates a new UserListAttributeMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListAttributeMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListAttributeMetadata): google.ads.googleads.v23.common.UserListAttributeMetadata;

                        /**
                         * Encodes the specified UserListAttributeMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.UserListAttributeMetadata.verify|verify} messages.
                         * @param message UserListAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListAttributeMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListAttributeMetadata.verify|verify} messages.
                         * @param message UserListAttributeMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListAttributeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListAttributeMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListAttributeMetadata;

                        /**
                         * Decodes a UserListAttributeMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListAttributeMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListAttributeMetadata;

                        /**
                         * Verifies a UserListAttributeMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListAttributeMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListAttributeMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListAttributeMetadata;

                        /**
                         * Creates a plain object from a UserListAttributeMetadata message. Also converts values to other types if specified.
                         * @param message UserListAttributeMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListAttributeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListAttributeMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListAttributeMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInsightsAttributeMetadataGroup. */
                    interface IAudienceInsightsAttributeMetadataGroup {

                        /** AudienceInsightsAttributeMetadataGroup attributes */
                        attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);
                    }

                    /** Represents an AudienceInsightsAttributeMetadataGroup. */
                    class AudienceInsightsAttributeMetadataGroup implements IAudienceInsightsAttributeMetadataGroup {

                        /**
                         * Constructs a new AudienceInsightsAttributeMetadataGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadataGroup);

                        /** AudienceInsightsAttributeMetadataGroup attributes. */
                        public attributes: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /**
                         * Creates a new AudienceInsightsAttributeMetadataGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsAttributeMetadataGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadataGroup): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadataGroup;

                        /**
                         * Encodes the specified AudienceInsightsAttributeMetadataGroup message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsAttributeMetadataGroup.verify|verify} messages.
                         * @param message AudienceInsightsAttributeMetadataGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadataGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsAttributeMetadataGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceInsightsAttributeMetadataGroup.verify|verify} messages.
                         * @param message AudienceInsightsAttributeMetadataGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadataGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsAttributeMetadataGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsAttributeMetadataGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadataGroup;

                        /**
                         * Decodes an AudienceInsightsAttributeMetadataGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsAttributeMetadataGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadataGroup;

                        /**
                         * Verifies an AudienceInsightsAttributeMetadataGroup message.
                         * @param message Plain 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 AudienceInsightsAttributeMetadataGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsAttributeMetadataGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceInsightsAttributeMetadataGroup;

                        /**
                         * Creates a plain object from an AudienceInsightsAttributeMetadataGroup message. Also converts values to other types if specified.
                         * @param message AudienceInsightsAttributeMetadataGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceInsightsAttributeMetadataGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsAttributeMetadataGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsAttributeMetadataGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceDimension. */
                    interface IAudienceDimension {

                        /** AudienceDimension age */
                        age?: (google.ads.googleads.v23.common.IAgeDimension|null);

                        /** AudienceDimension gender */
                        gender?: (google.ads.googleads.v23.common.IGenderDimension|null);

                        /** AudienceDimension household_income */
                        household_income?: (google.ads.googleads.v23.common.IHouseholdIncomeDimension|null);

                        /** AudienceDimension parental_status */
                        parental_status?: (google.ads.googleads.v23.common.IParentalStatusDimension|null);

                        /** AudienceDimension audience_segments */
                        audience_segments?: (google.ads.googleads.v23.common.IAudienceSegmentDimension|null);
                    }

                    /** Represents an AudienceDimension. */
                    class AudienceDimension implements IAudienceDimension {

                        /**
                         * Constructs a new AudienceDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceDimension);

                        /** AudienceDimension age. */
                        public age?: (google.ads.googleads.v23.common.IAgeDimension|null);

                        /** AudienceDimension gender. */
                        public gender?: (google.ads.googleads.v23.common.IGenderDimension|null);

                        /** AudienceDimension household_income. */
                        public household_income?: (google.ads.googleads.v23.common.IHouseholdIncomeDimension|null);

                        /** AudienceDimension parental_status. */
                        public parental_status?: (google.ads.googleads.v23.common.IParentalStatusDimension|null);

                        /** AudienceDimension audience_segments. */
                        public audience_segments?: (google.ads.googleads.v23.common.IAudienceSegmentDimension|null);

                        /** AudienceDimension dimension. */
                        public dimension?: ("age"|"gender"|"household_income"|"parental_status"|"audience_segments");

                        /**
                         * Creates a new AudienceDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceDimension): google.ads.googleads.v23.common.AudienceDimension;

                        /**
                         * Encodes the specified AudienceDimension message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceDimension.verify|verify} messages.
                         * @param message AudienceDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceDimension.verify|verify} messages.
                         * @param message AudienceDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceDimension;

                        /**
                         * Decodes an AudienceDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceDimension;

                        /**
                         * Verifies an AudienceDimension message.
                         * @param message Plain 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 AudienceDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceDimension;

                        /**
                         * Creates a plain object from an AudienceDimension message. Also converts values to other types if specified.
                         * @param message AudienceDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceExclusionDimension. */
                    interface IAudienceExclusionDimension {

                        /** AudienceExclusionDimension exclusions */
                        exclusions?: (google.ads.googleads.v23.common.IExclusionSegment[]|null);
                    }

                    /** Represents an AudienceExclusionDimension. */
                    class AudienceExclusionDimension implements IAudienceExclusionDimension {

                        /**
                         * Constructs a new AudienceExclusionDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceExclusionDimension);

                        /** AudienceExclusionDimension exclusions. */
                        public exclusions: google.ads.googleads.v23.common.IExclusionSegment[];

                        /**
                         * Creates a new AudienceExclusionDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceExclusionDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceExclusionDimension): google.ads.googleads.v23.common.AudienceExclusionDimension;

                        /**
                         * Encodes the specified AudienceExclusionDimension message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceExclusionDimension.verify|verify} messages.
                         * @param message AudienceExclusionDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceExclusionDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceExclusionDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceExclusionDimension.verify|verify} messages.
                         * @param message AudienceExclusionDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceExclusionDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceExclusionDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceExclusionDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceExclusionDimension;

                        /**
                         * Decodes an AudienceExclusionDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceExclusionDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceExclusionDimension;

                        /**
                         * Verifies an AudienceExclusionDimension message.
                         * @param message Plain 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 AudienceExclusionDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceExclusionDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceExclusionDimension;

                        /**
                         * Creates a plain object from an AudienceExclusionDimension message. Also converts values to other types if specified.
                         * @param message AudienceExclusionDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceExclusionDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceExclusionDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceExclusionDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExclusionSegment. */
                    interface IExclusionSegment {

                        /** ExclusionSegment user_list */
                        user_list?: (google.ads.googleads.v23.common.IUserListSegment|null);
                    }

                    /** Represents an ExclusionSegment. */
                    class ExclusionSegment implements IExclusionSegment {

                        /**
                         * Constructs a new ExclusionSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IExclusionSegment);

                        /** ExclusionSegment user_list. */
                        public user_list?: (google.ads.googleads.v23.common.IUserListSegment|null);

                        /** ExclusionSegment segment. */
                        public segment?: "user_list";

                        /**
                         * Creates a new ExclusionSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExclusionSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IExclusionSegment): google.ads.googleads.v23.common.ExclusionSegment;

                        /**
                         * Encodes the specified ExclusionSegment message. Does not implicitly {@link google.ads.googleads.v23.common.ExclusionSegment.verify|verify} messages.
                         * @param message ExclusionSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IExclusionSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExclusionSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ExclusionSegment.verify|verify} messages.
                         * @param message ExclusionSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IExclusionSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExclusionSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExclusionSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ExclusionSegment;

                        /**
                         * Decodes an ExclusionSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExclusionSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ExclusionSegment;

                        /**
                         * Verifies an ExclusionSegment message.
                         * @param message Plain 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 ExclusionSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExclusionSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ExclusionSegment;

                        /**
                         * Creates a plain object from an ExclusionSegment message. Also converts values to other types if specified.
                         * @param message ExclusionSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ExclusionSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExclusionSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExclusionSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AgeDimension. */
                    interface IAgeDimension {

                        /** AgeDimension age_ranges */
                        age_ranges?: (google.ads.googleads.v23.common.IAgeSegment[]|null);

                        /** AgeDimension include_undetermined */
                        include_undetermined?: (boolean|null);
                    }

                    /** Represents an AgeDimension. */
                    class AgeDimension implements IAgeDimension {

                        /**
                         * Constructs a new AgeDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAgeDimension);

                        /** AgeDimension age_ranges. */
                        public age_ranges: google.ads.googleads.v23.common.IAgeSegment[];

                        /** AgeDimension include_undetermined. */
                        public include_undetermined?: (boolean|null);

                        /**
                         * Creates a new AgeDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AgeDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAgeDimension): google.ads.googleads.v23.common.AgeDimension;

                        /**
                         * Encodes the specified AgeDimension message. Does not implicitly {@link google.ads.googleads.v23.common.AgeDimension.verify|verify} messages.
                         * @param message AgeDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAgeDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AgeDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AgeDimension.verify|verify} messages.
                         * @param message AgeDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAgeDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AgeDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AgeDimension;

                        /**
                         * Decodes an AgeDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AgeDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AgeDimension;

                        /**
                         * Verifies an AgeDimension message.
                         * @param message Plain 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 AgeDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AgeDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AgeDimension;

                        /**
                         * Creates a plain object from an AgeDimension message. Also converts values to other types if specified.
                         * @param message AgeDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AgeDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AgeDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AgeDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AgeSegment. */
                    interface IAgeSegment {

                        /** AgeSegment min_age */
                        min_age?: (number|null);

                        /** AgeSegment max_age */
                        max_age?: (number|null);
                    }

                    /** Represents an AgeSegment. */
                    class AgeSegment implements IAgeSegment {

                        /**
                         * Constructs a new AgeSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAgeSegment);

                        /** AgeSegment min_age. */
                        public min_age?: (number|null);

                        /** AgeSegment max_age. */
                        public max_age?: (number|null);

                        /**
                         * Creates a new AgeSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AgeSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAgeSegment): google.ads.googleads.v23.common.AgeSegment;

                        /**
                         * Encodes the specified AgeSegment message. Does not implicitly {@link google.ads.googleads.v23.common.AgeSegment.verify|verify} messages.
                         * @param message AgeSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAgeSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AgeSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AgeSegment.verify|verify} messages.
                         * @param message AgeSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAgeSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AgeSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AgeSegment;

                        /**
                         * Decodes an AgeSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AgeSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AgeSegment;

                        /**
                         * Verifies an AgeSegment message.
                         * @param message Plain 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 AgeSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AgeSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AgeSegment;

                        /**
                         * Creates a plain object from an AgeSegment message. Also converts values to other types if specified.
                         * @param message AgeSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AgeSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AgeSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AgeSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenderDimension. */
                    interface IGenderDimension {

                        /** GenderDimension genders */
                        genders?: (google.ads.googleads.v23.enums.GenderTypeEnum.GenderType[]|null);

                        /** GenderDimension include_undetermined */
                        include_undetermined?: (boolean|null);
                    }

                    /** Represents a GenderDimension. */
                    class GenderDimension implements IGenderDimension {

                        /**
                         * Constructs a new GenderDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IGenderDimension);

                        /** GenderDimension genders. */
                        public genders: google.ads.googleads.v23.enums.GenderTypeEnum.GenderType[];

                        /** GenderDimension include_undetermined. */
                        public include_undetermined?: (boolean|null);

                        /**
                         * Creates a new GenderDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenderDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IGenderDimension): google.ads.googleads.v23.common.GenderDimension;

                        /**
                         * Encodes the specified GenderDimension message. Does not implicitly {@link google.ads.googleads.v23.common.GenderDimension.verify|verify} messages.
                         * @param message GenderDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IGenderDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenderDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.GenderDimension.verify|verify} messages.
                         * @param message GenderDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IGenderDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenderDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenderDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.GenderDimension;

                        /**
                         * Decodes a GenderDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenderDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.GenderDimension;

                        /**
                         * Verifies a GenderDimension message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenderDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenderDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.GenderDimension;

                        /**
                         * Creates a plain object from a GenderDimension message. Also converts values to other types if specified.
                         * @param message GenderDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.GenderDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenderDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenderDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an HouseholdIncomeDimension. */
                    interface IHouseholdIncomeDimension {

                        /** HouseholdIncomeDimension income_ranges */
                        income_ranges?: (google.ads.googleads.v23.enums.IncomeRangeTypeEnum.IncomeRangeType[]|null);

                        /** HouseholdIncomeDimension include_undetermined */
                        include_undetermined?: (boolean|null);
                    }

                    /** Represents an HouseholdIncomeDimension. */
                    class HouseholdIncomeDimension implements IHouseholdIncomeDimension {

                        /**
                         * Constructs a new HouseholdIncomeDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHouseholdIncomeDimension);

                        /** HouseholdIncomeDimension income_ranges. */
                        public income_ranges: google.ads.googleads.v23.enums.IncomeRangeTypeEnum.IncomeRangeType[];

                        /** HouseholdIncomeDimension include_undetermined. */
                        public include_undetermined?: (boolean|null);

                        /**
                         * Creates a new HouseholdIncomeDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HouseholdIncomeDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHouseholdIncomeDimension): google.ads.googleads.v23.common.HouseholdIncomeDimension;

                        /**
                         * Encodes the specified HouseholdIncomeDimension message. Does not implicitly {@link google.ads.googleads.v23.common.HouseholdIncomeDimension.verify|verify} messages.
                         * @param message HouseholdIncomeDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHouseholdIncomeDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HouseholdIncomeDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HouseholdIncomeDimension.verify|verify} messages.
                         * @param message HouseholdIncomeDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHouseholdIncomeDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an HouseholdIncomeDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HouseholdIncomeDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HouseholdIncomeDimension;

                        /**
                         * Decodes an HouseholdIncomeDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HouseholdIncomeDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HouseholdIncomeDimension;

                        /**
                         * Verifies an HouseholdIncomeDimension message.
                         * @param message Plain 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 HouseholdIncomeDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HouseholdIncomeDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HouseholdIncomeDimension;

                        /**
                         * Creates a plain object from an HouseholdIncomeDimension message. Also converts values to other types if specified.
                         * @param message HouseholdIncomeDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HouseholdIncomeDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HouseholdIncomeDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HouseholdIncomeDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ParentalStatusDimension. */
                    interface IParentalStatusDimension {

                        /** ParentalStatusDimension parental_statuses */
                        parental_statuses?: (google.ads.googleads.v23.enums.ParentalStatusTypeEnum.ParentalStatusType[]|null);

                        /** ParentalStatusDimension include_undetermined */
                        include_undetermined?: (boolean|null);
                    }

                    /** Represents a ParentalStatusDimension. */
                    class ParentalStatusDimension implements IParentalStatusDimension {

                        /**
                         * Constructs a new ParentalStatusDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IParentalStatusDimension);

                        /** ParentalStatusDimension parental_statuses. */
                        public parental_statuses: google.ads.googleads.v23.enums.ParentalStatusTypeEnum.ParentalStatusType[];

                        /** ParentalStatusDimension include_undetermined. */
                        public include_undetermined?: (boolean|null);

                        /**
                         * Creates a new ParentalStatusDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ParentalStatusDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IParentalStatusDimension): google.ads.googleads.v23.common.ParentalStatusDimension;

                        /**
                         * Encodes the specified ParentalStatusDimension message. Does not implicitly {@link google.ads.googleads.v23.common.ParentalStatusDimension.verify|verify} messages.
                         * @param message ParentalStatusDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IParentalStatusDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ParentalStatusDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ParentalStatusDimension.verify|verify} messages.
                         * @param message ParentalStatusDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IParentalStatusDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ParentalStatusDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ParentalStatusDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ParentalStatusDimension;

                        /**
                         * Decodes a ParentalStatusDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ParentalStatusDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ParentalStatusDimension;

                        /**
                         * Verifies a ParentalStatusDimension message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ParentalStatusDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ParentalStatusDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ParentalStatusDimension;

                        /**
                         * Creates a plain object from a ParentalStatusDimension message. Also converts values to other types if specified.
                         * @param message ParentalStatusDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ParentalStatusDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ParentalStatusDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ParentalStatusDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceSegmentDimension. */
                    interface IAudienceSegmentDimension {

                        /** AudienceSegmentDimension segments */
                        segments?: (google.ads.googleads.v23.common.IAudienceSegment[]|null);
                    }

                    /** Represents an AudienceSegmentDimension. */
                    class AudienceSegmentDimension implements IAudienceSegmentDimension {

                        /**
                         * Constructs a new AudienceSegmentDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceSegmentDimension);

                        /** AudienceSegmentDimension segments. */
                        public segments: google.ads.googleads.v23.common.IAudienceSegment[];

                        /**
                         * Creates a new AudienceSegmentDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceSegmentDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceSegmentDimension): google.ads.googleads.v23.common.AudienceSegmentDimension;

                        /**
                         * Encodes the specified AudienceSegmentDimension message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceSegmentDimension.verify|verify} messages.
                         * @param message AudienceSegmentDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceSegmentDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceSegmentDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceSegmentDimension.verify|verify} messages.
                         * @param message AudienceSegmentDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceSegmentDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceSegmentDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceSegmentDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceSegmentDimension;

                        /**
                         * Decodes an AudienceSegmentDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceSegmentDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceSegmentDimension;

                        /**
                         * Verifies an AudienceSegmentDimension message.
                         * @param message Plain 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 AudienceSegmentDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceSegmentDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceSegmentDimension;

                        /**
                         * Creates a plain object from an AudienceSegmentDimension message. Also converts values to other types if specified.
                         * @param message AudienceSegmentDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceSegmentDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceSegmentDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceSegmentDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceSegment. */
                    interface IAudienceSegment {

                        /** AudienceSegment user_list */
                        user_list?: (google.ads.googleads.v23.common.IUserListSegment|null);

                        /** AudienceSegment user_interest */
                        user_interest?: (google.ads.googleads.v23.common.IUserInterestSegment|null);

                        /** AudienceSegment life_event */
                        life_event?: (google.ads.googleads.v23.common.ILifeEventSegment|null);

                        /** AudienceSegment detailed_demographic */
                        detailed_demographic?: (google.ads.googleads.v23.common.IDetailedDemographicSegment|null);

                        /** AudienceSegment custom_audience */
                        custom_audience?: (google.ads.googleads.v23.common.ICustomAudienceSegment|null);
                    }

                    /** Represents an AudienceSegment. */
                    class AudienceSegment implements IAudienceSegment {

                        /**
                         * Constructs a new AudienceSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAudienceSegment);

                        /** AudienceSegment user_list. */
                        public user_list?: (google.ads.googleads.v23.common.IUserListSegment|null);

                        /** AudienceSegment user_interest. */
                        public user_interest?: (google.ads.googleads.v23.common.IUserInterestSegment|null);

                        /** AudienceSegment life_event. */
                        public life_event?: (google.ads.googleads.v23.common.ILifeEventSegment|null);

                        /** AudienceSegment detailed_demographic. */
                        public detailed_demographic?: (google.ads.googleads.v23.common.IDetailedDemographicSegment|null);

                        /** AudienceSegment custom_audience. */
                        public custom_audience?: (google.ads.googleads.v23.common.ICustomAudienceSegment|null);

                        /** AudienceSegment segment. */
                        public segment?: ("user_list"|"user_interest"|"life_event"|"detailed_demographic"|"custom_audience");

                        /**
                         * Creates a new AudienceSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAudienceSegment): google.ads.googleads.v23.common.AudienceSegment;

                        /**
                         * Encodes the specified AudienceSegment message. Does not implicitly {@link google.ads.googleads.v23.common.AudienceSegment.verify|verify} messages.
                         * @param message AudienceSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAudienceSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AudienceSegment.verify|verify} messages.
                         * @param message AudienceSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAudienceSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AudienceSegment;

                        /**
                         * Decodes an AudienceSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AudienceSegment;

                        /**
                         * Verifies an AudienceSegment message.
                         * @param message Plain 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 AudienceSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AudienceSegment;

                        /**
                         * Creates a plain object from an AudienceSegment message. Also converts values to other types if specified.
                         * @param message AudienceSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AudienceSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListSegment. */
                    interface IUserListSegment {

                        /** UserListSegment user_list */
                        user_list?: (string|null);
                    }

                    /** Represents a UserListSegment. */
                    class UserListSegment implements IUserListSegment {

                        /**
                         * Constructs a new UserListSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListSegment);

                        /** UserListSegment user_list. */
                        public user_list?: (string|null);

                        /**
                         * Creates a new UserListSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListSegment): google.ads.googleads.v23.common.UserListSegment;

                        /**
                         * Encodes the specified UserListSegment message. Does not implicitly {@link google.ads.googleads.v23.common.UserListSegment.verify|verify} messages.
                         * @param message UserListSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListSegment.verify|verify} messages.
                         * @param message UserListSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListSegment;

                        /**
                         * Decodes a UserListSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListSegment;

                        /**
                         * Verifies a UserListSegment message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListSegment;

                        /**
                         * Creates a plain object from a UserListSegment message. Also converts values to other types if specified.
                         * @param message UserListSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserInterestSegment. */
                    interface IUserInterestSegment {

                        /** UserInterestSegment user_interest_category */
                        user_interest_category?: (string|null);
                    }

                    /** Represents a UserInterestSegment. */
                    class UserInterestSegment implements IUserInterestSegment {

                        /**
                         * Constructs a new UserInterestSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserInterestSegment);

                        /** UserInterestSegment user_interest_category. */
                        public user_interest_category?: (string|null);

                        /**
                         * Creates a new UserInterestSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserInterestSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserInterestSegment): google.ads.googleads.v23.common.UserInterestSegment;

                        /**
                         * Encodes the specified UserInterestSegment message. Does not implicitly {@link google.ads.googleads.v23.common.UserInterestSegment.verify|verify} messages.
                         * @param message UserInterestSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserInterestSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterestSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserInterestSegment.verify|verify} messages.
                         * @param message UserInterestSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserInterestSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterestSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserInterestSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserInterestSegment;

                        /**
                         * Decodes a UserInterestSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserInterestSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserInterestSegment;

                        /**
                         * Verifies a UserInterestSegment message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterestSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserInterestSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserInterestSegment;

                        /**
                         * Creates a plain object from a UserInterestSegment message. Also converts values to other types if specified.
                         * @param message UserInterestSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserInterestSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterestSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserInterestSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LifeEventSegment. */
                    interface ILifeEventSegment {

                        /** LifeEventSegment life_event */
                        life_event?: (string|null);
                    }

                    /** Represents a LifeEventSegment. */
                    class LifeEventSegment implements ILifeEventSegment {

                        /**
                         * Constructs a new LifeEventSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILifeEventSegment);

                        /** LifeEventSegment life_event. */
                        public life_event?: (string|null);

                        /**
                         * Creates a new LifeEventSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LifeEventSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILifeEventSegment): google.ads.googleads.v23.common.LifeEventSegment;

                        /**
                         * Encodes the specified LifeEventSegment message. Does not implicitly {@link google.ads.googleads.v23.common.LifeEventSegment.verify|verify} messages.
                         * @param message LifeEventSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILifeEventSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LifeEventSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LifeEventSegment.verify|verify} messages.
                         * @param message LifeEventSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILifeEventSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LifeEventSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LifeEventSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LifeEventSegment;

                        /**
                         * Decodes a LifeEventSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LifeEventSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LifeEventSegment;

                        /**
                         * Verifies a LifeEventSegment message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LifeEventSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LifeEventSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LifeEventSegment;

                        /**
                         * Creates a plain object from a LifeEventSegment message. Also converts values to other types if specified.
                         * @param message LifeEventSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LifeEventSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LifeEventSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LifeEventSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DetailedDemographicSegment. */
                    interface IDetailedDemographicSegment {

                        /** DetailedDemographicSegment detailed_demographic */
                        detailed_demographic?: (string|null);
                    }

                    /** Represents a DetailedDemographicSegment. */
                    class DetailedDemographicSegment implements IDetailedDemographicSegment {

                        /**
                         * Constructs a new DetailedDemographicSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDetailedDemographicSegment);

                        /** DetailedDemographicSegment detailed_demographic. */
                        public detailed_demographic?: (string|null);

                        /**
                         * Creates a new DetailedDemographicSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DetailedDemographicSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDetailedDemographicSegment): google.ads.googleads.v23.common.DetailedDemographicSegment;

                        /**
                         * Encodes the specified DetailedDemographicSegment message. Does not implicitly {@link google.ads.googleads.v23.common.DetailedDemographicSegment.verify|verify} messages.
                         * @param message DetailedDemographicSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDetailedDemographicSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DetailedDemographicSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DetailedDemographicSegment.verify|verify} messages.
                         * @param message DetailedDemographicSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDetailedDemographicSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DetailedDemographicSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DetailedDemographicSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.DetailedDemographicSegment;

                        /**
                         * Decodes a DetailedDemographicSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DetailedDemographicSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.DetailedDemographicSegment;

                        /**
                         * Verifies a DetailedDemographicSegment message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DetailedDemographicSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DetailedDemographicSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.DetailedDemographicSegment;

                        /**
                         * Creates a plain object from a DetailedDemographicSegment message. Also converts values to other types if specified.
                         * @param message DetailedDemographicSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.DetailedDemographicSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DetailedDemographicSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DetailedDemographicSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomAudienceSegment. */
                    interface ICustomAudienceSegment {

                        /** CustomAudienceSegment custom_audience */
                        custom_audience?: (string|null);
                    }

                    /** Represents a CustomAudienceSegment. */
                    class CustomAudienceSegment implements ICustomAudienceSegment {

                        /**
                         * Constructs a new CustomAudienceSegment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomAudienceSegment);

                        /** CustomAudienceSegment custom_audience. */
                        public custom_audience?: (string|null);

                        /**
                         * Creates a new CustomAudienceSegment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceSegment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomAudienceSegment): google.ads.googleads.v23.common.CustomAudienceSegment;

                        /**
                         * Encodes the specified CustomAudienceSegment message. Does not implicitly {@link google.ads.googleads.v23.common.CustomAudienceSegment.verify|verify} messages.
                         * @param message CustomAudienceSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomAudienceSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceSegment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomAudienceSegment.verify|verify} messages.
                         * @param message CustomAudienceSegment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomAudienceSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceSegment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomAudienceSegment;

                        /**
                         * Decodes a CustomAudienceSegment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceSegment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomAudienceSegment;

                        /**
                         * Verifies a CustomAudienceSegment message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceSegment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceSegment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomAudienceSegment;

                        /**
                         * Creates a plain object from a CustomAudienceSegment message. Also converts values to other types if specified.
                         * @param message CustomAudienceSegment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomAudienceSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceSegment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceSegment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Commission. */
                    interface ICommission {

                        /** Commission commission_rate_micros */
                        commission_rate_micros?: (number|null);
                    }

                    /** Represents a Commission. */
                    class Commission implements ICommission {

                        /**
                         * Constructs a new Commission.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICommission);

                        /** Commission commission_rate_micros. */
                        public commission_rate_micros?: (number|null);

                        /**
                         * Creates a new Commission instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Commission instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICommission): google.ads.googleads.v23.common.Commission;

                        /**
                         * Encodes the specified Commission message. Does not implicitly {@link google.ads.googleads.v23.common.Commission.verify|verify} messages.
                         * @param message Commission message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICommission, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Commission message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.Commission.verify|verify} messages.
                         * @param message Commission message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICommission, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Commission message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Commission
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.Commission;

                        /**
                         * Decodes a Commission message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Commission
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.Commission;

                        /**
                         * Verifies a Commission message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Commission message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Commission
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.Commission;

                        /**
                         * Creates a plain object from a Commission message. Also converts values to other types if specified.
                         * @param message Commission
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.Commission, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Commission to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Commission
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EnhancedCpc. */
                    interface IEnhancedCpc {
                    }

                    /** Represents an EnhancedCpc. */
                    class EnhancedCpc implements IEnhancedCpc {

                        /**
                         * Constructs a new EnhancedCpc.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IEnhancedCpc);

                        /**
                         * Creates a new EnhancedCpc instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EnhancedCpc instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IEnhancedCpc): google.ads.googleads.v23.common.EnhancedCpc;

                        /**
                         * Encodes the specified EnhancedCpc message. Does not implicitly {@link google.ads.googleads.v23.common.EnhancedCpc.verify|verify} messages.
                         * @param message EnhancedCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IEnhancedCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnhancedCpc message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.EnhancedCpc.verify|verify} messages.
                         * @param message EnhancedCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IEnhancedCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnhancedCpc message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EnhancedCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.EnhancedCpc;

                        /**
                         * Decodes an EnhancedCpc message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EnhancedCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.EnhancedCpc;

                        /**
                         * Verifies an EnhancedCpc message.
                         * @param message Plain 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 EnhancedCpc message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EnhancedCpc
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.EnhancedCpc;

                        /**
                         * Creates a plain object from an EnhancedCpc message. Also converts values to other types if specified.
                         * @param message EnhancedCpc
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.EnhancedCpc, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnhancedCpc to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EnhancedCpc
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ManualCpa. */
                    interface IManualCpa {
                    }

                    /** Represents a ManualCpa. */
                    class ManualCpa implements IManualCpa {

                        /**
                         * Constructs a new ManualCpa.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IManualCpa);

                        /**
                         * Creates a new ManualCpa instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManualCpa instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IManualCpa): google.ads.googleads.v23.common.ManualCpa;

                        /**
                         * Encodes the specified ManualCpa message. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpa.verify|verify} messages.
                         * @param message ManualCpa message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IManualCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpa message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpa.verify|verify} messages.
                         * @param message ManualCpa message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IManualCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpa message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManualCpa
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ManualCpa;

                        /**
                         * Decodes a ManualCpa message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManualCpa
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ManualCpa;

                        /**
                         * Verifies a ManualCpa message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpa message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManualCpa
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ManualCpa;

                        /**
                         * Creates a plain object from a ManualCpa message. Also converts values to other types if specified.
                         * @param message ManualCpa
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ManualCpa, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpa to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManualCpa
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ManualCpc. */
                    interface IManualCpc {

                        /** ManualCpc enhanced_cpc_enabled */
                        enhanced_cpc_enabled?: (boolean|null);
                    }

                    /** Represents a ManualCpc. */
                    class ManualCpc implements IManualCpc {

                        /**
                         * Constructs a new ManualCpc.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IManualCpc);

                        /** ManualCpc enhanced_cpc_enabled. */
                        public enhanced_cpc_enabled?: (boolean|null);

                        /**
                         * Creates a new ManualCpc instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManualCpc instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IManualCpc): google.ads.googleads.v23.common.ManualCpc;

                        /**
                         * Encodes the specified ManualCpc message. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpc.verify|verify} messages.
                         * @param message ManualCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IManualCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpc message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpc.verify|verify} messages.
                         * @param message ManualCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IManualCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpc message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManualCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ManualCpc;

                        /**
                         * Decodes a ManualCpc message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManualCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ManualCpc;

                        /**
                         * Verifies a ManualCpc message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpc message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManualCpc
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ManualCpc;

                        /**
                         * Creates a plain object from a ManualCpc message. Also converts values to other types if specified.
                         * @param message ManualCpc
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ManualCpc, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpc to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManualCpc
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ManualCpm. */
                    interface IManualCpm {
                    }

                    /** Represents a ManualCpm. */
                    class ManualCpm implements IManualCpm {

                        /**
                         * Constructs a new ManualCpm.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IManualCpm);

                        /**
                         * Creates a new ManualCpm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManualCpm instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IManualCpm): google.ads.googleads.v23.common.ManualCpm;

                        /**
                         * Encodes the specified ManualCpm message. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpm.verify|verify} messages.
                         * @param message ManualCpm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IManualCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpm message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpm.verify|verify} messages.
                         * @param message ManualCpm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IManualCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpm message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManualCpm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ManualCpm;

                        /**
                         * Decodes a ManualCpm message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManualCpm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ManualCpm;

                        /**
                         * Verifies a ManualCpm message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpm message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManualCpm
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ManualCpm;

                        /**
                         * Creates a plain object from a ManualCpm message. Also converts values to other types if specified.
                         * @param message ManualCpm
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ManualCpm, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManualCpm
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ManualCpv. */
                    interface IManualCpv {
                    }

                    /** Represents a ManualCpv. */
                    class ManualCpv implements IManualCpv {

                        /**
                         * Constructs a new ManualCpv.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IManualCpv);

                        /**
                         * Creates a new ManualCpv instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManualCpv instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IManualCpv): google.ads.googleads.v23.common.ManualCpv;

                        /**
                         * Encodes the specified ManualCpv message. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpv.verify|verify} messages.
                         * @param message ManualCpv message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IManualCpv, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpv message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ManualCpv.verify|verify} messages.
                         * @param message ManualCpv message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IManualCpv, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpv message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManualCpv
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ManualCpv;

                        /**
                         * Decodes a ManualCpv message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManualCpv
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ManualCpv;

                        /**
                         * Verifies a ManualCpv message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpv message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManualCpv
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ManualCpv;

                        /**
                         * Creates a plain object from a ManualCpv message. Also converts values to other types if specified.
                         * @param message ManualCpv
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ManualCpv, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpv to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManualCpv
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MaximizeConversions. */
                    interface IMaximizeConversions {

                        /** MaximizeConversions cpc_bid_ceiling_micros */
                        cpc_bid_ceiling_micros?: (number|null);

                        /** MaximizeConversions cpc_bid_floor_micros */
                        cpc_bid_floor_micros?: (number|null);

                        /** MaximizeConversions target_cpa_micros */
                        target_cpa_micros?: (number|null);
                    }

                    /** Represents a MaximizeConversions. */
                    class MaximizeConversions implements IMaximizeConversions {

                        /**
                         * Constructs a new MaximizeConversions.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMaximizeConversions);

                        /** MaximizeConversions cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros: number;

                        /** MaximizeConversions cpc_bid_floor_micros. */
                        public cpc_bid_floor_micros: number;

                        /** MaximizeConversions target_cpa_micros. */
                        public target_cpa_micros: number;

                        /**
                         * Creates a new MaximizeConversions instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MaximizeConversions instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMaximizeConversions): google.ads.googleads.v23.common.MaximizeConversions;

                        /**
                         * Encodes the specified MaximizeConversions message. Does not implicitly {@link google.ads.googleads.v23.common.MaximizeConversions.verify|verify} messages.
                         * @param message MaximizeConversions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMaximizeConversions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MaximizeConversions message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MaximizeConversions.verify|verify} messages.
                         * @param message MaximizeConversions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMaximizeConversions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MaximizeConversions message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MaximizeConversions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.MaximizeConversions;

                        /**
                         * Decodes a MaximizeConversions message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MaximizeConversions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.MaximizeConversions;

                        /**
                         * Verifies a MaximizeConversions message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MaximizeConversions message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MaximizeConversions
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.MaximizeConversions;

                        /**
                         * Creates a plain object from a MaximizeConversions message. Also converts values to other types if specified.
                         * @param message MaximizeConversions
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.MaximizeConversions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MaximizeConversions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MaximizeConversions
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MaximizeConversionValue. */
                    interface IMaximizeConversionValue {

                        /** MaximizeConversionValue target_roas */
                        target_roas?: (number|null);

                        /** MaximizeConversionValue cpc_bid_ceiling_micros */
                        cpc_bid_ceiling_micros?: (number|null);

                        /** MaximizeConversionValue cpc_bid_floor_micros */
                        cpc_bid_floor_micros?: (number|null);

                        /** MaximizeConversionValue target_roas_tolerance_percent_millis */
                        target_roas_tolerance_percent_millis?: (number|null);
                    }

                    /** Represents a MaximizeConversionValue. */
                    class MaximizeConversionValue implements IMaximizeConversionValue {

                        /**
                         * Constructs a new MaximizeConversionValue.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMaximizeConversionValue);

                        /** MaximizeConversionValue target_roas. */
                        public target_roas: number;

                        /** MaximizeConversionValue cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros: number;

                        /** MaximizeConversionValue cpc_bid_floor_micros. */
                        public cpc_bid_floor_micros: number;

                        /** MaximizeConversionValue target_roas_tolerance_percent_millis. */
                        public target_roas_tolerance_percent_millis?: (number|null);

                        /**
                         * Creates a new MaximizeConversionValue instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MaximizeConversionValue instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMaximizeConversionValue): google.ads.googleads.v23.common.MaximizeConversionValue;

                        /**
                         * Encodes the specified MaximizeConversionValue message. Does not implicitly {@link google.ads.googleads.v23.common.MaximizeConversionValue.verify|verify} messages.
                         * @param message MaximizeConversionValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMaximizeConversionValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MaximizeConversionValue message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MaximizeConversionValue.verify|verify} messages.
                         * @param message MaximizeConversionValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMaximizeConversionValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MaximizeConversionValue message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MaximizeConversionValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.MaximizeConversionValue;

                        /**
                         * Decodes a MaximizeConversionValue message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MaximizeConversionValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.MaximizeConversionValue;

                        /**
                         * Verifies a MaximizeConversionValue message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MaximizeConversionValue message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MaximizeConversionValue
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.MaximizeConversionValue;

                        /**
                         * Creates a plain object from a MaximizeConversionValue message. Also converts values to other types if specified.
                         * @param message MaximizeConversionValue
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.MaximizeConversionValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MaximizeConversionValue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MaximizeConversionValue
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetCpa. */
                    interface ITargetCpa {

                        /** TargetCpa target_cpa_micros */
                        target_cpa_micros?: (number|null);

                        /** TargetCpa cpc_bid_ceiling_micros */
                        cpc_bid_ceiling_micros?: (number|null);

                        /** TargetCpa cpc_bid_floor_micros */
                        cpc_bid_floor_micros?: (number|null);
                    }

                    /** Represents a TargetCpa. */
                    class TargetCpa implements ITargetCpa {

                        /**
                         * Constructs a new TargetCpa.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetCpa);

                        /** TargetCpa target_cpa_micros. */
                        public target_cpa_micros?: (number|null);

                        /** TargetCpa cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros?: (number|null);

                        /** TargetCpa cpc_bid_floor_micros. */
                        public cpc_bid_floor_micros?: (number|null);

                        /**
                         * Creates a new TargetCpa instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpa instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetCpa): google.ads.googleads.v23.common.TargetCpa;

                        /**
                         * Encodes the specified TargetCpa message. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpa.verify|verify} messages.
                         * @param message TargetCpa message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpa message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpa.verify|verify} messages.
                         * @param message TargetCpa message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpa message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpa
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetCpa;

                        /**
                         * Decodes a TargetCpa message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpa
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetCpa;

                        /**
                         * Verifies a TargetCpa message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpa message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpa
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetCpa;

                        /**
                         * Creates a plain object from a TargetCpa message. Also converts values to other types if specified.
                         * @param message TargetCpa
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetCpa, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpa to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpa
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetCpm. */
                    interface ITargetCpm {

                        /** TargetCpm target_frequency_goal */
                        target_frequency_goal?: (google.ads.googleads.v23.common.ITargetCpmTargetFrequencyGoal|null);
                    }

                    /** Represents a TargetCpm. */
                    class TargetCpm implements ITargetCpm {

                        /**
                         * Constructs a new TargetCpm.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetCpm);

                        /** TargetCpm target_frequency_goal. */
                        public target_frequency_goal?: (google.ads.googleads.v23.common.ITargetCpmTargetFrequencyGoal|null);

                        /** TargetCpm goal. */
                        public goal?: "target_frequency_goal";

                        /**
                         * Creates a new TargetCpm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpm instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetCpm): google.ads.googleads.v23.common.TargetCpm;

                        /**
                         * Encodes the specified TargetCpm message. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpm.verify|verify} messages.
                         * @param message TargetCpm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpm message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpm.verify|verify} messages.
                         * @param message TargetCpm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpm message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetCpm;

                        /**
                         * Decodes a TargetCpm message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetCpm;

                        /**
                         * Verifies a TargetCpm message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpm message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpm
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetCpm;

                        /**
                         * Creates a plain object from a TargetCpm message. Also converts values to other types if specified.
                         * @param message TargetCpm
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetCpm, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpm
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetCpmTargetFrequencyGoal. */
                    interface ITargetCpmTargetFrequencyGoal {

                        /** TargetCpmTargetFrequencyGoal target_count */
                        target_count?: (number|null);

                        /** TargetCpmTargetFrequencyGoal time_unit */
                        time_unit?: (google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit|keyof typeof google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit|null);
                    }

                    /** Represents a TargetCpmTargetFrequencyGoal. */
                    class TargetCpmTargetFrequencyGoal implements ITargetCpmTargetFrequencyGoal {

                        /**
                         * Constructs a new TargetCpmTargetFrequencyGoal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetCpmTargetFrequencyGoal);

                        /** TargetCpmTargetFrequencyGoal target_count. */
                        public target_count: number;

                        /** TargetCpmTargetFrequencyGoal time_unit. */
                        public time_unit: (google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit|keyof typeof google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit);

                        /**
                         * Creates a new TargetCpmTargetFrequencyGoal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpmTargetFrequencyGoal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetCpmTargetFrequencyGoal): google.ads.googleads.v23.common.TargetCpmTargetFrequencyGoal;

                        /**
                         * Encodes the specified TargetCpmTargetFrequencyGoal message. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpmTargetFrequencyGoal.verify|verify} messages.
                         * @param message TargetCpmTargetFrequencyGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetCpmTargetFrequencyGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpmTargetFrequencyGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpmTargetFrequencyGoal.verify|verify} messages.
                         * @param message TargetCpmTargetFrequencyGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetCpmTargetFrequencyGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpmTargetFrequencyGoal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpmTargetFrequencyGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetCpmTargetFrequencyGoal;

                        /**
                         * Decodes a TargetCpmTargetFrequencyGoal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpmTargetFrequencyGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetCpmTargetFrequencyGoal;

                        /**
                         * Verifies a TargetCpmTargetFrequencyGoal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpmTargetFrequencyGoal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpmTargetFrequencyGoal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetCpmTargetFrequencyGoal;

                        /**
                         * Creates a plain object from a TargetCpmTargetFrequencyGoal message. Also converts values to other types if specified.
                         * @param message TargetCpmTargetFrequencyGoal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetCpmTargetFrequencyGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpmTargetFrequencyGoal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpmTargetFrequencyGoal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetImpressionShare. */
                    interface ITargetImpressionShare {

                        /** TargetImpressionShare location */
                        location?: (google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|null);

                        /** TargetImpressionShare location_fraction_micros */
                        location_fraction_micros?: (number|null);

                        /** TargetImpressionShare cpc_bid_ceiling_micros */
                        cpc_bid_ceiling_micros?: (number|null);
                    }

                    /** Represents a TargetImpressionShare. */
                    class TargetImpressionShare implements ITargetImpressionShare {

                        /**
                         * Constructs a new TargetImpressionShare.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetImpressionShare);

                        /** TargetImpressionShare location. */
                        public location: (google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation);

                        /** TargetImpressionShare location_fraction_micros. */
                        public location_fraction_micros?: (number|null);

                        /** TargetImpressionShare cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros?: (number|null);

                        /**
                         * Creates a new TargetImpressionShare instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetImpressionShare instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetImpressionShare): google.ads.googleads.v23.common.TargetImpressionShare;

                        /**
                         * Encodes the specified TargetImpressionShare message. Does not implicitly {@link google.ads.googleads.v23.common.TargetImpressionShare.verify|verify} messages.
                         * @param message TargetImpressionShare message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetImpressionShare, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShare message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetImpressionShare.verify|verify} messages.
                         * @param message TargetImpressionShare message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetImpressionShare, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShare message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetImpressionShare
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetImpressionShare;

                        /**
                         * Decodes a TargetImpressionShare message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetImpressionShare
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetImpressionShare;

                        /**
                         * Verifies a TargetImpressionShare message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShare message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetImpressionShare
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetImpressionShare;

                        /**
                         * Creates a plain object from a TargetImpressionShare message. Also converts values to other types if specified.
                         * @param message TargetImpressionShare
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetImpressionShare, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShare to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetImpressionShare
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetRoas. */
                    interface ITargetRoas {

                        /** TargetRoas target_roas */
                        target_roas?: (number|null);

                        /** TargetRoas cpc_bid_ceiling_micros */
                        cpc_bid_ceiling_micros?: (number|null);

                        /** TargetRoas cpc_bid_floor_micros */
                        cpc_bid_floor_micros?: (number|null);

                        /** TargetRoas target_roas_tolerance_percent_millis */
                        target_roas_tolerance_percent_millis?: (number|null);
                    }

                    /** Represents a TargetRoas. */
                    class TargetRoas implements ITargetRoas {

                        /**
                         * Constructs a new TargetRoas.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetRoas);

                        /** TargetRoas target_roas. */
                        public target_roas?: (number|null);

                        /** TargetRoas cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros?: (number|null);

                        /** TargetRoas cpc_bid_floor_micros. */
                        public cpc_bid_floor_micros?: (number|null);

                        /** TargetRoas target_roas_tolerance_percent_millis. */
                        public target_roas_tolerance_percent_millis?: (number|null);

                        /**
                         * Creates a new TargetRoas instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRoas instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetRoas): google.ads.googleads.v23.common.TargetRoas;

                        /**
                         * Encodes the specified TargetRoas message. Does not implicitly {@link google.ads.googleads.v23.common.TargetRoas.verify|verify} messages.
                         * @param message TargetRoas message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetRoas, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRoas message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetRoas.verify|verify} messages.
                         * @param message TargetRoas message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetRoas, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRoas message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetRoas
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetRoas;

                        /**
                         * Decodes a TargetRoas message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetRoas
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetRoas;

                        /**
                         * Verifies a TargetRoas message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRoas message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetRoas
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetRoas;

                        /**
                         * Creates a plain object from a TargetRoas message. Also converts values to other types if specified.
                         * @param message TargetRoas
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetRoas, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRoas to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetRoas
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetSpend. */
                    interface ITargetSpend {

                        /** TargetSpend target_spend_micros */
                        target_spend_micros?: (number|null);

                        /** TargetSpend cpc_bid_ceiling_micros */
                        cpc_bid_ceiling_micros?: (number|null);
                    }

                    /** Represents a TargetSpend. */
                    class TargetSpend implements ITargetSpend {

                        /**
                         * Constructs a new TargetSpend.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetSpend);

                        /** TargetSpend target_spend_micros. */
                        public target_spend_micros?: (number|null);

                        /** TargetSpend cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros?: (number|null);

                        /**
                         * Creates a new TargetSpend instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetSpend instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetSpend): google.ads.googleads.v23.common.TargetSpend;

                        /**
                         * Encodes the specified TargetSpend message. Does not implicitly {@link google.ads.googleads.v23.common.TargetSpend.verify|verify} messages.
                         * @param message TargetSpend message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetSpend, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetSpend message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetSpend.verify|verify} messages.
                         * @param message TargetSpend message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetSpend, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetSpend message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetSpend
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetSpend;

                        /**
                         * Decodes a TargetSpend message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetSpend
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetSpend;

                        /**
                         * Verifies a TargetSpend message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetSpend message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetSpend
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetSpend;

                        /**
                         * Creates a plain object from a TargetSpend message. Also converts values to other types if specified.
                         * @param message TargetSpend
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetSpend, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetSpend to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetSpend
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PercentCpc. */
                    interface IPercentCpc {

                        /** PercentCpc cpc_bid_ceiling_micros */
                        cpc_bid_ceiling_micros?: (number|null);

                        /** PercentCpc enhanced_cpc_enabled */
                        enhanced_cpc_enabled?: (boolean|null);
                    }

                    /** Represents a PercentCpc. */
                    class PercentCpc implements IPercentCpc {

                        /**
                         * Constructs a new PercentCpc.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPercentCpc);

                        /** PercentCpc cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros?: (number|null);

                        /** PercentCpc enhanced_cpc_enabled. */
                        public enhanced_cpc_enabled?: (boolean|null);

                        /**
                         * Creates a new PercentCpc instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PercentCpc instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPercentCpc): google.ads.googleads.v23.common.PercentCpc;

                        /**
                         * Encodes the specified PercentCpc message. Does not implicitly {@link google.ads.googleads.v23.common.PercentCpc.verify|verify} messages.
                         * @param message PercentCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPercentCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PercentCpc message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PercentCpc.verify|verify} messages.
                         * @param message PercentCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPercentCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PercentCpc message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PercentCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.PercentCpc;

                        /**
                         * Decodes a PercentCpc message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PercentCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.PercentCpc;

                        /**
                         * Verifies a PercentCpc message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PercentCpc message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PercentCpc
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PercentCpc;

                        /**
                         * Creates a plain object from a PercentCpc message. Also converts values to other types if specified.
                         * @param message PercentCpc
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.PercentCpc, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PercentCpc to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PercentCpc
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FixedCpm. */
                    interface IFixedCpm {

                        /** FixedCpm goal */
                        goal?: (google.ads.googleads.v23.enums.FixedCpmGoalEnum.FixedCpmGoal|keyof typeof google.ads.googleads.v23.enums.FixedCpmGoalEnum.FixedCpmGoal|null);

                        /** FixedCpm target_frequency_info */
                        target_frequency_info?: (google.ads.googleads.v23.common.IFixedCpmTargetFrequencyGoalInfo|null);
                    }

                    /** Represents a FixedCpm. */
                    class FixedCpm implements IFixedCpm {

                        /**
                         * Constructs a new FixedCpm.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFixedCpm);

                        /** FixedCpm goal. */
                        public goal: (google.ads.googleads.v23.enums.FixedCpmGoalEnum.FixedCpmGoal|keyof typeof google.ads.googleads.v23.enums.FixedCpmGoalEnum.FixedCpmGoal);

                        /** FixedCpm target_frequency_info. */
                        public target_frequency_info?: (google.ads.googleads.v23.common.IFixedCpmTargetFrequencyGoalInfo|null);

                        /** FixedCpm goal_info. */
                        public goal_info?: "target_frequency_info";

                        /**
                         * Creates a new FixedCpm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FixedCpm instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFixedCpm): google.ads.googleads.v23.common.FixedCpm;

                        /**
                         * Encodes the specified FixedCpm message. Does not implicitly {@link google.ads.googleads.v23.common.FixedCpm.verify|verify} messages.
                         * @param message FixedCpm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFixedCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FixedCpm message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FixedCpm.verify|verify} messages.
                         * @param message FixedCpm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFixedCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FixedCpm message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FixedCpm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.FixedCpm;

                        /**
                         * Decodes a FixedCpm message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FixedCpm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.FixedCpm;

                        /**
                         * Verifies a FixedCpm message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FixedCpm message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FixedCpm
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.FixedCpm;

                        /**
                         * Creates a plain object from a FixedCpm message. Also converts values to other types if specified.
                         * @param message FixedCpm
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.FixedCpm, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FixedCpm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FixedCpm
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FixedCpmTargetFrequencyGoalInfo. */
                    interface IFixedCpmTargetFrequencyGoalInfo {

                        /** FixedCpmTargetFrequencyGoalInfo target_count */
                        target_count?: (number|null);

                        /** FixedCpmTargetFrequencyGoalInfo time_unit */
                        time_unit?: (google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum.FixedCpmTargetFrequencyTimeUnit|keyof typeof google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum.FixedCpmTargetFrequencyTimeUnit|null);
                    }

                    /** Represents a FixedCpmTargetFrequencyGoalInfo. */
                    class FixedCpmTargetFrequencyGoalInfo implements IFixedCpmTargetFrequencyGoalInfo {

                        /**
                         * Constructs a new FixedCpmTargetFrequencyGoalInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFixedCpmTargetFrequencyGoalInfo);

                        /** FixedCpmTargetFrequencyGoalInfo target_count. */
                        public target_count: number;

                        /** FixedCpmTargetFrequencyGoalInfo time_unit. */
                        public time_unit: (google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum.FixedCpmTargetFrequencyTimeUnit|keyof typeof google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum.FixedCpmTargetFrequencyTimeUnit);

                        /**
                         * Creates a new FixedCpmTargetFrequencyGoalInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FixedCpmTargetFrequencyGoalInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFixedCpmTargetFrequencyGoalInfo): google.ads.googleads.v23.common.FixedCpmTargetFrequencyGoalInfo;

                        /**
                         * Encodes the specified FixedCpmTargetFrequencyGoalInfo message. Does not implicitly {@link google.ads.googleads.v23.common.FixedCpmTargetFrequencyGoalInfo.verify|verify} messages.
                         * @param message FixedCpmTargetFrequencyGoalInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFixedCpmTargetFrequencyGoalInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FixedCpmTargetFrequencyGoalInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FixedCpmTargetFrequencyGoalInfo.verify|verify} messages.
                         * @param message FixedCpmTargetFrequencyGoalInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFixedCpmTargetFrequencyGoalInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FixedCpmTargetFrequencyGoalInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FixedCpmTargetFrequencyGoalInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.FixedCpmTargetFrequencyGoalInfo;

                        /**
                         * Decodes a FixedCpmTargetFrequencyGoalInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FixedCpmTargetFrequencyGoalInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.FixedCpmTargetFrequencyGoalInfo;

                        /**
                         * Verifies a FixedCpmTargetFrequencyGoalInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FixedCpmTargetFrequencyGoalInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FixedCpmTargetFrequencyGoalInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.FixedCpmTargetFrequencyGoalInfo;

                        /**
                         * Creates a plain object from a FixedCpmTargetFrequencyGoalInfo message. Also converts values to other types if specified.
                         * @param message FixedCpmTargetFrequencyGoalInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.FixedCpmTargetFrequencyGoalInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FixedCpmTargetFrequencyGoalInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FixedCpmTargetFrequencyGoalInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetCpv. */
                    interface ITargetCpv {
                    }

                    /** Represents a TargetCpv. */
                    class TargetCpv implements ITargetCpv {

                        /**
                         * Constructs a new TargetCpv.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetCpv);

                        /**
                         * Creates a new TargetCpv instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpv instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetCpv): google.ads.googleads.v23.common.TargetCpv;

                        /**
                         * Encodes the specified TargetCpv message. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpv.verify|verify} messages.
                         * @param message TargetCpv message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetCpv, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpv message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpv.verify|verify} messages.
                         * @param message TargetCpv message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetCpv, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpv message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpv
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetCpv;

                        /**
                         * Decodes a TargetCpv message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpv
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetCpv;

                        /**
                         * Verifies a TargetCpv message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpv message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpv
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetCpv;

                        /**
                         * Creates a plain object from a TargetCpv message. Also converts values to other types if specified.
                         * @param message TargetCpv
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetCpv, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpv to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpv
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetCpc. */
                    interface ITargetCpc {

                        /** TargetCpc target_cpc_micros */
                        target_cpc_micros?: (number|null);
                    }

                    /** Represents a TargetCpc. */
                    class TargetCpc implements ITargetCpc {

                        /**
                         * Constructs a new TargetCpc.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetCpc);

                        /** TargetCpc target_cpc_micros. */
                        public target_cpc_micros: number;

                        /**
                         * Creates a new TargetCpc instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpc instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetCpc): google.ads.googleads.v23.common.TargetCpc;

                        /**
                         * Encodes the specified TargetCpc message. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpc.verify|verify} messages.
                         * @param message TargetCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpc message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpc.verify|verify} messages.
                         * @param message TargetCpc message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpc message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetCpc;

                        /**
                         * Decodes a TargetCpc message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpc
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetCpc;

                        /**
                         * Verifies a TargetCpc message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpc message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpc
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetCpc;

                        /**
                         * Creates a plain object from a TargetCpc message. Also converts values to other types if specified.
                         * @param message TargetCpc
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetCpc, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpc to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpc
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignGoalSettings. */
                    interface ICampaignGoalSettings {
                    }

                    /** Represents a CampaignGoalSettings. */
                    class CampaignGoalSettings implements ICampaignGoalSettings {

                        /**
                         * Constructs a new CampaignGoalSettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICampaignGoalSettings);

                        /**
                         * Creates a new CampaignGoalSettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignGoalSettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICampaignGoalSettings): google.ads.googleads.v23.common.CampaignGoalSettings;

                        /**
                         * Encodes the specified CampaignGoalSettings message. Does not implicitly {@link google.ads.googleads.v23.common.CampaignGoalSettings.verify|verify} messages.
                         * @param message CampaignGoalSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICampaignGoalSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignGoalSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CampaignGoalSettings.verify|verify} messages.
                         * @param message CampaignGoalSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICampaignGoalSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignGoalSettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignGoalSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CampaignGoalSettings;

                        /**
                         * Decodes a CampaignGoalSettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignGoalSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CampaignGoalSettings;

                        /**
                         * Verifies a CampaignGoalSettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignGoalSettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignGoalSettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CampaignGoalSettings;

                        /**
                         * Creates a plain object from a CampaignGoalSettings message. Also converts values to other types if specified.
                         * @param message CampaignGoalSettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CampaignGoalSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignGoalSettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignGoalSettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignGoalSettings {

                        /** Properties of a CampaignRetentionGoalSettings. */
                        interface ICampaignRetentionGoalSettings {

                            /** CampaignRetentionGoalSettings value_settings_override */
                            value_settings_override?: (google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings|null);

                            /** CampaignRetentionGoalSettings target_option */
                            target_option?: (google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum.CustomerLifecycleOptimizationMode|keyof typeof google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum.CustomerLifecycleOptimizationMode|null);
                        }

                        /** Represents a CampaignRetentionGoalSettings. */
                        class CampaignRetentionGoalSettings implements ICampaignRetentionGoalSettings {

                            /**
                             * Constructs a new CampaignRetentionGoalSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.CampaignGoalSettings.ICampaignRetentionGoalSettings);

                            /** CampaignRetentionGoalSettings value_settings_override. */
                            public value_settings_override?: (google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings|null);

                            /** CampaignRetentionGoalSettings target_option. */
                            public target_option: (google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum.CustomerLifecycleOptimizationMode|keyof typeof google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum.CustomerLifecycleOptimizationMode);

                            /**
                             * Creates a new CampaignRetentionGoalSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignRetentionGoalSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.CampaignGoalSettings.ICampaignRetentionGoalSettings): google.ads.googleads.v23.common.CampaignGoalSettings.CampaignRetentionGoalSettings;

                            /**
                             * Encodes the specified CampaignRetentionGoalSettings message. Does not implicitly {@link google.ads.googleads.v23.common.CampaignGoalSettings.CampaignRetentionGoalSettings.verify|verify} messages.
                             * @param message CampaignRetentionGoalSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.CampaignGoalSettings.ICampaignRetentionGoalSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignRetentionGoalSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CampaignGoalSettings.CampaignRetentionGoalSettings.verify|verify} messages.
                             * @param message CampaignRetentionGoalSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.CampaignGoalSettings.ICampaignRetentionGoalSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignRetentionGoalSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CampaignRetentionGoalSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CampaignGoalSettings.CampaignRetentionGoalSettings;

                            /**
                             * Decodes a CampaignRetentionGoalSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CampaignRetentionGoalSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CampaignGoalSettings.CampaignRetentionGoalSettings;

                            /**
                             * Verifies a CampaignRetentionGoalSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignRetentionGoalSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CampaignRetentionGoalSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CampaignGoalSettings.CampaignRetentionGoalSettings;

                            /**
                             * Creates a plain object from a CampaignRetentionGoalSettings message. Also converts values to other types if specified.
                             * @param message CampaignRetentionGoalSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.common.CampaignGoalSettings.CampaignRetentionGoalSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignRetentionGoalSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CampaignRetentionGoalSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a CustomerLifecycleOptimizationValueSettings. */
                    interface ICustomerLifecycleOptimizationValueSettings {

                        /** CustomerLifecycleOptimizationValueSettings additional_value */
                        additional_value?: (number|null);

                        /** CustomerLifecycleOptimizationValueSettings additional_high_lifetime_value */
                        additional_high_lifetime_value?: (number|null);
                    }

                    /** Represents a CustomerLifecycleOptimizationValueSettings. */
                    class CustomerLifecycleOptimizationValueSettings implements ICustomerLifecycleOptimizationValueSettings {

                        /**
                         * Constructs a new CustomerLifecycleOptimizationValueSettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings);

                        /** CustomerLifecycleOptimizationValueSettings additional_value. */
                        public additional_value?: (number|null);

                        /** CustomerLifecycleOptimizationValueSettings additional_high_lifetime_value. */
                        public additional_high_lifetime_value?: (number|null);

                        /**
                         * Creates a new CustomerLifecycleOptimizationValueSettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLifecycleOptimizationValueSettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings): google.ads.googleads.v23.common.CustomerLifecycleOptimizationValueSettings;

                        /**
                         * Encodes the specified CustomerLifecycleOptimizationValueSettings message. Does not implicitly {@link google.ads.googleads.v23.common.CustomerLifecycleOptimizationValueSettings.verify|verify} messages.
                         * @param message CustomerLifecycleOptimizationValueSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLifecycleOptimizationValueSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomerLifecycleOptimizationValueSettings.verify|verify} messages.
                         * @param message CustomerLifecycleOptimizationValueSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLifecycleOptimizationValueSettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerLifecycleOptimizationValueSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomerLifecycleOptimizationValueSettings;

                        /**
                         * Decodes a CustomerLifecycleOptimizationValueSettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerLifecycleOptimizationValueSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomerLifecycleOptimizationValueSettings;

                        /**
                         * Verifies a CustomerLifecycleOptimizationValueSettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLifecycleOptimizationValueSettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerLifecycleOptimizationValueSettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomerLifecycleOptimizationValueSettings;

                        /**
                         * Creates a plain object from a CustomerLifecycleOptimizationValueSettings message. Also converts values to other types if specified.
                         * @param message CustomerLifecycleOptimizationValueSettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomerLifecycleOptimizationValueSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLifecycleOptimizationValueSettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerLifecycleOptimizationValueSettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ClickLocation. */
                    interface IClickLocation {

                        /** ClickLocation city */
                        city?: (string|null);

                        /** ClickLocation country */
                        country?: (string|null);

                        /** ClickLocation metro */
                        metro?: (string|null);

                        /** ClickLocation most_specific */
                        most_specific?: (string|null);

                        /** ClickLocation region */
                        region?: (string|null);
                    }

                    /** Represents a ClickLocation. */
                    class ClickLocation implements IClickLocation {

                        /**
                         * Constructs a new ClickLocation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IClickLocation);

                        /** ClickLocation city. */
                        public city?: (string|null);

                        /** ClickLocation country. */
                        public country?: (string|null);

                        /** ClickLocation metro. */
                        public metro?: (string|null);

                        /** ClickLocation most_specific. */
                        public most_specific?: (string|null);

                        /** ClickLocation region. */
                        public region?: (string|null);

                        /**
                         * Creates a new ClickLocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickLocation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IClickLocation): google.ads.googleads.v23.common.ClickLocation;

                        /**
                         * Encodes the specified ClickLocation message. Does not implicitly {@link google.ads.googleads.v23.common.ClickLocation.verify|verify} messages.
                         * @param message ClickLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IClickLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ClickLocation.verify|verify} messages.
                         * @param message ClickLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IClickLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickLocation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ClickLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ClickLocation;

                        /**
                         * Decodes a ClickLocation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ClickLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ClickLocation;

                        /**
                         * Verifies a ClickLocation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickLocation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ClickLocation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ClickLocation;

                        /**
                         * Creates a plain object from a ClickLocation message. Also converts values to other types if specified.
                         * @param message ClickLocation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ClickLocation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickLocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ClickLocation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Consent. */
                    interface IConsent {

                        /** Consent ad_user_data */
                        ad_user_data?: (google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus|keyof typeof google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus|null);

                        /** Consent ad_personalization */
                        ad_personalization?: (google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus|keyof typeof google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus|null);
                    }

                    /** Represents a Consent. */
                    class Consent implements IConsent {

                        /**
                         * Constructs a new Consent.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IConsent);

                        /** Consent ad_user_data. */
                        public ad_user_data: (google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus|keyof typeof google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus);

                        /** Consent ad_personalization. */
                        public ad_personalization: (google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus|keyof typeof google.ads.googleads.v23.enums.ConsentStatusEnum.ConsentStatus);

                        /**
                         * Creates a new Consent instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Consent instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IConsent): google.ads.googleads.v23.common.Consent;

                        /**
                         * Encodes the specified Consent message. Does not implicitly {@link google.ads.googleads.v23.common.Consent.verify|verify} messages.
                         * @param message Consent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IConsent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Consent message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.Consent.verify|verify} messages.
                         * @param message Consent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IConsent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Consent message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Consent
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.Consent;

                        /**
                         * Decodes a Consent message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Consent
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.Consent;

                        /**
                         * Verifies a Consent message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Consent message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Consent
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.Consent;

                        /**
                         * Creates a plain object from a Consent message. Also converts values to other types if specified.
                         * @param message Consent
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.Consent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Consent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Consent
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CriterionCategoryAvailability. */
                    interface ICriterionCategoryAvailability {

                        /** CriterionCategoryAvailability channel */
                        channel?: (google.ads.googleads.v23.common.ICriterionCategoryChannelAvailability|null);

                        /** CriterionCategoryAvailability locale */
                        locale?: (google.ads.googleads.v23.common.ICriterionCategoryLocaleAvailability[]|null);
                    }

                    /** Represents a CriterionCategoryAvailability. */
                    class CriterionCategoryAvailability implements ICriterionCategoryAvailability {

                        /**
                         * Constructs a new CriterionCategoryAvailability.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICriterionCategoryAvailability);

                        /** CriterionCategoryAvailability channel. */
                        public channel?: (google.ads.googleads.v23.common.ICriterionCategoryChannelAvailability|null);

                        /** CriterionCategoryAvailability locale. */
                        public locale: google.ads.googleads.v23.common.ICriterionCategoryLocaleAvailability[];

                        /**
                         * Creates a new CriterionCategoryAvailability instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionCategoryAvailability instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICriterionCategoryAvailability): google.ads.googleads.v23.common.CriterionCategoryAvailability;

                        /**
                         * Encodes the specified CriterionCategoryAvailability message. Does not implicitly {@link google.ads.googleads.v23.common.CriterionCategoryAvailability.verify|verify} messages.
                         * @param message CriterionCategoryAvailability message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICriterionCategoryAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryAvailability message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CriterionCategoryAvailability.verify|verify} messages.
                         * @param message CriterionCategoryAvailability message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICriterionCategoryAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryAvailability message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionCategoryAvailability
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CriterionCategoryAvailability;

                        /**
                         * Decodes a CriterionCategoryAvailability message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionCategoryAvailability
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CriterionCategoryAvailability;

                        /**
                         * Verifies a CriterionCategoryAvailability message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryAvailability message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionCategoryAvailability
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CriterionCategoryAvailability;

                        /**
                         * Creates a plain object from a CriterionCategoryAvailability message. Also converts values to other types if specified.
                         * @param message CriterionCategoryAvailability
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CriterionCategoryAvailability, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryAvailability to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionCategoryAvailability
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CriterionCategoryChannelAvailability. */
                    interface ICriterionCategoryChannelAvailability {

                        /** CriterionCategoryChannelAvailability availability_mode */
                        availability_mode?: (google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode|keyof typeof google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode|null);

                        /** CriterionCategoryChannelAvailability advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** CriterionCategoryChannelAvailability advertising_channel_sub_type */
                        advertising_channel_sub_type?: (google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType[]|null);

                        /** CriterionCategoryChannelAvailability include_default_channel_sub_type */
                        include_default_channel_sub_type?: (boolean|null);
                    }

                    /** Represents a CriterionCategoryChannelAvailability. */
                    class CriterionCategoryChannelAvailability implements ICriterionCategoryChannelAvailability {

                        /**
                         * Constructs a new CriterionCategoryChannelAvailability.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICriterionCategoryChannelAvailability);

                        /** CriterionCategoryChannelAvailability availability_mode. */
                        public availability_mode: (google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode|keyof typeof google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode);

                        /** CriterionCategoryChannelAvailability advertising_channel_type. */
                        public advertising_channel_type: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType);

                        /** CriterionCategoryChannelAvailability advertising_channel_sub_type. */
                        public advertising_channel_sub_type: google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType[];

                        /** CriterionCategoryChannelAvailability include_default_channel_sub_type. */
                        public include_default_channel_sub_type?: (boolean|null);

                        /**
                         * Creates a new CriterionCategoryChannelAvailability instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionCategoryChannelAvailability instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICriterionCategoryChannelAvailability): google.ads.googleads.v23.common.CriterionCategoryChannelAvailability;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailability message. Does not implicitly {@link google.ads.googleads.v23.common.CriterionCategoryChannelAvailability.verify|verify} messages.
                         * @param message CriterionCategoryChannelAvailability message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICriterionCategoryChannelAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailability message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CriterionCategoryChannelAvailability.verify|verify} messages.
                         * @param message CriterionCategoryChannelAvailability message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICriterionCategoryChannelAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryChannelAvailability message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionCategoryChannelAvailability
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CriterionCategoryChannelAvailability;

                        /**
                         * Decodes a CriterionCategoryChannelAvailability message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionCategoryChannelAvailability
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CriterionCategoryChannelAvailability;

                        /**
                         * Verifies a CriterionCategoryChannelAvailability message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryChannelAvailability message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionCategoryChannelAvailability
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CriterionCategoryChannelAvailability;

                        /**
                         * Creates a plain object from a CriterionCategoryChannelAvailability message. Also converts values to other types if specified.
                         * @param message CriterionCategoryChannelAvailability
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CriterionCategoryChannelAvailability, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryChannelAvailability to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionCategoryChannelAvailability
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CriterionCategoryLocaleAvailability. */
                    interface ICriterionCategoryLocaleAvailability {

                        /** CriterionCategoryLocaleAvailability availability_mode */
                        availability_mode?: (google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode|keyof typeof google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode|null);

                        /** CriterionCategoryLocaleAvailability country_code */
                        country_code?: (string|null);

                        /** CriterionCategoryLocaleAvailability language_code */
                        language_code?: (string|null);
                    }

                    /** Represents a CriterionCategoryLocaleAvailability. */
                    class CriterionCategoryLocaleAvailability implements ICriterionCategoryLocaleAvailability {

                        /**
                         * Constructs a new CriterionCategoryLocaleAvailability.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICriterionCategoryLocaleAvailability);

                        /** CriterionCategoryLocaleAvailability availability_mode. */
                        public availability_mode: (google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode|keyof typeof google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode);

                        /** CriterionCategoryLocaleAvailability country_code. */
                        public country_code?: (string|null);

                        /** CriterionCategoryLocaleAvailability language_code. */
                        public language_code?: (string|null);

                        /**
                         * Creates a new CriterionCategoryLocaleAvailability instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionCategoryLocaleAvailability instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICriterionCategoryLocaleAvailability): google.ads.googleads.v23.common.CriterionCategoryLocaleAvailability;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailability message. Does not implicitly {@link google.ads.googleads.v23.common.CriterionCategoryLocaleAvailability.verify|verify} messages.
                         * @param message CriterionCategoryLocaleAvailability message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICriterionCategoryLocaleAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailability message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CriterionCategoryLocaleAvailability.verify|verify} messages.
                         * @param message CriterionCategoryLocaleAvailability message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICriterionCategoryLocaleAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryLocaleAvailability message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionCategoryLocaleAvailability
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CriterionCategoryLocaleAvailability;

                        /**
                         * Decodes a CriterionCategoryLocaleAvailability message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionCategoryLocaleAvailability
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CriterionCategoryLocaleAvailability;

                        /**
                         * Verifies a CriterionCategoryLocaleAvailability message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryLocaleAvailability message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionCategoryLocaleAvailability
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CriterionCategoryLocaleAvailability;

                        /**
                         * Creates a plain object from a CriterionCategoryLocaleAvailability message. Also converts values to other types if specified.
                         * @param message CriterionCategoryLocaleAvailability
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CriterionCategoryLocaleAvailability, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryLocaleAvailability to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionCategoryLocaleAvailability
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomParameter. */
                    interface ICustomParameter {

                        /** CustomParameter key */
                        key?: (string|null);

                        /** CustomParameter value */
                        value?: (string|null);
                    }

                    /** Represents a CustomParameter. */
                    class CustomParameter implements ICustomParameter {

                        /**
                         * Constructs a new CustomParameter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomParameter);

                        /** CustomParameter key. */
                        public key?: (string|null);

                        /** CustomParameter value. */
                        public value?: (string|null);

                        /**
                         * Creates a new CustomParameter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomParameter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomParameter): google.ads.googleads.v23.common.CustomParameter;

                        /**
                         * Encodes the specified CustomParameter message. Does not implicitly {@link google.ads.googleads.v23.common.CustomParameter.verify|verify} messages.
                         * @param message CustomParameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomParameter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomParameter.verify|verify} messages.
                         * @param message CustomParameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomParameter message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomParameter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomParameter;

                        /**
                         * Decodes a CustomParameter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomParameter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomParameter;

                        /**
                         * Verifies a CustomParameter message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomParameter message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomParameter
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomParameter;

                        /**
                         * Creates a plain object from a CustomParameter message. Also converts values to other types if specified.
                         * @param message CustomParameter
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomParameter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomParameter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomParameter
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomizerValue. */
                    interface ICustomizerValue {

                        /** CustomizerValue type */
                        type?: (google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType|keyof typeof google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType|null);

                        /** CustomizerValue string_value */
                        string_value?: (string|null);
                    }

                    /** Represents a CustomizerValue. */
                    class CustomizerValue implements ICustomizerValue {

                        /**
                         * Constructs a new CustomizerValue.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomizerValue);

                        /** CustomizerValue type. */
                        public type: (google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType|keyof typeof google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType);

                        /** CustomizerValue string_value. */
                        public string_value: string;

                        /**
                         * Creates a new CustomizerValue instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomizerValue instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomizerValue): google.ads.googleads.v23.common.CustomizerValue;

                        /**
                         * Encodes the specified CustomizerValue message. Does not implicitly {@link google.ads.googleads.v23.common.CustomizerValue.verify|verify} messages.
                         * @param message CustomizerValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomizerValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomizerValue message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomizerValue.verify|verify} messages.
                         * @param message CustomizerValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomizerValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomizerValue message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomizerValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomizerValue;

                        /**
                         * Decodes a CustomizerValue message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomizerValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomizerValue;

                        /**
                         * Verifies a CustomizerValue message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomizerValue message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomizerValue
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomizerValue;

                        /**
                         * Creates a plain object from a CustomizerValue message. Also converts values to other types if specified.
                         * @param message CustomizerValue
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomizerValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomizerValue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomizerValue
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DateRange. */
                    interface IDateRange {

                        /** DateRange start_date */
                        start_date?: (string|null);

                        /** DateRange end_date */
                        end_date?: (string|null);
                    }

                    /** Represents a DateRange. */
                    class DateRange implements IDateRange {

                        /**
                         * Constructs a new DateRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IDateRange);

                        /** DateRange start_date. */
                        public start_date?: (string|null);

                        /** DateRange end_date. */
                        public end_date?: (string|null);

                        /**
                         * Creates a new DateRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DateRange instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IDateRange): google.ads.googleads.v23.common.DateRange;

                        /**
                         * Encodes the specified DateRange message. Does not implicitly {@link google.ads.googleads.v23.common.DateRange.verify|verify} messages.
                         * @param message DateRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IDateRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DateRange message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.DateRange.verify|verify} messages.
                         * @param message DateRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IDateRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DateRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DateRange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.DateRange;

                        /**
                         * Decodes a DateRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DateRange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.DateRange;

                        /**
                         * Verifies a DateRange message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DateRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DateRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.DateRange;

                        /**
                         * Creates a plain object from a DateRange message. Also converts values to other types if specified.
                         * @param message DateRange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.DateRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DateRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DateRange
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YearMonthRange. */
                    interface IYearMonthRange {

                        /** YearMonthRange start */
                        start?: (google.ads.googleads.v23.common.IYearMonth|null);

                        /** YearMonthRange end */
                        end?: (google.ads.googleads.v23.common.IYearMonth|null);
                    }

                    /** Represents a YearMonthRange. */
                    class YearMonthRange implements IYearMonthRange {

                        /**
                         * Constructs a new YearMonthRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYearMonthRange);

                        /** YearMonthRange start. */
                        public start?: (google.ads.googleads.v23.common.IYearMonth|null);

                        /** YearMonthRange end. */
                        public end?: (google.ads.googleads.v23.common.IYearMonth|null);

                        /**
                         * Creates a new YearMonthRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YearMonthRange instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYearMonthRange): google.ads.googleads.v23.common.YearMonthRange;

                        /**
                         * Encodes the specified YearMonthRange message. Does not implicitly {@link google.ads.googleads.v23.common.YearMonthRange.verify|verify} messages.
                         * @param message YearMonthRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYearMonthRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YearMonthRange message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YearMonthRange.verify|verify} messages.
                         * @param message YearMonthRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYearMonthRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YearMonthRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YearMonthRange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.YearMonthRange;

                        /**
                         * Decodes a YearMonthRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YearMonthRange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.YearMonthRange;

                        /**
                         * Verifies a YearMonthRange message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YearMonthRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YearMonthRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.YearMonthRange;

                        /**
                         * Creates a plain object from a YearMonthRange message. Also converts values to other types if specified.
                         * @param message YearMonthRange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.YearMonthRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YearMonthRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YearMonthRange
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YearMonth. */
                    interface IYearMonth {

                        /** YearMonth year */
                        year?: (number|null);

                        /** YearMonth month */
                        month?: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|null);
                    }

                    /** Represents a YearMonth. */
                    class YearMonth implements IYearMonth {

                        /**
                         * Constructs a new YearMonth.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IYearMonth);

                        /** YearMonth year. */
                        public year: number;

                        /** YearMonth month. */
                        public month: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear);

                        /**
                         * Creates a new YearMonth instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YearMonth instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IYearMonth): google.ads.googleads.v23.common.YearMonth;

                        /**
                         * Encodes the specified YearMonth message. Does not implicitly {@link google.ads.googleads.v23.common.YearMonth.verify|verify} messages.
                         * @param message YearMonth message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IYearMonth, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YearMonth message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.YearMonth.verify|verify} messages.
                         * @param message YearMonth message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IYearMonth, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YearMonth message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YearMonth
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.YearMonth;

                        /**
                         * Decodes a YearMonth message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YearMonth
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.YearMonth;

                        /**
                         * Verifies a YearMonth message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YearMonth message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YearMonth
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.YearMonth;

                        /**
                         * Creates a plain object from a YearMonth message. Also converts values to other types if specified.
                         * @param message YearMonth
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.YearMonth, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YearMonth to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YearMonth
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CallFeedItem. */
                    interface ICallFeedItem {

                        /** CallFeedItem phone_number */
                        phone_number?: (string|null);

                        /** CallFeedItem country_code */
                        country_code?: (string|null);

                        /** CallFeedItem call_tracking_enabled */
                        call_tracking_enabled?: (boolean|null);

                        /** CallFeedItem call_conversion_action */
                        call_conversion_action?: (string|null);

                        /** CallFeedItem call_conversion_tracking_disabled */
                        call_conversion_tracking_disabled?: (boolean|null);

                        /** CallFeedItem call_conversion_reporting_state */
                        call_conversion_reporting_state?: (google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState|null);
                    }

                    /** Represents a CallFeedItem. */
                    class CallFeedItem implements ICallFeedItem {

                        /**
                         * Constructs a new CallFeedItem.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICallFeedItem);

                        /** CallFeedItem phone_number. */
                        public phone_number?: (string|null);

                        /** CallFeedItem country_code. */
                        public country_code?: (string|null);

                        /** CallFeedItem call_tracking_enabled. */
                        public call_tracking_enabled?: (boolean|null);

                        /** CallFeedItem call_conversion_action. */
                        public call_conversion_action?: (string|null);

                        /** CallFeedItem call_conversion_tracking_disabled. */
                        public call_conversion_tracking_disabled?: (boolean|null);

                        /** CallFeedItem call_conversion_reporting_state. */
                        public call_conversion_reporting_state: (google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v23.enums.CallConversionReportingStateEnum.CallConversionReportingState);

                        /**
                         * Creates a new CallFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICallFeedItem): google.ads.googleads.v23.common.CallFeedItem;

                        /**
                         * Encodes the specified CallFeedItem message. Does not implicitly {@link google.ads.googleads.v23.common.CallFeedItem.verify|verify} messages.
                         * @param message CallFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICallFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CallFeedItem.verify|verify} messages.
                         * @param message CallFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICallFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallFeedItem message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CallFeedItem;

                        /**
                         * Decodes a CallFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CallFeedItem;

                        /**
                         * Verifies a CallFeedItem message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallFeedItem
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CallFeedItem;

                        /**
                         * Creates a plain object from a CallFeedItem message. Also converts values to other types if specified.
                         * @param message CallFeedItem
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CallFeedItem, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallFeedItem
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CalloutFeedItem. */
                    interface ICalloutFeedItem {

                        /** CalloutFeedItem callout_text */
                        callout_text?: (string|null);
                    }

                    /** Represents a CalloutFeedItem. */
                    class CalloutFeedItem implements ICalloutFeedItem {

                        /**
                         * Constructs a new CalloutFeedItem.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICalloutFeedItem);

                        /** CalloutFeedItem callout_text. */
                        public callout_text?: (string|null);

                        /**
                         * Creates a new CalloutFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CalloutFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICalloutFeedItem): google.ads.googleads.v23.common.CalloutFeedItem;

                        /**
                         * Encodes the specified CalloutFeedItem message. Does not implicitly {@link google.ads.googleads.v23.common.CalloutFeedItem.verify|verify} messages.
                         * @param message CalloutFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICalloutFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CalloutFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CalloutFeedItem.verify|verify} messages.
                         * @param message CalloutFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICalloutFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CalloutFeedItem message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CalloutFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CalloutFeedItem;

                        /**
                         * Decodes a CalloutFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CalloutFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CalloutFeedItem;

                        /**
                         * Verifies a CalloutFeedItem message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CalloutFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CalloutFeedItem
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CalloutFeedItem;

                        /**
                         * Creates a plain object from a CalloutFeedItem message. Also converts values to other types if specified.
                         * @param message CalloutFeedItem
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CalloutFeedItem, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CalloutFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CalloutFeedItem
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SitelinkFeedItem. */
                    interface ISitelinkFeedItem {

                        /** SitelinkFeedItem link_text */
                        link_text?: (string|null);

                        /** SitelinkFeedItem line1 */
                        line1?: (string|null);

                        /** SitelinkFeedItem line2 */
                        line2?: (string|null);

                        /** SitelinkFeedItem final_urls */
                        final_urls?: (string[]|null);

                        /** SitelinkFeedItem final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** SitelinkFeedItem tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** SitelinkFeedItem url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v23.common.ICustomParameter[]|null);

                        /** SitelinkFeedItem final_url_suffix */
                        final_url_suffix?: (string|null);
                    }

                    /** Represents a SitelinkFeedItem. */
                    class SitelinkFeedItem implements ISitelinkFeedItem {

                        /**
                         * Constructs a new SitelinkFeedItem.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISitelinkFeedItem);

                        /** SitelinkFeedItem link_text. */
                        public link_text?: (string|null);

                        /** SitelinkFeedItem line1. */
                        public line1?: (string|null);

                        /** SitelinkFeedItem line2. */
                        public line2?: (string|null);

                        /** SitelinkFeedItem final_urls. */
                        public final_urls: string[];

                        /** SitelinkFeedItem final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** SitelinkFeedItem tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** SitelinkFeedItem url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v23.common.ICustomParameter[];

                        /** SitelinkFeedItem final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /**
                         * Creates a new SitelinkFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SitelinkFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISitelinkFeedItem): google.ads.googleads.v23.common.SitelinkFeedItem;

                        /**
                         * Encodes the specified SitelinkFeedItem message. Does not implicitly {@link google.ads.googleads.v23.common.SitelinkFeedItem.verify|verify} messages.
                         * @param message SitelinkFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISitelinkFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SitelinkFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.SitelinkFeedItem.verify|verify} messages.
                         * @param message SitelinkFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISitelinkFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SitelinkFeedItem message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SitelinkFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.SitelinkFeedItem;

                        /**
                         * Decodes a SitelinkFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SitelinkFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.SitelinkFeedItem;

                        /**
                         * Verifies a SitelinkFeedItem message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SitelinkFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SitelinkFeedItem
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.SitelinkFeedItem;

                        /**
                         * Creates a plain object from a SitelinkFeedItem message. Also converts values to other types if specified.
                         * @param message SitelinkFeedItem
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.SitelinkFeedItem, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SitelinkFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SitelinkFeedItem
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FinalAppUrl. */
                    interface IFinalAppUrl {

                        /** FinalAppUrl os_type */
                        os_type?: (google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType|keyof typeof google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType|null);

                        /** FinalAppUrl url */
                        url?: (string|null);
                    }

                    /** Represents a FinalAppUrl. */
                    class FinalAppUrl implements IFinalAppUrl {

                        /**
                         * Constructs a new FinalAppUrl.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFinalAppUrl);

                        /** FinalAppUrl os_type. */
                        public os_type: (google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType|keyof typeof google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType);

                        /** FinalAppUrl url. */
                        public url?: (string|null);

                        /**
                         * Creates a new FinalAppUrl instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FinalAppUrl instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFinalAppUrl): google.ads.googleads.v23.common.FinalAppUrl;

                        /**
                         * Encodes the specified FinalAppUrl message. Does not implicitly {@link google.ads.googleads.v23.common.FinalAppUrl.verify|verify} messages.
                         * @param message FinalAppUrl message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFinalAppUrl, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FinalAppUrl message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FinalAppUrl.verify|verify} messages.
                         * @param message FinalAppUrl message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFinalAppUrl, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FinalAppUrl message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FinalAppUrl
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.FinalAppUrl;

                        /**
                         * Decodes a FinalAppUrl message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FinalAppUrl
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.FinalAppUrl;

                        /**
                         * Verifies a FinalAppUrl message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FinalAppUrl message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FinalAppUrl
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.FinalAppUrl;

                        /**
                         * Creates a plain object from a FinalAppUrl message. Also converts values to other types if specified.
                         * @param message FinalAppUrl
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.FinalAppUrl, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FinalAppUrl to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FinalAppUrl
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FrequencyCapEntry. */
                    interface IFrequencyCapEntry {

                        /** FrequencyCapEntry key */
                        key?: (google.ads.googleads.v23.common.IFrequencyCapKey|null);

                        /** FrequencyCapEntry cap */
                        cap?: (number|null);
                    }

                    /** Represents a FrequencyCapEntry. */
                    class FrequencyCapEntry implements IFrequencyCapEntry {

                        /**
                         * Constructs a new FrequencyCapEntry.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFrequencyCapEntry);

                        /** FrequencyCapEntry key. */
                        public key?: (google.ads.googleads.v23.common.IFrequencyCapKey|null);

                        /** FrequencyCapEntry cap. */
                        public cap?: (number|null);

                        /**
                         * Creates a new FrequencyCapEntry instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCapEntry instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFrequencyCapEntry): google.ads.googleads.v23.common.FrequencyCapEntry;

                        /**
                         * Encodes the specified FrequencyCapEntry message. Does not implicitly {@link google.ads.googleads.v23.common.FrequencyCapEntry.verify|verify} messages.
                         * @param message FrequencyCapEntry message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFrequencyCapEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapEntry message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FrequencyCapEntry.verify|verify} messages.
                         * @param message FrequencyCapEntry message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFrequencyCapEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapEntry message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequencyCapEntry
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.FrequencyCapEntry;

                        /**
                         * Decodes a FrequencyCapEntry message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequencyCapEntry
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.FrequencyCapEntry;

                        /**
                         * Verifies a FrequencyCapEntry message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapEntry message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequencyCapEntry
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.FrequencyCapEntry;

                        /**
                         * Creates a plain object from a FrequencyCapEntry message. Also converts values to other types if specified.
                         * @param message FrequencyCapEntry
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.FrequencyCapEntry, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapEntry to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequencyCapEntry
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FrequencyCapKey. */
                    interface IFrequencyCapKey {

                        /** FrequencyCapKey level */
                        level?: (google.ads.googleads.v23.enums.FrequencyCapLevelEnum.FrequencyCapLevel|keyof typeof google.ads.googleads.v23.enums.FrequencyCapLevelEnum.FrequencyCapLevel|null);

                        /** FrequencyCapKey event_type */
                        event_type?: (google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType|keyof typeof google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType|null);

                        /** FrequencyCapKey time_unit */
                        time_unit?: (google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|null);

                        /** FrequencyCapKey time_length */
                        time_length?: (number|null);
                    }

                    /** Represents a FrequencyCapKey. */
                    class FrequencyCapKey implements IFrequencyCapKey {

                        /**
                         * Constructs a new FrequencyCapKey.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFrequencyCapKey);

                        /** FrequencyCapKey level. */
                        public level: (google.ads.googleads.v23.enums.FrequencyCapLevelEnum.FrequencyCapLevel|keyof typeof google.ads.googleads.v23.enums.FrequencyCapLevelEnum.FrequencyCapLevel);

                        /** FrequencyCapKey event_type. */
                        public event_type: (google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType|keyof typeof google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType);

                        /** FrequencyCapKey time_unit. */
                        public time_unit: (google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit);

                        /** FrequencyCapKey time_length. */
                        public time_length?: (number|null);

                        /**
                         * Creates a new FrequencyCapKey instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCapKey instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFrequencyCapKey): google.ads.googleads.v23.common.FrequencyCapKey;

                        /**
                         * Encodes the specified FrequencyCapKey message. Does not implicitly {@link google.ads.googleads.v23.common.FrequencyCapKey.verify|verify} messages.
                         * @param message FrequencyCapKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFrequencyCapKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapKey message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FrequencyCapKey.verify|verify} messages.
                         * @param message FrequencyCapKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFrequencyCapKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapKey message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequencyCapKey
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.FrequencyCapKey;

                        /**
                         * Decodes a FrequencyCapKey message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequencyCapKey
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.FrequencyCapKey;

                        /**
                         * Verifies a FrequencyCapKey message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapKey message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequencyCapKey
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.FrequencyCapKey;

                        /**
                         * Creates a plain object from a FrequencyCapKey message. Also converts values to other types if specified.
                         * @param message FrequencyCapKey
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.FrequencyCapKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapKey to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequencyCapKey
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GoalSetting. */
                    interface IGoalSetting {
                    }

                    /** Represents a GoalSetting. */
                    class GoalSetting implements IGoalSetting {

                        /**
                         * Constructs a new GoalSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IGoalSetting);

                        /**
                         * Creates a new GoalSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoalSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IGoalSetting): google.ads.googleads.v23.common.GoalSetting;

                        /**
                         * Encodes the specified GoalSetting message. Does not implicitly {@link google.ads.googleads.v23.common.GoalSetting.verify|verify} messages.
                         * @param message GoalSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IGoalSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoalSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.GoalSetting.verify|verify} messages.
                         * @param message GoalSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IGoalSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoalSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoalSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.GoalSetting;

                        /**
                         * Decodes a GoalSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoalSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.GoalSetting;

                        /**
                         * Verifies a GoalSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoalSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoalSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.GoalSetting;

                        /**
                         * Creates a plain object from a GoalSetting message. Also converts values to other types if specified.
                         * @param message GoalSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.GoalSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoalSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoalSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoalSetting {

                        /** Properties of a RetentionGoal. */
                        interface IRetentionGoal {

                            /** RetentionGoal value_settings */
                            value_settings?: (google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings|null);
                        }

                        /** Represents a RetentionGoal. */
                        class RetentionGoal implements IRetentionGoal {

                            /**
                             * Constructs a new RetentionGoal.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.common.GoalSetting.IRetentionGoal);

                            /** RetentionGoal value_settings. */
                            public value_settings?: (google.ads.googleads.v23.common.ICustomerLifecycleOptimizationValueSettings|null);

                            /**
                             * Creates a new RetentionGoal instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RetentionGoal instance
                             */
                            public static create(properties?: google.ads.googleads.v23.common.GoalSetting.IRetentionGoal): google.ads.googleads.v23.common.GoalSetting.RetentionGoal;

                            /**
                             * Encodes the specified RetentionGoal message. Does not implicitly {@link google.ads.googleads.v23.common.GoalSetting.RetentionGoal.verify|verify} messages.
                             * @param message RetentionGoal message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.common.GoalSetting.IRetentionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RetentionGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.GoalSetting.RetentionGoal.verify|verify} messages.
                             * @param message RetentionGoal message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.common.GoalSetting.IRetentionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RetentionGoal message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RetentionGoal
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.GoalSetting.RetentionGoal;

                            /**
                             * Decodes a RetentionGoal message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RetentionGoal
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.GoalSetting.RetentionGoal;

                            /**
                             * Verifies a RetentionGoal message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RetentionGoal message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RetentionGoal
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.GoalSetting.RetentionGoal;

                            /**
                             * Creates a plain object from a RetentionGoal message. Also converts values to other types if specified.
                             * @param message RetentionGoal
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.common.GoalSetting.RetentionGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RetentionGoal to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RetentionGoal
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a KeywordPlanHistoricalMetrics. */
                    interface IKeywordPlanHistoricalMetrics {

                        /** KeywordPlanHistoricalMetrics avg_monthly_searches */
                        avg_monthly_searches?: (number|null);

                        /** KeywordPlanHistoricalMetrics monthly_search_volumes */
                        monthly_search_volumes?: (google.ads.googleads.v23.common.IMonthlySearchVolume[]|null);

                        /** KeywordPlanHistoricalMetrics competition */
                        competition?: (google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum.KeywordPlanCompetitionLevel|keyof typeof google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum.KeywordPlanCompetitionLevel|null);

                        /** KeywordPlanHistoricalMetrics competition_index */
                        competition_index?: (number|null);

                        /** KeywordPlanHistoricalMetrics low_top_of_page_bid_micros */
                        low_top_of_page_bid_micros?: (number|null);

                        /** KeywordPlanHistoricalMetrics high_top_of_page_bid_micros */
                        high_top_of_page_bid_micros?: (number|null);

                        /** KeywordPlanHistoricalMetrics average_cpc_micros */
                        average_cpc_micros?: (number|null);
                    }

                    /** Represents a KeywordPlanHistoricalMetrics. */
                    class KeywordPlanHistoricalMetrics implements IKeywordPlanHistoricalMetrics {

                        /**
                         * Constructs a new KeywordPlanHistoricalMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics);

                        /** KeywordPlanHistoricalMetrics avg_monthly_searches. */
                        public avg_monthly_searches?: (number|null);

                        /** KeywordPlanHistoricalMetrics monthly_search_volumes. */
                        public monthly_search_volumes: google.ads.googleads.v23.common.IMonthlySearchVolume[];

                        /** KeywordPlanHistoricalMetrics competition. */
                        public competition: (google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum.KeywordPlanCompetitionLevel|keyof typeof google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum.KeywordPlanCompetitionLevel);

                        /** KeywordPlanHistoricalMetrics competition_index. */
                        public competition_index?: (number|null);

                        /** KeywordPlanHistoricalMetrics low_top_of_page_bid_micros. */
                        public low_top_of_page_bid_micros?: (number|null);

                        /** KeywordPlanHistoricalMetrics high_top_of_page_bid_micros. */
                        public high_top_of_page_bid_micros?: (number|null);

                        /** KeywordPlanHistoricalMetrics average_cpc_micros. */
                        public average_cpc_micros?: (number|null);

                        /**
                         * Creates a new KeywordPlanHistoricalMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanHistoricalMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics): google.ads.googleads.v23.common.KeywordPlanHistoricalMetrics;

                        /**
                         * Encodes the specified KeywordPlanHistoricalMetrics message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanHistoricalMetrics.verify|verify} messages.
                         * @param message KeywordPlanHistoricalMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanHistoricalMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanHistoricalMetrics.verify|verify} messages.
                         * @param message KeywordPlanHistoricalMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanHistoricalMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanHistoricalMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KeywordPlanHistoricalMetrics;

                        /**
                         * Decodes a KeywordPlanHistoricalMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanHistoricalMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KeywordPlanHistoricalMetrics;

                        /**
                         * Verifies a KeywordPlanHistoricalMetrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanHistoricalMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanHistoricalMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KeywordPlanHistoricalMetrics;

                        /**
                         * Creates a plain object from a KeywordPlanHistoricalMetrics message. Also converts values to other types if specified.
                         * @param message KeywordPlanHistoricalMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KeywordPlanHistoricalMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanHistoricalMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanHistoricalMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HistoricalMetricsOptions. */
                    interface IHistoricalMetricsOptions {

                        /** HistoricalMetricsOptions year_month_range */
                        year_month_range?: (google.ads.googleads.v23.common.IYearMonthRange|null);

                        /** HistoricalMetricsOptions include_average_cpc */
                        include_average_cpc?: (boolean|null);
                    }

                    /** Represents a HistoricalMetricsOptions. */
                    class HistoricalMetricsOptions implements IHistoricalMetricsOptions {

                        /**
                         * Constructs a new HistoricalMetricsOptions.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IHistoricalMetricsOptions);

                        /** HistoricalMetricsOptions year_month_range. */
                        public year_month_range?: (google.ads.googleads.v23.common.IYearMonthRange|null);

                        /** HistoricalMetricsOptions include_average_cpc. */
                        public include_average_cpc: boolean;

                        /**
                         * Creates a new HistoricalMetricsOptions instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HistoricalMetricsOptions instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IHistoricalMetricsOptions): google.ads.googleads.v23.common.HistoricalMetricsOptions;

                        /**
                         * Encodes the specified HistoricalMetricsOptions message. Does not implicitly {@link google.ads.googleads.v23.common.HistoricalMetricsOptions.verify|verify} messages.
                         * @param message HistoricalMetricsOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IHistoricalMetricsOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HistoricalMetricsOptions message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.HistoricalMetricsOptions.verify|verify} messages.
                         * @param message HistoricalMetricsOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IHistoricalMetricsOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HistoricalMetricsOptions message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HistoricalMetricsOptions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.HistoricalMetricsOptions;

                        /**
                         * Decodes a HistoricalMetricsOptions message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HistoricalMetricsOptions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.HistoricalMetricsOptions;

                        /**
                         * Verifies a HistoricalMetricsOptions message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HistoricalMetricsOptions message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HistoricalMetricsOptions
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.HistoricalMetricsOptions;

                        /**
                         * Creates a plain object from a HistoricalMetricsOptions message. Also converts values to other types if specified.
                         * @param message HistoricalMetricsOptions
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.HistoricalMetricsOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HistoricalMetricsOptions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HistoricalMetricsOptions
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MonthlySearchVolume. */
                    interface IMonthlySearchVolume {

                        /** MonthlySearchVolume year */
                        year?: (number|null);

                        /** MonthlySearchVolume month */
                        month?: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|null);

                        /** MonthlySearchVolume monthly_searches */
                        monthly_searches?: (number|null);
                    }

                    /** Represents a MonthlySearchVolume. */
                    class MonthlySearchVolume implements IMonthlySearchVolume {

                        /**
                         * Constructs a new MonthlySearchVolume.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMonthlySearchVolume);

                        /** MonthlySearchVolume year. */
                        public year?: (number|null);

                        /** MonthlySearchVolume month. */
                        public month: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear);

                        /** MonthlySearchVolume monthly_searches. */
                        public monthly_searches?: (number|null);

                        /**
                         * Creates a new MonthlySearchVolume instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MonthlySearchVolume instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMonthlySearchVolume): google.ads.googleads.v23.common.MonthlySearchVolume;

                        /**
                         * Encodes the specified MonthlySearchVolume message. Does not implicitly {@link google.ads.googleads.v23.common.MonthlySearchVolume.verify|verify} messages.
                         * @param message MonthlySearchVolume message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMonthlySearchVolume, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MonthlySearchVolume message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MonthlySearchVolume.verify|verify} messages.
                         * @param message MonthlySearchVolume message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMonthlySearchVolume, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MonthlySearchVolume message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MonthlySearchVolume
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.MonthlySearchVolume;

                        /**
                         * Decodes a MonthlySearchVolume message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MonthlySearchVolume
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.MonthlySearchVolume;

                        /**
                         * Verifies a MonthlySearchVolume message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MonthlySearchVolume message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MonthlySearchVolume
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.MonthlySearchVolume;

                        /**
                         * Creates a plain object from a MonthlySearchVolume message. Also converts values to other types if specified.
                         * @param message MonthlySearchVolume
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.MonthlySearchVolume, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MonthlySearchVolume to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MonthlySearchVolume
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanAggregateMetrics. */
                    interface IKeywordPlanAggregateMetrics {

                        /** KeywordPlanAggregateMetrics aggregate_metric_types */
                        aggregate_metric_types?: (google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum.KeywordPlanAggregateMetricType[]|null);
                    }

                    /** Represents a KeywordPlanAggregateMetrics. */
                    class KeywordPlanAggregateMetrics implements IKeywordPlanAggregateMetrics {

                        /**
                         * Constructs a new KeywordPlanAggregateMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics);

                        /** KeywordPlanAggregateMetrics aggregate_metric_types. */
                        public aggregate_metric_types: google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum.KeywordPlanAggregateMetricType[];

                        /**
                         * Creates a new KeywordPlanAggregateMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAggregateMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics): google.ads.googleads.v23.common.KeywordPlanAggregateMetrics;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetrics message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanAggregateMetrics.verify|verify} messages.
                         * @param message KeywordPlanAggregateMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanAggregateMetrics.verify|verify} messages.
                         * @param message KeywordPlanAggregateMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAggregateMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAggregateMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KeywordPlanAggregateMetrics;

                        /**
                         * Decodes a KeywordPlanAggregateMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAggregateMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KeywordPlanAggregateMetrics;

                        /**
                         * Verifies a KeywordPlanAggregateMetrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAggregateMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAggregateMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KeywordPlanAggregateMetrics;

                        /**
                         * Creates a plain object from a KeywordPlanAggregateMetrics message. Also converts values to other types if specified.
                         * @param message KeywordPlanAggregateMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KeywordPlanAggregateMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAggregateMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAggregateMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanAggregateMetricResults. */
                    interface IKeywordPlanAggregateMetricResults {

                        /** KeywordPlanAggregateMetricResults device_searches */
                        device_searches?: (google.ads.googleads.v23.common.IKeywordPlanDeviceSearches[]|null);
                    }

                    /** Represents a KeywordPlanAggregateMetricResults. */
                    class KeywordPlanAggregateMetricResults implements IKeywordPlanAggregateMetricResults {

                        /**
                         * Constructs a new KeywordPlanAggregateMetricResults.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults);

                        /** KeywordPlanAggregateMetricResults device_searches. */
                        public device_searches: google.ads.googleads.v23.common.IKeywordPlanDeviceSearches[];

                        /**
                         * Creates a new KeywordPlanAggregateMetricResults instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAggregateMetricResults instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults): google.ads.googleads.v23.common.KeywordPlanAggregateMetricResults;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricResults message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanAggregateMetricResults.verify|verify} messages.
                         * @param message KeywordPlanAggregateMetricResults message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricResults message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanAggregateMetricResults.verify|verify} messages.
                         * @param message KeywordPlanAggregateMetricResults message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAggregateMetricResults message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAggregateMetricResults
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KeywordPlanAggregateMetricResults;

                        /**
                         * Decodes a KeywordPlanAggregateMetricResults message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAggregateMetricResults
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KeywordPlanAggregateMetricResults;

                        /**
                         * Verifies a KeywordPlanAggregateMetricResults message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAggregateMetricResults message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAggregateMetricResults
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KeywordPlanAggregateMetricResults;

                        /**
                         * Creates a plain object from a KeywordPlanAggregateMetricResults message. Also converts values to other types if specified.
                         * @param message KeywordPlanAggregateMetricResults
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KeywordPlanAggregateMetricResults, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAggregateMetricResults to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAggregateMetricResults
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanDeviceSearches. */
                    interface IKeywordPlanDeviceSearches {

                        /** KeywordPlanDeviceSearches device */
                        device?: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device|null);

                        /** KeywordPlanDeviceSearches search_count */
                        search_count?: (number|null);
                    }

                    /** Represents a KeywordPlanDeviceSearches. */
                    class KeywordPlanDeviceSearches implements IKeywordPlanDeviceSearches {

                        /**
                         * Constructs a new KeywordPlanDeviceSearches.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordPlanDeviceSearches);

                        /** KeywordPlanDeviceSearches device. */
                        public device: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device);

                        /** KeywordPlanDeviceSearches search_count. */
                        public search_count?: (number|null);

                        /**
                         * Creates a new KeywordPlanDeviceSearches instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanDeviceSearches instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordPlanDeviceSearches): google.ads.googleads.v23.common.KeywordPlanDeviceSearches;

                        /**
                         * Encodes the specified KeywordPlanDeviceSearches message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanDeviceSearches.verify|verify} messages.
                         * @param message KeywordPlanDeviceSearches message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordPlanDeviceSearches, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanDeviceSearches message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordPlanDeviceSearches.verify|verify} messages.
                         * @param message KeywordPlanDeviceSearches message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordPlanDeviceSearches, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanDeviceSearches message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanDeviceSearches
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KeywordPlanDeviceSearches;

                        /**
                         * Decodes a KeywordPlanDeviceSearches message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanDeviceSearches
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KeywordPlanDeviceSearches;

                        /**
                         * Verifies a KeywordPlanDeviceSearches message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanDeviceSearches message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanDeviceSearches
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KeywordPlanDeviceSearches;

                        /**
                         * Creates a plain object from a KeywordPlanDeviceSearches message. Also converts values to other types if specified.
                         * @param message KeywordPlanDeviceSearches
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KeywordPlanDeviceSearches, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanDeviceSearches to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanDeviceSearches
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordAnnotations. */
                    interface IKeywordAnnotations {

                        /** KeywordAnnotations concepts */
                        concepts?: (google.ads.googleads.v23.common.IKeywordConcept[]|null);
                    }

                    /** Represents a KeywordAnnotations. */
                    class KeywordAnnotations implements IKeywordAnnotations {

                        /**
                         * Constructs a new KeywordAnnotations.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordAnnotations);

                        /** KeywordAnnotations concepts. */
                        public concepts: google.ads.googleads.v23.common.IKeywordConcept[];

                        /**
                         * Creates a new KeywordAnnotations instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordAnnotations instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordAnnotations): google.ads.googleads.v23.common.KeywordAnnotations;

                        /**
                         * Encodes the specified KeywordAnnotations message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordAnnotations.verify|verify} messages.
                         * @param message KeywordAnnotations message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordAnnotations, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordAnnotations message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordAnnotations.verify|verify} messages.
                         * @param message KeywordAnnotations message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordAnnotations, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordAnnotations message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordAnnotations
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KeywordAnnotations;

                        /**
                         * Decodes a KeywordAnnotations message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordAnnotations
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KeywordAnnotations;

                        /**
                         * Verifies a KeywordAnnotations message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordAnnotations message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordAnnotations
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KeywordAnnotations;

                        /**
                         * Creates a plain object from a KeywordAnnotations message. Also converts values to other types if specified.
                         * @param message KeywordAnnotations
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KeywordAnnotations, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordAnnotations to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordAnnotations
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordConcept. */
                    interface IKeywordConcept {

                        /** KeywordConcept name */
                        name?: (string|null);

                        /** KeywordConcept concept_group */
                        concept_group?: (google.ads.googleads.v23.common.IConceptGroup|null);
                    }

                    /** Represents a KeywordConcept. */
                    class KeywordConcept implements IKeywordConcept {

                        /**
                         * Constructs a new KeywordConcept.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeywordConcept);

                        /** KeywordConcept name. */
                        public name: string;

                        /** KeywordConcept concept_group. */
                        public concept_group?: (google.ads.googleads.v23.common.IConceptGroup|null);

                        /**
                         * Creates a new KeywordConcept instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordConcept instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeywordConcept): google.ads.googleads.v23.common.KeywordConcept;

                        /**
                         * Encodes the specified KeywordConcept message. Does not implicitly {@link google.ads.googleads.v23.common.KeywordConcept.verify|verify} messages.
                         * @param message KeywordConcept message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeywordConcept, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordConcept message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.KeywordConcept.verify|verify} messages.
                         * @param message KeywordConcept message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeywordConcept, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordConcept message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordConcept
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.KeywordConcept;

                        /**
                         * Decodes a KeywordConcept message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordConcept
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.KeywordConcept;

                        /**
                         * Verifies a KeywordConcept message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordConcept message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordConcept
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.KeywordConcept;

                        /**
                         * Creates a plain object from a KeywordConcept message. Also converts values to other types if specified.
                         * @param message KeywordConcept
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.KeywordConcept, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordConcept to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordConcept
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConceptGroup. */
                    interface IConceptGroup {

                        /** ConceptGroup name */
                        name?: (string|null);

                        /** ConceptGroup type */
                        type?: (google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType|keyof typeof google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType|null);
                    }

                    /** Represents a ConceptGroup. */
                    class ConceptGroup implements IConceptGroup {

                        /**
                         * Constructs a new ConceptGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IConceptGroup);

                        /** ConceptGroup name. */
                        public name: string;

                        /** ConceptGroup type. */
                        public type: (google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType|keyof typeof google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType);

                        /**
                         * Creates a new ConceptGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConceptGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IConceptGroup): google.ads.googleads.v23.common.ConceptGroup;

                        /**
                         * Encodes the specified ConceptGroup message. Does not implicitly {@link google.ads.googleads.v23.common.ConceptGroup.verify|verify} messages.
                         * @param message ConceptGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IConceptGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConceptGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ConceptGroup.verify|verify} messages.
                         * @param message ConceptGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IConceptGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConceptGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConceptGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ConceptGroup;

                        /**
                         * Decodes a ConceptGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConceptGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ConceptGroup;

                        /**
                         * Verifies a ConceptGroup message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConceptGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConceptGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ConceptGroup;

                        /**
                         * Creates a plain object from a ConceptGroup message. Also converts values to other types if specified.
                         * @param message ConceptGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ConceptGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConceptGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConceptGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LifecycleGoalValueSettings. */
                    interface ILifecycleGoalValueSettings {

                        /** LifecycleGoalValueSettings value */
                        value?: (number|null);

                        /** LifecycleGoalValueSettings high_lifetime_value */
                        high_lifetime_value?: (number|null);
                    }

                    /** Represents a LifecycleGoalValueSettings. */
                    class LifecycleGoalValueSettings implements ILifecycleGoalValueSettings {

                        /**
                         * Constructs a new LifecycleGoalValueSettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILifecycleGoalValueSettings);

                        /** LifecycleGoalValueSettings value. */
                        public value?: (number|null);

                        /** LifecycleGoalValueSettings high_lifetime_value. */
                        public high_lifetime_value?: (number|null);

                        /**
                         * Creates a new LifecycleGoalValueSettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LifecycleGoalValueSettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILifecycleGoalValueSettings): google.ads.googleads.v23.common.LifecycleGoalValueSettings;

                        /**
                         * Encodes the specified LifecycleGoalValueSettings message. Does not implicitly {@link google.ads.googleads.v23.common.LifecycleGoalValueSettings.verify|verify} messages.
                         * @param message LifecycleGoalValueSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILifecycleGoalValueSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LifecycleGoalValueSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LifecycleGoalValueSettings.verify|verify} messages.
                         * @param message LifecycleGoalValueSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILifecycleGoalValueSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LifecycleGoalValueSettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LifecycleGoalValueSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LifecycleGoalValueSettings;

                        /**
                         * Decodes a LifecycleGoalValueSettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LifecycleGoalValueSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LifecycleGoalValueSettings;

                        /**
                         * Verifies a LifecycleGoalValueSettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LifecycleGoalValueSettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LifecycleGoalValueSettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LifecycleGoalValueSettings;

                        /**
                         * Creates a plain object from a LifecycleGoalValueSettings message. Also converts values to other types if specified.
                         * @param message LifecycleGoalValueSettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LifecycleGoalValueSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LifecycleGoalValueSettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LifecycleGoalValueSettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocalServicesDocumentReadOnly. */
                    interface ILocalServicesDocumentReadOnly {

                        /** LocalServicesDocumentReadOnly document_url */
                        document_url?: (string|null);
                    }

                    /** Represents a LocalServicesDocumentReadOnly. */
                    class LocalServicesDocumentReadOnly implements ILocalServicesDocumentReadOnly {

                        /**
                         * Constructs a new LocalServicesDocumentReadOnly.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly);

                        /** LocalServicesDocumentReadOnly document_url. */
                        public document_url?: (string|null);

                        /**
                         * Creates a new LocalServicesDocumentReadOnly instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesDocumentReadOnly instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly): google.ads.googleads.v23.common.LocalServicesDocumentReadOnly;

                        /**
                         * Encodes the specified LocalServicesDocumentReadOnly message. Does not implicitly {@link google.ads.googleads.v23.common.LocalServicesDocumentReadOnly.verify|verify} messages.
                         * @param message LocalServicesDocumentReadOnly message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesDocumentReadOnly message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LocalServicesDocumentReadOnly.verify|verify} messages.
                         * @param message LocalServicesDocumentReadOnly message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesDocumentReadOnly message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesDocumentReadOnly
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LocalServicesDocumentReadOnly;

                        /**
                         * Decodes a LocalServicesDocumentReadOnly message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesDocumentReadOnly
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LocalServicesDocumentReadOnly;

                        /**
                         * Verifies a LocalServicesDocumentReadOnly message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesDocumentReadOnly message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesDocumentReadOnly
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LocalServicesDocumentReadOnly;

                        /**
                         * Creates a plain object from a LocalServicesDocumentReadOnly message. Also converts values to other types if specified.
                         * @param message LocalServicesDocumentReadOnly
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LocalServicesDocumentReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesDocumentReadOnly to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesDocumentReadOnly
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MetricGoal. */
                    interface IMetricGoal {

                        /** MetricGoal metric */
                        metric?: (google.ads.googleads.v23.enums.ExperimentMetricEnum.ExperimentMetric|keyof typeof google.ads.googleads.v23.enums.ExperimentMetricEnum.ExperimentMetric|null);

                        /** MetricGoal direction */
                        direction?: (google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum.ExperimentMetricDirection|keyof typeof google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum.ExperimentMetricDirection|null);
                    }

                    /** Represents a MetricGoal. */
                    class MetricGoal implements IMetricGoal {

                        /**
                         * Constructs a new MetricGoal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMetricGoal);

                        /** MetricGoal metric. */
                        public metric: (google.ads.googleads.v23.enums.ExperimentMetricEnum.ExperimentMetric|keyof typeof google.ads.googleads.v23.enums.ExperimentMetricEnum.ExperimentMetric);

                        /** MetricGoal direction. */
                        public direction: (google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum.ExperimentMetricDirection|keyof typeof google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum.ExperimentMetricDirection);

                        /**
                         * Creates a new MetricGoal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MetricGoal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMetricGoal): google.ads.googleads.v23.common.MetricGoal;

                        /**
                         * Encodes the specified MetricGoal message. Does not implicitly {@link google.ads.googleads.v23.common.MetricGoal.verify|verify} messages.
                         * @param message MetricGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMetricGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MetricGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.MetricGoal.verify|verify} messages.
                         * @param message MetricGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMetricGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MetricGoal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MetricGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.MetricGoal;

                        /**
                         * Decodes a MetricGoal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MetricGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.MetricGoal;

                        /**
                         * Verifies a MetricGoal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MetricGoal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MetricGoal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.MetricGoal;

                        /**
                         * Creates a plain object from a MetricGoal message. Also converts values to other types if specified.
                         * @param message MetricGoal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.MetricGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MetricGoal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MetricGoal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Metrics. */
                    interface IMetrics {

                        /** Metrics absolute_top_impression_percentage */
                        absolute_top_impression_percentage?: (number|null);

                        /** Metrics active_view_cpm */
                        active_view_cpm?: (number|null);

                        /** Metrics active_view_ctr */
                        active_view_ctr?: (number|null);

                        /** Metrics active_view_impressions */
                        active_view_impressions?: (number|null);

                        /** Metrics active_view_measurability */
                        active_view_measurability?: (number|null);

                        /** Metrics active_view_measurable_cost_micros */
                        active_view_measurable_cost_micros?: (number|null);

                        /** Metrics active_view_measurable_impressions */
                        active_view_measurable_impressions?: (number|null);

                        /** Metrics active_view_viewability */
                        active_view_viewability?: (number|null);

                        /** Metrics all_conversions_from_interactions_rate */
                        all_conversions_from_interactions_rate?: (number|null);

                        /** Metrics all_conversions_value */
                        all_conversions_value?: (number|null);

                        /** Metrics all_conversions_value_by_conversion_date */
                        all_conversions_value_by_conversion_date?: (number|null);

                        /** Metrics all_new_customer_lifetime_value */
                        all_new_customer_lifetime_value?: (number|null);

                        /** Metrics all_conversions */
                        all_conversions?: (number|null);

                        /** Metrics all_conversions_by_conversion_date */
                        all_conversions_by_conversion_date?: (number|null);

                        /** Metrics all_conversions_value_per_cost */
                        all_conversions_value_per_cost?: (number|null);

                        /** Metrics all_conversions_from_click_to_call */
                        all_conversions_from_click_to_call?: (number|null);

                        /** Metrics all_conversions_from_directions */
                        all_conversions_from_directions?: (number|null);

                        /** Metrics all_conversions_from_interactions_value_per_interaction */
                        all_conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics all_conversions_from_menu */
                        all_conversions_from_menu?: (number|null);

                        /** Metrics all_conversions_from_order */
                        all_conversions_from_order?: (number|null);

                        /** Metrics all_conversions_from_other_engagement */
                        all_conversions_from_other_engagement?: (number|null);

                        /** Metrics all_conversions_from_store_visit */
                        all_conversions_from_store_visit?: (number|null);

                        /** Metrics all_conversions_from_store_website */
                        all_conversions_from_store_website?: (number|null);

                        /** Metrics auction_insight_search_absolute_top_impression_percentage */
                        auction_insight_search_absolute_top_impression_percentage?: (number|null);

                        /** Metrics auction_insight_search_impression_share */
                        auction_insight_search_impression_share?: (number|null);

                        /** Metrics auction_insight_search_outranking_share */
                        auction_insight_search_outranking_share?: (number|null);

                        /** Metrics auction_insight_search_overlap_rate */
                        auction_insight_search_overlap_rate?: (number|null);

                        /** Metrics auction_insight_search_position_above_rate */
                        auction_insight_search_position_above_rate?: (number|null);

                        /** Metrics auction_insight_search_top_impression_percentage */
                        auction_insight_search_top_impression_percentage?: (number|null);

                        /** Metrics average_cost */
                        average_cost?: (number|null);

                        /** Metrics average_cpc */
                        average_cpc?: (number|null);

                        /** Metrics average_cpe */
                        average_cpe?: (number|null);

                        /** Metrics average_cpm */
                        average_cpm?: (number|null);

                        /** Metrics trueview_average_cpv */
                        trueview_average_cpv?: (number|null);

                        /** Metrics average_page_views */
                        average_page_views?: (number|null);

                        /** Metrics average_time_on_site */
                        average_time_on_site?: (number|null);

                        /** Metrics benchmark_average_max_cpc */
                        benchmark_average_max_cpc?: (number|null);

                        /** Metrics biddable_app_install_conversions */
                        biddable_app_install_conversions?: (number|null);

                        /** Metrics biddable_app_post_install_conversions */
                        biddable_app_post_install_conversions?: (number|null);

                        /** Metrics biddable_cohort_app_post_install_conversions */
                        biddable_cohort_app_post_install_conversions?: (number|null);

                        /** Metrics benchmark_ctr */
                        benchmark_ctr?: (number|null);

                        /** Metrics bounce_rate */
                        bounce_rate?: (number|null);

                        /** Metrics clicks */
                        clicks?: (number|null);

                        /** Metrics combined_clicks */
                        combined_clicks?: (number|null);

                        /** Metrics combined_clicks_per_query */
                        combined_clicks_per_query?: (number|null);

                        /** Metrics combined_queries */
                        combined_queries?: (number|null);

                        /** Metrics content_budget_lost_impression_share */
                        content_budget_lost_impression_share?: (number|null);

                        /** Metrics content_impression_share */
                        content_impression_share?: (number|null);

                        /** Metrics conversion_last_received_request_date_time */
                        conversion_last_received_request_date_time?: (string|null);

                        /** Metrics conversion_last_conversion_date */
                        conversion_last_conversion_date?: (string|null);

                        /** Metrics content_rank_lost_impression_share */
                        content_rank_lost_impression_share?: (number|null);

                        /** Metrics conversions_from_interactions_rate */
                        conversions_from_interactions_rate?: (number|null);

                        /** Metrics conversions_value */
                        conversions_value?: (number|null);

                        /** Metrics conversions_value_by_conversion_date */
                        conversions_value_by_conversion_date?: (number|null);

                        /** Metrics new_customer_lifetime_value */
                        new_customer_lifetime_value?: (number|null);

                        /** Metrics conversions_value_per_cost */
                        conversions_value_per_cost?: (number|null);

                        /** Metrics conversions_from_interactions_value_per_interaction */
                        conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics conversions */
                        conversions?: (number|null);

                        /** Metrics conversions_by_conversion_date */
                        conversions_by_conversion_date?: (number|null);

                        /** Metrics cost_micros */
                        cost_micros?: (number|null);

                        /** Metrics cost_per_all_conversions */
                        cost_per_all_conversions?: (number|null);

                        /** Metrics cost_per_conversion */
                        cost_per_conversion?: (number|null);

                        /** Metrics cost_per_current_model_attributed_conversion */
                        cost_per_current_model_attributed_conversion?: (number|null);

                        /** Metrics cross_device_conversions */
                        cross_device_conversions?: (number|null);

                        /** Metrics cross_device_conversions_by_conversion_date */
                        cross_device_conversions_by_conversion_date?: (number|null);

                        /** Metrics cross_device_conversions_value */
                        cross_device_conversions_value?: (number|null);

                        /** Metrics cross_device_conversions_value_micros */
                        cross_device_conversions_value_micros?: (number|null);

                        /** Metrics cross_device_conversions_value_by_conversion_date */
                        cross_device_conversions_value_by_conversion_date?: (number|null);

                        /** Metrics ctr */
                        ctr?: (number|null);

                        /** Metrics current_model_attributed_conversions */
                        current_model_attributed_conversions?: (number|null);

                        /** Metrics current_model_attributed_conversions_from_interactions_rate */
                        current_model_attributed_conversions_from_interactions_rate?: (number|null);

                        /** Metrics current_model_attributed_conversions_from_interactions_value_per_interaction */
                        current_model_attributed_conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics current_model_attributed_conversions_value */
                        current_model_attributed_conversions_value?: (number|null);

                        /** Metrics current_model_attributed_conversions_value_per_cost */
                        current_model_attributed_conversions_value_per_cost?: (number|null);

                        /** Metrics engagement_rate */
                        engagement_rate?: (number|null);

                        /** Metrics engagements */
                        engagements?: (number|null);

                        /** Metrics hotel_average_lead_value_micros */
                        hotel_average_lead_value_micros?: (number|null);

                        /** Metrics hotel_commission_rate_micros */
                        hotel_commission_rate_micros?: (number|null);

                        /** Metrics hotel_expected_commission_cost */
                        hotel_expected_commission_cost?: (number|null);

                        /** Metrics hotel_price_difference_percentage */
                        hotel_price_difference_percentage?: (number|null);

                        /** Metrics hotel_eligible_impressions */
                        hotel_eligible_impressions?: (number|null);

                        /** Metrics historical_creative_quality_score */
                        historical_creative_quality_score?: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                        /** Metrics historical_landing_page_quality_score */
                        historical_landing_page_quality_score?: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                        /** Metrics historical_quality_score */
                        historical_quality_score?: (number|null);

                        /** Metrics historical_search_predicted_ctr */
                        historical_search_predicted_ctr?: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                        /** Metrics gmail_forwards */
                        gmail_forwards?: (number|null);

                        /** Metrics gmail_saves */
                        gmail_saves?: (number|null);

                        /** Metrics gmail_secondary_clicks */
                        gmail_secondary_clicks?: (number|null);

                        /** Metrics impressions_from_store_reach */
                        impressions_from_store_reach?: (number|null);

                        /** Metrics impressions */
                        impressions?: (number|null);

                        /** Metrics interaction_rate */
                        interaction_rate?: (number|null);

                        /** Metrics interactions */
                        interactions?: (number|null);

                        /** Metrics interaction_event_types */
                        interaction_event_types?: (google.ads.googleads.v23.enums.InteractionEventTypeEnum.InteractionEventType[]|null);

                        /** Metrics invalid_click_rate */
                        invalid_click_rate?: (number|null);

                        /** Metrics invalid_clicks */
                        invalid_clicks?: (number|null);

                        /** Metrics general_invalid_click_rate */
                        general_invalid_click_rate?: (number|null);

                        /** Metrics general_invalid_clicks */
                        general_invalid_clicks?: (number|null);

                        /** Metrics message_chats */
                        message_chats?: (number|null);

                        /** Metrics message_impressions */
                        message_impressions?: (number|null);

                        /** Metrics message_chat_rate */
                        message_chat_rate?: (number|null);

                        /** Metrics mobile_friendly_clicks_percentage */
                        mobile_friendly_clicks_percentage?: (number|null);

                        /** Metrics optimization_score_uplift */
                        optimization_score_uplift?: (number|null);

                        /** Metrics optimization_score_url */
                        optimization_score_url?: (string|null);

                        /** Metrics organic_clicks */
                        organic_clicks?: (number|null);

                        /** Metrics organic_clicks_per_query */
                        organic_clicks_per_query?: (number|null);

                        /** Metrics organic_impressions */
                        organic_impressions?: (number|null);

                        /** Metrics organic_impressions_per_query */
                        organic_impressions_per_query?: (number|null);

                        /** Metrics organic_queries */
                        organic_queries?: (number|null);

                        /** Metrics percent_new_visitors */
                        percent_new_visitors?: (number|null);

                        /** Metrics phone_calls */
                        phone_calls?: (number|null);

                        /** Metrics phone_impressions */
                        phone_impressions?: (number|null);

                        /** Metrics phone_through_rate */
                        phone_through_rate?: (number|null);

                        /** Metrics relative_ctr */
                        relative_ctr?: (number|null);

                        /** Metrics search_absolute_top_impression_share */
                        search_absolute_top_impression_share?: (number|null);

                        /** Metrics search_budget_lost_absolute_top_impression_share */
                        search_budget_lost_absolute_top_impression_share?: (number|null);

                        /** Metrics search_budget_lost_impression_share */
                        search_budget_lost_impression_share?: (number|null);

                        /** Metrics search_budget_lost_top_impression_share */
                        search_budget_lost_top_impression_share?: (number|null);

                        /** Metrics search_click_share */
                        search_click_share?: (number|null);

                        /** Metrics search_exact_match_impression_share */
                        search_exact_match_impression_share?: (number|null);

                        /** Metrics search_impression_share */
                        search_impression_share?: (number|null);

                        /** Metrics search_rank_lost_absolute_top_impression_share */
                        search_rank_lost_absolute_top_impression_share?: (number|null);

                        /** Metrics search_rank_lost_impression_share */
                        search_rank_lost_impression_share?: (number|null);

                        /** Metrics search_rank_lost_top_impression_share */
                        search_rank_lost_top_impression_share?: (number|null);

                        /** Metrics search_top_impression_share */
                        search_top_impression_share?: (number|null);

                        /** Metrics search_volume */
                        search_volume?: (google.ads.googleads.v23.common.ISearchVolumeRange|null);

                        /** Metrics speed_score */
                        speed_score?: (number|null);

                        /** Metrics average_target_cpa_micros */
                        average_target_cpa_micros?: (number|null);

                        /** Metrics average_target_roas */
                        average_target_roas?: (number|null);

                        /** Metrics top_impression_percentage */
                        top_impression_percentage?: (number|null);

                        /** Metrics valid_accelerated_mobile_pages_clicks_percentage */
                        valid_accelerated_mobile_pages_clicks_percentage?: (number|null);

                        /** Metrics value_per_all_conversions */
                        value_per_all_conversions?: (number|null);

                        /** Metrics value_per_all_conversions_by_conversion_date */
                        value_per_all_conversions_by_conversion_date?: (number|null);

                        /** Metrics value_per_conversion */
                        value_per_conversion?: (number|null);

                        /** Metrics value_per_conversions_by_conversion_date */
                        value_per_conversions_by_conversion_date?: (number|null);

                        /** Metrics value_per_current_model_attributed_conversion */
                        value_per_current_model_attributed_conversion?: (number|null);

                        /** Metrics video_quartile_p100_rate */
                        video_quartile_p100_rate?: (number|null);

                        /** Metrics video_quartile_p25_rate */
                        video_quartile_p25_rate?: (number|null);

                        /** Metrics video_quartile_p50_rate */
                        video_quartile_p50_rate?: (number|null);

                        /** Metrics video_quartile_p75_rate */
                        video_quartile_p75_rate?: (number|null);

                        /** Metrics video_trueview_view_rate */
                        video_trueview_view_rate?: (number|null);

                        /** Metrics video_trueview_views */
                        video_trueview_views?: (number|null);

                        /** Metrics view_through_conversions */
                        view_through_conversions?: (number|null);

                        /** Metrics sk_ad_network_installs */
                        sk_ad_network_installs?: (number|null);

                        /** Metrics sk_ad_network_total_conversions */
                        sk_ad_network_total_conversions?: (number|null);

                        /** Metrics publisher_purchased_clicks */
                        publisher_purchased_clicks?: (number|null);

                        /** Metrics publisher_organic_clicks */
                        publisher_organic_clicks?: (number|null);

                        /** Metrics publisher_unknown_clicks */
                        publisher_unknown_clicks?: (number|null);

                        /** Metrics all_conversions_from_location_asset_click_to_call */
                        all_conversions_from_location_asset_click_to_call?: (number|null);

                        /** Metrics all_conversions_from_location_asset_directions */
                        all_conversions_from_location_asset_directions?: (number|null);

                        /** Metrics all_conversions_from_location_asset_menu */
                        all_conversions_from_location_asset_menu?: (number|null);

                        /** Metrics all_conversions_from_location_asset_order */
                        all_conversions_from_location_asset_order?: (number|null);

                        /** Metrics all_conversions_from_location_asset_other_engagement */
                        all_conversions_from_location_asset_other_engagement?: (number|null);

                        /** Metrics all_conversions_from_location_asset_store_visits */
                        all_conversions_from_location_asset_store_visits?: (number|null);

                        /** Metrics all_conversions_from_location_asset_website */
                        all_conversions_from_location_asset_website?: (number|null);

                        /** Metrics eligible_impressions_from_location_asset_store_reach */
                        eligible_impressions_from_location_asset_store_reach?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_click_to_call */
                        view_through_conversions_from_location_asset_click_to_call?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_directions */
                        view_through_conversions_from_location_asset_directions?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_menu */
                        view_through_conversions_from_location_asset_menu?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_order */
                        view_through_conversions_from_location_asset_order?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_other_engagement */
                        view_through_conversions_from_location_asset_other_engagement?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_store_visits */
                        view_through_conversions_from_location_asset_store_visits?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_website */
                        view_through_conversions_from_location_asset_website?: (number|null);

                        /** Metrics orders */
                        orders?: (number|null);

                        /** Metrics average_order_value_micros */
                        average_order_value_micros?: (number|null);

                        /** Metrics average_cart_size */
                        average_cart_size?: (number|null);

                        /** Metrics cost_of_goods_sold_micros */
                        cost_of_goods_sold_micros?: (number|null);

                        /** Metrics gross_profit_micros */
                        gross_profit_micros?: (number|null);

                        /** Metrics gross_profit_margin */
                        gross_profit_margin?: (number|null);

                        /** Metrics revenue_micros */
                        revenue_micros?: (number|null);

                        /** Metrics units_sold */
                        units_sold?: (number|null);

                        /** Metrics cross_sell_cost_of_goods_sold_micros */
                        cross_sell_cost_of_goods_sold_micros?: (number|null);

                        /** Metrics cross_sell_gross_profit_micros */
                        cross_sell_gross_profit_micros?: (number|null);

                        /** Metrics cross_sell_revenue_micros */
                        cross_sell_revenue_micros?: (number|null);

                        /** Metrics cross_sell_units_sold */
                        cross_sell_units_sold?: (number|null);

                        /** Metrics lead_cost_of_goods_sold_micros */
                        lead_cost_of_goods_sold_micros?: (number|null);

                        /** Metrics lead_gross_profit_micros */
                        lead_gross_profit_micros?: (number|null);

                        /** Metrics lead_revenue_micros */
                        lead_revenue_micros?: (number|null);

                        /** Metrics lead_units_sold */
                        lead_units_sold?: (number|null);

                        /** Metrics unique_users */
                        unique_users?: (number|null);

                        /** Metrics average_impression_frequency_per_user */
                        average_impression_frequency_per_user?: (number|null);

                        /** Metrics linked_entities_count */
                        linked_entities_count?: (number|null);

                        /** Metrics linked_sample_entities */
                        linked_sample_entities?: (string[]|null);

                        /** Metrics asset_pinned_total_count */
                        asset_pinned_total_count?: (number|null);

                        /** Metrics asset_pinned_as_headline_position_one_count */
                        asset_pinned_as_headline_position_one_count?: (number|null);

                        /** Metrics asset_pinned_as_headline_position_two_count */
                        asset_pinned_as_headline_position_two_count?: (number|null);

                        /** Metrics asset_pinned_as_headline_position_three_count */
                        asset_pinned_as_headline_position_three_count?: (number|null);

                        /** Metrics asset_pinned_as_description_position_one_count */
                        asset_pinned_as_description_position_one_count?: (number|null);

                        /** Metrics asset_pinned_as_description_position_two_count */
                        asset_pinned_as_description_position_two_count?: (number|null);

                        /** Metrics store_visits_last_click_model_attributed_conversions */
                        store_visits_last_click_model_attributed_conversions?: (number|null);

                        /** Metrics results_conversions_purchase */
                        results_conversions_purchase?: (number|null);

                        /** Metrics video_trueview_view_rate_in_feed */
                        video_trueview_view_rate_in_feed?: (number|null);

                        /** Metrics video_trueview_view_rate_in_stream */
                        video_trueview_view_rate_in_stream?: (number|null);

                        /** Metrics video_trueview_view_rate_shorts */
                        video_trueview_view_rate_shorts?: (number|null);

                        /** Metrics coviewed_impressions */
                        coviewed_impressions?: (number|null);

                        /** Metrics primary_impressions */
                        primary_impressions?: (number|null);

                        /** Metrics platform_comparable_conversions_from_interactions_rate */
                        platform_comparable_conversions_from_interactions_rate?: (number|null);

                        /** Metrics platform_comparable_conversions */
                        platform_comparable_conversions?: (number|null);

                        /** Metrics platform_comparable_conversions_value */
                        platform_comparable_conversions_value?: (number|null);

                        /** Metrics platform_comparable_conversions_value_per_cost */
                        platform_comparable_conversions_value_per_cost?: (number|null);

                        /** Metrics platform_comparable_conversions_by_conversion_date */
                        platform_comparable_conversions_by_conversion_date?: (number|null);

                        /** Metrics platform_comparable_conversions_value_by_conversion_date */
                        platform_comparable_conversions_value_by_conversion_date?: (number|null);

                        /** Metrics platform_comparable_conversions_from_interactions_value_per_interaction */
                        platform_comparable_conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics cost_per_platform_comparable_conversion */
                        cost_per_platform_comparable_conversion?: (number|null);

                        /** Metrics value_per_platform_comparable_conversion */
                        value_per_platform_comparable_conversion?: (number|null);

                        /** Metrics value_per_platform_comparable_conversions_by_conversion_date */
                        value_per_platform_comparable_conversions_by_conversion_date?: (number|null);

                        /** Metrics cost_converted_currency_per_platform_comparable_conversion */
                        cost_converted_currency_per_platform_comparable_conversion?: (number|null);

                        /** Metrics value_adjustment */
                        value_adjustment?: (number|null);

                        /** Metrics all_value_adjustment */
                        all_value_adjustment?: (number|null);

                        /** Metrics clicks_unique_query_clusters */
                        clicks_unique_query_clusters?: (number|null);

                        /** Metrics conversions_unique_query_clusters */
                        conversions_unique_query_clusters?: (number|null);

                        /** Metrics impressions_unique_query_clusters */
                        impressions_unique_query_clusters?: (number|null);

                        /** Metrics video_watch_time_duration_millis */
                        video_watch_time_duration_millis?: (number|null);

                        /** Metrics average_video_watch_time_duration_millis */
                        average_video_watch_time_duration_millis?: (number|null);

                        /** Metrics svr */
                        svr?: (number|null);

                        /** Metrics active_view_audibility_measurable_impressions */
                        active_view_audibility_measurable_impressions?: (number|null);

                        /** Metrics active_view_audibility_measurable_impressions_rate */
                        active_view_audibility_measurable_impressions_rate?: (number|null);

                        /** Metrics active_view_audibility_invalid_measurable_impressions_rate */
                        active_view_audibility_invalid_measurable_impressions_rate?: (number|null);

                        /** Metrics active_view_audibility_invalid_givt_measurable_impressions_rate */
                        active_view_audibility_invalid_givt_measurable_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_impressions */
                        active_view_audible_impressions?: (number|null);

                        /** Metrics active_view_audible_impressions_rate */
                        active_view_audible_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_two_seconds_impressions */
                        active_view_audible_two_seconds_impressions?: (number|null);

                        /** Metrics active_view_audible_two_seconds_impressions_rate */
                        active_view_audible_two_seconds_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_thirty_seconds_impressions */
                        active_view_audible_thirty_seconds_impressions?: (number|null);

                        /** Metrics active_view_audible_thirty_seconds_impressions_rate */
                        active_view_audible_thirty_seconds_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p25_rate */
                        active_view_audible_quartile_p25_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p50_rate */
                        active_view_audible_quartile_p50_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p75_rate */
                        active_view_audible_quartile_p75_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p100_rate */
                        active_view_audible_quartile_p100_rate?: (number|null);
                    }

                    /** Represents a Metrics. */
                    class Metrics implements IMetrics {

                        /**
                         * Constructs a new Metrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IMetrics);

                        /** Metrics absolute_top_impression_percentage. */
                        public absolute_top_impression_percentage?: (number|null);

                        /** Metrics active_view_cpm. */
                        public active_view_cpm?: (number|null);

                        /** Metrics active_view_ctr. */
                        public active_view_ctr?: (number|null);

                        /** Metrics active_view_impressions. */
                        public active_view_impressions?: (number|null);

                        /** Metrics active_view_measurability. */
                        public active_view_measurability?: (number|null);

                        /** Metrics active_view_measurable_cost_micros. */
                        public active_view_measurable_cost_micros?: (number|null);

                        /** Metrics active_view_measurable_impressions. */
                        public active_view_measurable_impressions?: (number|null);

                        /** Metrics active_view_viewability. */
                        public active_view_viewability?: (number|null);

                        /** Metrics all_conversions_from_interactions_rate. */
                        public all_conversions_from_interactions_rate?: (number|null);

                        /** Metrics all_conversions_value. */
                        public all_conversions_value?: (number|null);

                        /** Metrics all_conversions_value_by_conversion_date. */
                        public all_conversions_value_by_conversion_date?: (number|null);

                        /** Metrics all_new_customer_lifetime_value. */
                        public all_new_customer_lifetime_value?: (number|null);

                        /** Metrics all_conversions. */
                        public all_conversions?: (number|null);

                        /** Metrics all_conversions_by_conversion_date. */
                        public all_conversions_by_conversion_date?: (number|null);

                        /** Metrics all_conversions_value_per_cost. */
                        public all_conversions_value_per_cost?: (number|null);

                        /** Metrics all_conversions_from_click_to_call. */
                        public all_conversions_from_click_to_call?: (number|null);

                        /** Metrics all_conversions_from_directions. */
                        public all_conversions_from_directions?: (number|null);

                        /** Metrics all_conversions_from_interactions_value_per_interaction. */
                        public all_conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics all_conversions_from_menu. */
                        public all_conversions_from_menu?: (number|null);

                        /** Metrics all_conversions_from_order. */
                        public all_conversions_from_order?: (number|null);

                        /** Metrics all_conversions_from_other_engagement. */
                        public all_conversions_from_other_engagement?: (number|null);

                        /** Metrics all_conversions_from_store_visit. */
                        public all_conversions_from_store_visit?: (number|null);

                        /** Metrics all_conversions_from_store_website. */
                        public all_conversions_from_store_website?: (number|null);

                        /** Metrics auction_insight_search_absolute_top_impression_percentage. */
                        public auction_insight_search_absolute_top_impression_percentage?: (number|null);

                        /** Metrics auction_insight_search_impression_share. */
                        public auction_insight_search_impression_share?: (number|null);

                        /** Metrics auction_insight_search_outranking_share. */
                        public auction_insight_search_outranking_share?: (number|null);

                        /** Metrics auction_insight_search_overlap_rate. */
                        public auction_insight_search_overlap_rate?: (number|null);

                        /** Metrics auction_insight_search_position_above_rate. */
                        public auction_insight_search_position_above_rate?: (number|null);

                        /** Metrics auction_insight_search_top_impression_percentage. */
                        public auction_insight_search_top_impression_percentage?: (number|null);

                        /** Metrics average_cost. */
                        public average_cost?: (number|null);

                        /** Metrics average_cpc. */
                        public average_cpc?: (number|null);

                        /** Metrics average_cpe. */
                        public average_cpe?: (number|null);

                        /** Metrics average_cpm. */
                        public average_cpm?: (number|null);

                        /** Metrics trueview_average_cpv. */
                        public trueview_average_cpv?: (number|null);

                        /** Metrics average_page_views. */
                        public average_page_views?: (number|null);

                        /** Metrics average_time_on_site. */
                        public average_time_on_site?: (number|null);

                        /** Metrics benchmark_average_max_cpc. */
                        public benchmark_average_max_cpc?: (number|null);

                        /** Metrics biddable_app_install_conversions. */
                        public biddable_app_install_conversions?: (number|null);

                        /** Metrics biddable_app_post_install_conversions. */
                        public biddable_app_post_install_conversions?: (number|null);

                        /** Metrics biddable_cohort_app_post_install_conversions. */
                        public biddable_cohort_app_post_install_conversions?: (number|null);

                        /** Metrics benchmark_ctr. */
                        public benchmark_ctr?: (number|null);

                        /** Metrics bounce_rate. */
                        public bounce_rate?: (number|null);

                        /** Metrics clicks. */
                        public clicks?: (number|null);

                        /** Metrics combined_clicks. */
                        public combined_clicks?: (number|null);

                        /** Metrics combined_clicks_per_query. */
                        public combined_clicks_per_query?: (number|null);

                        /** Metrics combined_queries. */
                        public combined_queries?: (number|null);

                        /** Metrics content_budget_lost_impression_share. */
                        public content_budget_lost_impression_share?: (number|null);

                        /** Metrics content_impression_share. */
                        public content_impression_share?: (number|null);

                        /** Metrics conversion_last_received_request_date_time. */
                        public conversion_last_received_request_date_time?: (string|null);

                        /** Metrics conversion_last_conversion_date. */
                        public conversion_last_conversion_date?: (string|null);

                        /** Metrics content_rank_lost_impression_share. */
                        public content_rank_lost_impression_share?: (number|null);

                        /** Metrics conversions_from_interactions_rate. */
                        public conversions_from_interactions_rate?: (number|null);

                        /** Metrics conversions_value. */
                        public conversions_value?: (number|null);

                        /** Metrics conversions_value_by_conversion_date. */
                        public conversions_value_by_conversion_date?: (number|null);

                        /** Metrics new_customer_lifetime_value. */
                        public new_customer_lifetime_value?: (number|null);

                        /** Metrics conversions_value_per_cost. */
                        public conversions_value_per_cost?: (number|null);

                        /** Metrics conversions_from_interactions_value_per_interaction. */
                        public conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics conversions. */
                        public conversions?: (number|null);

                        /** Metrics conversions_by_conversion_date. */
                        public conversions_by_conversion_date?: (number|null);

                        /** Metrics cost_micros. */
                        public cost_micros?: (number|null);

                        /** Metrics cost_per_all_conversions. */
                        public cost_per_all_conversions?: (number|null);

                        /** Metrics cost_per_conversion. */
                        public cost_per_conversion?: (number|null);

                        /** Metrics cost_per_current_model_attributed_conversion. */
                        public cost_per_current_model_attributed_conversion?: (number|null);

                        /** Metrics cross_device_conversions. */
                        public cross_device_conversions?: (number|null);

                        /** Metrics cross_device_conversions_by_conversion_date. */
                        public cross_device_conversions_by_conversion_date?: (number|null);

                        /** Metrics cross_device_conversions_value. */
                        public cross_device_conversions_value?: (number|null);

                        /** Metrics cross_device_conversions_value_micros. */
                        public cross_device_conversions_value_micros?: (number|null);

                        /** Metrics cross_device_conversions_value_by_conversion_date. */
                        public cross_device_conversions_value_by_conversion_date?: (number|null);

                        /** Metrics ctr. */
                        public ctr?: (number|null);

                        /** Metrics current_model_attributed_conversions. */
                        public current_model_attributed_conversions?: (number|null);

                        /** Metrics current_model_attributed_conversions_from_interactions_rate. */
                        public current_model_attributed_conversions_from_interactions_rate?: (number|null);

                        /** Metrics current_model_attributed_conversions_from_interactions_value_per_interaction. */
                        public current_model_attributed_conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics current_model_attributed_conversions_value. */
                        public current_model_attributed_conversions_value?: (number|null);

                        /** Metrics current_model_attributed_conversions_value_per_cost. */
                        public current_model_attributed_conversions_value_per_cost?: (number|null);

                        /** Metrics engagement_rate. */
                        public engagement_rate?: (number|null);

                        /** Metrics engagements. */
                        public engagements?: (number|null);

                        /** Metrics hotel_average_lead_value_micros. */
                        public hotel_average_lead_value_micros?: (number|null);

                        /** Metrics hotel_commission_rate_micros. */
                        public hotel_commission_rate_micros?: (number|null);

                        /** Metrics hotel_expected_commission_cost. */
                        public hotel_expected_commission_cost?: (number|null);

                        /** Metrics hotel_price_difference_percentage. */
                        public hotel_price_difference_percentage?: (number|null);

                        /** Metrics hotel_eligible_impressions. */
                        public hotel_eligible_impressions?: (number|null);

                        /** Metrics historical_creative_quality_score. */
                        public historical_creative_quality_score: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket);

                        /** Metrics historical_landing_page_quality_score. */
                        public historical_landing_page_quality_score: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket);

                        /** Metrics historical_quality_score. */
                        public historical_quality_score?: (number|null);

                        /** Metrics historical_search_predicted_ctr. */
                        public historical_search_predicted_ctr: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket);

                        /** Metrics gmail_forwards. */
                        public gmail_forwards?: (number|null);

                        /** Metrics gmail_saves. */
                        public gmail_saves?: (number|null);

                        /** Metrics gmail_secondary_clicks. */
                        public gmail_secondary_clicks?: (number|null);

                        /** Metrics impressions_from_store_reach. */
                        public impressions_from_store_reach?: (number|null);

                        /** Metrics impressions. */
                        public impressions?: (number|null);

                        /** Metrics interaction_rate. */
                        public interaction_rate?: (number|null);

                        /** Metrics interactions. */
                        public interactions?: (number|null);

                        /** Metrics interaction_event_types. */
                        public interaction_event_types: google.ads.googleads.v23.enums.InteractionEventTypeEnum.InteractionEventType[];

                        /** Metrics invalid_click_rate. */
                        public invalid_click_rate?: (number|null);

                        /** Metrics invalid_clicks. */
                        public invalid_clicks?: (number|null);

                        /** Metrics general_invalid_click_rate. */
                        public general_invalid_click_rate?: (number|null);

                        /** Metrics general_invalid_clicks. */
                        public general_invalid_clicks?: (number|null);

                        /** Metrics message_chats. */
                        public message_chats?: (number|null);

                        /** Metrics message_impressions. */
                        public message_impressions?: (number|null);

                        /** Metrics message_chat_rate. */
                        public message_chat_rate?: (number|null);

                        /** Metrics mobile_friendly_clicks_percentage. */
                        public mobile_friendly_clicks_percentage?: (number|null);

                        /** Metrics optimization_score_uplift. */
                        public optimization_score_uplift?: (number|null);

                        /** Metrics optimization_score_url. */
                        public optimization_score_url?: (string|null);

                        /** Metrics organic_clicks. */
                        public organic_clicks?: (number|null);

                        /** Metrics organic_clicks_per_query. */
                        public organic_clicks_per_query?: (number|null);

                        /** Metrics organic_impressions. */
                        public organic_impressions?: (number|null);

                        /** Metrics organic_impressions_per_query. */
                        public organic_impressions_per_query?: (number|null);

                        /** Metrics organic_queries. */
                        public organic_queries?: (number|null);

                        /** Metrics percent_new_visitors. */
                        public percent_new_visitors?: (number|null);

                        /** Metrics phone_calls. */
                        public phone_calls?: (number|null);

                        /** Metrics phone_impressions. */
                        public phone_impressions?: (number|null);

                        /** Metrics phone_through_rate. */
                        public phone_through_rate?: (number|null);

                        /** Metrics relative_ctr. */
                        public relative_ctr?: (number|null);

                        /** Metrics search_absolute_top_impression_share. */
                        public search_absolute_top_impression_share?: (number|null);

                        /** Metrics search_budget_lost_absolute_top_impression_share. */
                        public search_budget_lost_absolute_top_impression_share?: (number|null);

                        /** Metrics search_budget_lost_impression_share. */
                        public search_budget_lost_impression_share?: (number|null);

                        /** Metrics search_budget_lost_top_impression_share. */
                        public search_budget_lost_top_impression_share?: (number|null);

                        /** Metrics search_click_share. */
                        public search_click_share?: (number|null);

                        /** Metrics search_exact_match_impression_share. */
                        public search_exact_match_impression_share?: (number|null);

                        /** Metrics search_impression_share. */
                        public search_impression_share?: (number|null);

                        /** Metrics search_rank_lost_absolute_top_impression_share. */
                        public search_rank_lost_absolute_top_impression_share?: (number|null);

                        /** Metrics search_rank_lost_impression_share. */
                        public search_rank_lost_impression_share?: (number|null);

                        /** Metrics search_rank_lost_top_impression_share. */
                        public search_rank_lost_top_impression_share?: (number|null);

                        /** Metrics search_top_impression_share. */
                        public search_top_impression_share?: (number|null);

                        /** Metrics search_volume. */
                        public search_volume?: (google.ads.googleads.v23.common.ISearchVolumeRange|null);

                        /** Metrics speed_score. */
                        public speed_score?: (number|null);

                        /** Metrics average_target_cpa_micros. */
                        public average_target_cpa_micros?: (number|null);

                        /** Metrics average_target_roas. */
                        public average_target_roas?: (number|null);

                        /** Metrics top_impression_percentage. */
                        public top_impression_percentage?: (number|null);

                        /** Metrics valid_accelerated_mobile_pages_clicks_percentage. */
                        public valid_accelerated_mobile_pages_clicks_percentage?: (number|null);

                        /** Metrics value_per_all_conversions. */
                        public value_per_all_conversions?: (number|null);

                        /** Metrics value_per_all_conversions_by_conversion_date. */
                        public value_per_all_conversions_by_conversion_date?: (number|null);

                        /** Metrics value_per_conversion. */
                        public value_per_conversion?: (number|null);

                        /** Metrics value_per_conversions_by_conversion_date. */
                        public value_per_conversions_by_conversion_date?: (number|null);

                        /** Metrics value_per_current_model_attributed_conversion. */
                        public value_per_current_model_attributed_conversion?: (number|null);

                        /** Metrics video_quartile_p100_rate. */
                        public video_quartile_p100_rate?: (number|null);

                        /** Metrics video_quartile_p25_rate. */
                        public video_quartile_p25_rate?: (number|null);

                        /** Metrics video_quartile_p50_rate. */
                        public video_quartile_p50_rate?: (number|null);

                        /** Metrics video_quartile_p75_rate. */
                        public video_quartile_p75_rate?: (number|null);

                        /** Metrics video_trueview_view_rate. */
                        public video_trueview_view_rate?: (number|null);

                        /** Metrics video_trueview_views. */
                        public video_trueview_views?: (number|null);

                        /** Metrics view_through_conversions. */
                        public view_through_conversions?: (number|null);

                        /** Metrics sk_ad_network_installs. */
                        public sk_ad_network_installs: number;

                        /** Metrics sk_ad_network_total_conversions. */
                        public sk_ad_network_total_conversions: number;

                        /** Metrics publisher_purchased_clicks. */
                        public publisher_purchased_clicks: number;

                        /** Metrics publisher_organic_clicks. */
                        public publisher_organic_clicks: number;

                        /** Metrics publisher_unknown_clicks. */
                        public publisher_unknown_clicks: number;

                        /** Metrics all_conversions_from_location_asset_click_to_call. */
                        public all_conversions_from_location_asset_click_to_call?: (number|null);

                        /** Metrics all_conversions_from_location_asset_directions. */
                        public all_conversions_from_location_asset_directions?: (number|null);

                        /** Metrics all_conversions_from_location_asset_menu. */
                        public all_conversions_from_location_asset_menu?: (number|null);

                        /** Metrics all_conversions_from_location_asset_order. */
                        public all_conversions_from_location_asset_order?: (number|null);

                        /** Metrics all_conversions_from_location_asset_other_engagement. */
                        public all_conversions_from_location_asset_other_engagement?: (number|null);

                        /** Metrics all_conversions_from_location_asset_store_visits. */
                        public all_conversions_from_location_asset_store_visits?: (number|null);

                        /** Metrics all_conversions_from_location_asset_website. */
                        public all_conversions_from_location_asset_website?: (number|null);

                        /** Metrics eligible_impressions_from_location_asset_store_reach. */
                        public eligible_impressions_from_location_asset_store_reach?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_click_to_call. */
                        public view_through_conversions_from_location_asset_click_to_call?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_directions. */
                        public view_through_conversions_from_location_asset_directions?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_menu. */
                        public view_through_conversions_from_location_asset_menu?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_order. */
                        public view_through_conversions_from_location_asset_order?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_other_engagement. */
                        public view_through_conversions_from_location_asset_other_engagement?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_store_visits. */
                        public view_through_conversions_from_location_asset_store_visits?: (number|null);

                        /** Metrics view_through_conversions_from_location_asset_website. */
                        public view_through_conversions_from_location_asset_website?: (number|null);

                        /** Metrics orders. */
                        public orders?: (number|null);

                        /** Metrics average_order_value_micros. */
                        public average_order_value_micros?: (number|null);

                        /** Metrics average_cart_size. */
                        public average_cart_size?: (number|null);

                        /** Metrics cost_of_goods_sold_micros. */
                        public cost_of_goods_sold_micros?: (number|null);

                        /** Metrics gross_profit_micros. */
                        public gross_profit_micros?: (number|null);

                        /** Metrics gross_profit_margin. */
                        public gross_profit_margin?: (number|null);

                        /** Metrics revenue_micros. */
                        public revenue_micros?: (number|null);

                        /** Metrics units_sold. */
                        public units_sold?: (number|null);

                        /** Metrics cross_sell_cost_of_goods_sold_micros. */
                        public cross_sell_cost_of_goods_sold_micros?: (number|null);

                        /** Metrics cross_sell_gross_profit_micros. */
                        public cross_sell_gross_profit_micros?: (number|null);

                        /** Metrics cross_sell_revenue_micros. */
                        public cross_sell_revenue_micros?: (number|null);

                        /** Metrics cross_sell_units_sold. */
                        public cross_sell_units_sold?: (number|null);

                        /** Metrics lead_cost_of_goods_sold_micros. */
                        public lead_cost_of_goods_sold_micros?: (number|null);

                        /** Metrics lead_gross_profit_micros. */
                        public lead_gross_profit_micros?: (number|null);

                        /** Metrics lead_revenue_micros. */
                        public lead_revenue_micros?: (number|null);

                        /** Metrics lead_units_sold. */
                        public lead_units_sold?: (number|null);

                        /** Metrics unique_users. */
                        public unique_users?: (number|null);

                        /** Metrics average_impression_frequency_per_user. */
                        public average_impression_frequency_per_user?: (number|null);

                        /** Metrics linked_entities_count. */
                        public linked_entities_count?: (number|null);

                        /** Metrics linked_sample_entities. */
                        public linked_sample_entities: string[];

                        /** Metrics asset_pinned_total_count. */
                        public asset_pinned_total_count?: (number|null);

                        /** Metrics asset_pinned_as_headline_position_one_count. */
                        public asset_pinned_as_headline_position_one_count?: (number|null);

                        /** Metrics asset_pinned_as_headline_position_two_count. */
                        public asset_pinned_as_headline_position_two_count?: (number|null);

                        /** Metrics asset_pinned_as_headline_position_three_count. */
                        public asset_pinned_as_headline_position_three_count?: (number|null);

                        /** Metrics asset_pinned_as_description_position_one_count. */
                        public asset_pinned_as_description_position_one_count?: (number|null);

                        /** Metrics asset_pinned_as_description_position_two_count. */
                        public asset_pinned_as_description_position_two_count?: (number|null);

                        /** Metrics store_visits_last_click_model_attributed_conversions. */
                        public store_visits_last_click_model_attributed_conversions?: (number|null);

                        /** Metrics results_conversions_purchase. */
                        public results_conversions_purchase?: (number|null);

                        /** Metrics video_trueview_view_rate_in_feed. */
                        public video_trueview_view_rate_in_feed?: (number|null);

                        /** Metrics video_trueview_view_rate_in_stream. */
                        public video_trueview_view_rate_in_stream?: (number|null);

                        /** Metrics video_trueview_view_rate_shorts. */
                        public video_trueview_view_rate_shorts?: (number|null);

                        /** Metrics coviewed_impressions. */
                        public coviewed_impressions?: (number|null);

                        /** Metrics primary_impressions. */
                        public primary_impressions?: (number|null);

                        /** Metrics platform_comparable_conversions_from_interactions_rate. */
                        public platform_comparable_conversions_from_interactions_rate?: (number|null);

                        /** Metrics platform_comparable_conversions. */
                        public platform_comparable_conversions?: (number|null);

                        /** Metrics platform_comparable_conversions_value. */
                        public platform_comparable_conversions_value?: (number|null);

                        /** Metrics platform_comparable_conversions_value_per_cost. */
                        public platform_comparable_conversions_value_per_cost?: (number|null);

                        /** Metrics platform_comparable_conversions_by_conversion_date. */
                        public platform_comparable_conversions_by_conversion_date?: (number|null);

                        /** Metrics platform_comparable_conversions_value_by_conversion_date. */
                        public platform_comparable_conversions_value_by_conversion_date?: (number|null);

                        /** Metrics platform_comparable_conversions_from_interactions_value_per_interaction. */
                        public platform_comparable_conversions_from_interactions_value_per_interaction?: (number|null);

                        /** Metrics cost_per_platform_comparable_conversion. */
                        public cost_per_platform_comparable_conversion?: (number|null);

                        /** Metrics value_per_platform_comparable_conversion. */
                        public value_per_platform_comparable_conversion?: (number|null);

                        /** Metrics value_per_platform_comparable_conversions_by_conversion_date. */
                        public value_per_platform_comparable_conversions_by_conversion_date?: (number|null);

                        /** Metrics cost_converted_currency_per_platform_comparable_conversion. */
                        public cost_converted_currency_per_platform_comparable_conversion?: (number|null);

                        /** Metrics value_adjustment. */
                        public value_adjustment?: (number|null);

                        /** Metrics all_value_adjustment. */
                        public all_value_adjustment?: (number|null);

                        /** Metrics clicks_unique_query_clusters. */
                        public clicks_unique_query_clusters?: (number|null);

                        /** Metrics conversions_unique_query_clusters. */
                        public conversions_unique_query_clusters?: (number|null);

                        /** Metrics impressions_unique_query_clusters. */
                        public impressions_unique_query_clusters?: (number|null);

                        /** Metrics video_watch_time_duration_millis. */
                        public video_watch_time_duration_millis?: (number|null);

                        /** Metrics average_video_watch_time_duration_millis. */
                        public average_video_watch_time_duration_millis?: (number|null);

                        /** Metrics svr. */
                        public svr?: (number|null);

                        /** Metrics active_view_audibility_measurable_impressions. */
                        public active_view_audibility_measurable_impressions?: (number|null);

                        /** Metrics active_view_audibility_measurable_impressions_rate. */
                        public active_view_audibility_measurable_impressions_rate?: (number|null);

                        /** Metrics active_view_audibility_invalid_measurable_impressions_rate. */
                        public active_view_audibility_invalid_measurable_impressions_rate?: (number|null);

                        /** Metrics active_view_audibility_invalid_givt_measurable_impressions_rate. */
                        public active_view_audibility_invalid_givt_measurable_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_impressions. */
                        public active_view_audible_impressions?: (number|null);

                        /** Metrics active_view_audible_impressions_rate. */
                        public active_view_audible_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_two_seconds_impressions. */
                        public active_view_audible_two_seconds_impressions?: (number|null);

                        /** Metrics active_view_audible_two_seconds_impressions_rate. */
                        public active_view_audible_two_seconds_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_thirty_seconds_impressions. */
                        public active_view_audible_thirty_seconds_impressions?: (number|null);

                        /** Metrics active_view_audible_thirty_seconds_impressions_rate. */
                        public active_view_audible_thirty_seconds_impressions_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p25_rate. */
                        public active_view_audible_quartile_p25_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p50_rate. */
                        public active_view_audible_quartile_p50_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p75_rate. */
                        public active_view_audible_quartile_p75_rate?: (number|null);

                        /** Metrics active_view_audible_quartile_p100_rate. */
                        public active_view_audible_quartile_p100_rate?: (number|null);

                        /**
                         * Creates a new Metrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Metrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IMetrics): google.ads.googleads.v23.common.Metrics;

                        /**
                         * Encodes the specified Metrics message. Does not implicitly {@link google.ads.googleads.v23.common.Metrics.verify|verify} messages.
                         * @param message Metrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Metrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.Metrics.verify|verify} messages.
                         * @param message Metrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Metrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Metrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.Metrics;

                        /**
                         * Decodes a Metrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Metrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.Metrics;

                        /**
                         * Verifies a Metrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Metrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.Metrics;

                        /**
                         * Creates a plain object from a Metrics message. Also converts values to other types if specified.
                         * @param message Metrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.Metrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Metrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Metrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchVolumeRange. */
                    interface ISearchVolumeRange {

                        /** SearchVolumeRange min */
                        min?: (number|null);

                        /** SearchVolumeRange max */
                        max?: (number|null);
                    }

                    /** Represents a SearchVolumeRange. */
                    class SearchVolumeRange implements ISearchVolumeRange {

                        /**
                         * Constructs a new SearchVolumeRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISearchVolumeRange);

                        /** SearchVolumeRange min. */
                        public min?: (number|null);

                        /** SearchVolumeRange max. */
                        public max?: (number|null);

                        /**
                         * Creates a new SearchVolumeRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchVolumeRange instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISearchVolumeRange): google.ads.googleads.v23.common.SearchVolumeRange;

                        /**
                         * Encodes the specified SearchVolumeRange message. Does not implicitly {@link google.ads.googleads.v23.common.SearchVolumeRange.verify|verify} messages.
                         * @param message SearchVolumeRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISearchVolumeRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchVolumeRange message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.SearchVolumeRange.verify|verify} messages.
                         * @param message SearchVolumeRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISearchVolumeRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchVolumeRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchVolumeRange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.SearchVolumeRange;

                        /**
                         * Decodes a SearchVolumeRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchVolumeRange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.SearchVolumeRange;

                        /**
                         * Verifies a SearchVolumeRange message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchVolumeRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchVolumeRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.SearchVolumeRange;

                        /**
                         * Creates a plain object from a SearchVolumeRange message. Also converts values to other types if specified.
                         * @param message SearchVolumeRange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.SearchVolumeRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchVolumeRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchVolumeRange
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineUserAddressInfo. */
                    interface IOfflineUserAddressInfo {

                        /** OfflineUserAddressInfo hashed_first_name */
                        hashed_first_name?: (string|null);

                        /** OfflineUserAddressInfo hashed_last_name */
                        hashed_last_name?: (string|null);

                        /** OfflineUserAddressInfo city */
                        city?: (string|null);

                        /** OfflineUserAddressInfo state */
                        state?: (string|null);

                        /** OfflineUserAddressInfo country_code */
                        country_code?: (string|null);

                        /** OfflineUserAddressInfo postal_code */
                        postal_code?: (string|null);

                        /** OfflineUserAddressInfo hashed_street_address */
                        hashed_street_address?: (string|null);
                    }

                    /** Represents an OfflineUserAddressInfo. */
                    class OfflineUserAddressInfo implements IOfflineUserAddressInfo {

                        /**
                         * Constructs a new OfflineUserAddressInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IOfflineUserAddressInfo);

                        /** OfflineUserAddressInfo hashed_first_name. */
                        public hashed_first_name?: (string|null);

                        /** OfflineUserAddressInfo hashed_last_name. */
                        public hashed_last_name?: (string|null);

                        /** OfflineUserAddressInfo city. */
                        public city?: (string|null);

                        /** OfflineUserAddressInfo state. */
                        public state?: (string|null);

                        /** OfflineUserAddressInfo country_code. */
                        public country_code?: (string|null);

                        /** OfflineUserAddressInfo postal_code. */
                        public postal_code?: (string|null);

                        /** OfflineUserAddressInfo hashed_street_address. */
                        public hashed_street_address?: (string|null);

                        /**
                         * Creates a new OfflineUserAddressInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserAddressInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IOfflineUserAddressInfo): google.ads.googleads.v23.common.OfflineUserAddressInfo;

                        /**
                         * Encodes the specified OfflineUserAddressInfo message. Does not implicitly {@link google.ads.googleads.v23.common.OfflineUserAddressInfo.verify|verify} messages.
                         * @param message OfflineUserAddressInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IOfflineUserAddressInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserAddressInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.OfflineUserAddressInfo.verify|verify} messages.
                         * @param message OfflineUserAddressInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IOfflineUserAddressInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserAddressInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserAddressInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.OfflineUserAddressInfo;

                        /**
                         * Decodes an OfflineUserAddressInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserAddressInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.OfflineUserAddressInfo;

                        /**
                         * Verifies an OfflineUserAddressInfo message.
                         * @param message Plain 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 OfflineUserAddressInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserAddressInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.OfflineUserAddressInfo;

                        /**
                         * Creates a plain object from an OfflineUserAddressInfo message. Also converts values to other types if specified.
                         * @param message OfflineUserAddressInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.OfflineUserAddressInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserAddressInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserAddressInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserIdentifier. */
                    interface IUserIdentifier {

                        /** UserIdentifier user_identifier_source */
                        user_identifier_source?: (google.ads.googleads.v23.enums.UserIdentifierSourceEnum.UserIdentifierSource|keyof typeof google.ads.googleads.v23.enums.UserIdentifierSourceEnum.UserIdentifierSource|null);

                        /** UserIdentifier hashed_email */
                        hashed_email?: (string|null);

                        /** UserIdentifier hashed_phone_number */
                        hashed_phone_number?: (string|null);

                        /** UserIdentifier mobile_id */
                        mobile_id?: (string|null);

                        /** UserIdentifier third_party_user_id */
                        third_party_user_id?: (string|null);

                        /** UserIdentifier address_info */
                        address_info?: (google.ads.googleads.v23.common.IOfflineUserAddressInfo|null);
                    }

                    /** Represents a UserIdentifier. */
                    class UserIdentifier implements IUserIdentifier {

                        /**
                         * Constructs a new UserIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserIdentifier);

                        /** UserIdentifier user_identifier_source. */
                        public user_identifier_source: (google.ads.googleads.v23.enums.UserIdentifierSourceEnum.UserIdentifierSource|keyof typeof google.ads.googleads.v23.enums.UserIdentifierSourceEnum.UserIdentifierSource);

                        /** UserIdentifier hashed_email. */
                        public hashed_email?: (string|null);

                        /** UserIdentifier hashed_phone_number. */
                        public hashed_phone_number?: (string|null);

                        /** UserIdentifier mobile_id. */
                        public mobile_id?: (string|null);

                        /** UserIdentifier third_party_user_id. */
                        public third_party_user_id?: (string|null);

                        /** UserIdentifier address_info. */
                        public address_info?: (google.ads.googleads.v23.common.IOfflineUserAddressInfo|null);

                        /** UserIdentifier identifier. */
                        public identifier?: ("hashed_email"|"hashed_phone_number"|"mobile_id"|"third_party_user_id"|"address_info");

                        /**
                         * Creates a new UserIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserIdentifier): google.ads.googleads.v23.common.UserIdentifier;

                        /**
                         * Encodes the specified UserIdentifier message. Does not implicitly {@link google.ads.googleads.v23.common.UserIdentifier.verify|verify} messages.
                         * @param message UserIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserIdentifier.verify|verify} messages.
                         * @param message UserIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserIdentifier;

                        /**
                         * Decodes a UserIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserIdentifier;

                        /**
                         * Verifies a UserIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserIdentifier;

                        /**
                         * Creates a plain object from a UserIdentifier message. Also converts values to other types if specified.
                         * @param message UserIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TransactionAttribute. */
                    interface ITransactionAttribute {

                        /** TransactionAttribute transaction_date_time */
                        transaction_date_time?: (string|null);

                        /** TransactionAttribute transaction_amount_micros */
                        transaction_amount_micros?: (number|null);

                        /** TransactionAttribute currency_code */
                        currency_code?: (string|null);

                        /** TransactionAttribute conversion_action */
                        conversion_action?: (string|null);

                        /** TransactionAttribute order_id */
                        order_id?: (string|null);

                        /** TransactionAttribute store_attribute */
                        store_attribute?: (google.ads.googleads.v23.common.IStoreAttribute|null);

                        /** TransactionAttribute custom_value */
                        custom_value?: (string|null);

                        /** TransactionAttribute item_attribute */
                        item_attribute?: (google.ads.googleads.v23.common.IItemAttribute|null);
                    }

                    /** Represents a TransactionAttribute. */
                    class TransactionAttribute implements ITransactionAttribute {

                        /**
                         * Constructs a new TransactionAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITransactionAttribute);

                        /** TransactionAttribute transaction_date_time. */
                        public transaction_date_time?: (string|null);

                        /** TransactionAttribute transaction_amount_micros. */
                        public transaction_amount_micros?: (number|null);

                        /** TransactionAttribute currency_code. */
                        public currency_code?: (string|null);

                        /** TransactionAttribute conversion_action. */
                        public conversion_action?: (string|null);

                        /** TransactionAttribute order_id. */
                        public order_id?: (string|null);

                        /** TransactionAttribute store_attribute. */
                        public store_attribute?: (google.ads.googleads.v23.common.IStoreAttribute|null);

                        /** TransactionAttribute custom_value. */
                        public custom_value?: (string|null);

                        /** TransactionAttribute item_attribute. */
                        public item_attribute?: (google.ads.googleads.v23.common.IItemAttribute|null);

                        /**
                         * Creates a new TransactionAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TransactionAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITransactionAttribute): google.ads.googleads.v23.common.TransactionAttribute;

                        /**
                         * Encodes the specified TransactionAttribute message. Does not implicitly {@link google.ads.googleads.v23.common.TransactionAttribute.verify|verify} messages.
                         * @param message TransactionAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITransactionAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TransactionAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TransactionAttribute.verify|verify} messages.
                         * @param message TransactionAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITransactionAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TransactionAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TransactionAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TransactionAttribute;

                        /**
                         * Decodes a TransactionAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TransactionAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TransactionAttribute;

                        /**
                         * Verifies a TransactionAttribute message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TransactionAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TransactionAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TransactionAttribute;

                        /**
                         * Creates a plain object from a TransactionAttribute message. Also converts values to other types if specified.
                         * @param message TransactionAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TransactionAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TransactionAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TransactionAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a StoreAttribute. */
                    interface IStoreAttribute {

                        /** StoreAttribute store_code */
                        store_code?: (string|null);
                    }

                    /** Represents a StoreAttribute. */
                    class StoreAttribute implements IStoreAttribute {

                        /**
                         * Constructs a new StoreAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IStoreAttribute);

                        /** StoreAttribute store_code. */
                        public store_code?: (string|null);

                        /**
                         * Creates a new StoreAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StoreAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IStoreAttribute): google.ads.googleads.v23.common.StoreAttribute;

                        /**
                         * Encodes the specified StoreAttribute message. Does not implicitly {@link google.ads.googleads.v23.common.StoreAttribute.verify|verify} messages.
                         * @param message StoreAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IStoreAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StoreAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.StoreAttribute.verify|verify} messages.
                         * @param message StoreAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IStoreAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StoreAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns StoreAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.StoreAttribute;

                        /**
                         * Decodes a StoreAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StoreAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.StoreAttribute;

                        /**
                         * Verifies a StoreAttribute message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StoreAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns StoreAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.StoreAttribute;

                        /**
                         * Creates a plain object from a StoreAttribute message. Also converts values to other types if specified.
                         * @param message StoreAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.StoreAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StoreAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for StoreAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ItemAttribute. */
                    interface IItemAttribute {

                        /** ItemAttribute item_id */
                        item_id?: (string|null);

                        /** ItemAttribute merchant_id */
                        merchant_id?: (number|null);

                        /** ItemAttribute country_code */
                        country_code?: (string|null);

                        /** ItemAttribute language_code */
                        language_code?: (string|null);

                        /** ItemAttribute quantity */
                        quantity?: (number|null);
                    }

                    /** Represents an ItemAttribute. */
                    class ItemAttribute implements IItemAttribute {

                        /**
                         * Constructs a new ItemAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IItemAttribute);

                        /** ItemAttribute item_id. */
                        public item_id: string;

                        /** ItemAttribute merchant_id. */
                        public merchant_id?: (number|null);

                        /** ItemAttribute country_code. */
                        public country_code: string;

                        /** ItemAttribute language_code. */
                        public language_code: string;

                        /** ItemAttribute quantity. */
                        public quantity: number;

                        /**
                         * Creates a new ItemAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ItemAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IItemAttribute): google.ads.googleads.v23.common.ItemAttribute;

                        /**
                         * Encodes the specified ItemAttribute message. Does not implicitly {@link google.ads.googleads.v23.common.ItemAttribute.verify|verify} messages.
                         * @param message ItemAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IItemAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ItemAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ItemAttribute.verify|verify} messages.
                         * @param message ItemAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IItemAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ItemAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ItemAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ItemAttribute;

                        /**
                         * Decodes an ItemAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ItemAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ItemAttribute;

                        /**
                         * Verifies an ItemAttribute message.
                         * @param message Plain 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 ItemAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ItemAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ItemAttribute;

                        /**
                         * Creates a plain object from an ItemAttribute message. Also converts values to other types if specified.
                         * @param message ItemAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ItemAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ItemAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ItemAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserData. */
                    interface IUserData {

                        /** UserData user_identifiers */
                        user_identifiers?: (google.ads.googleads.v23.common.IUserIdentifier[]|null);

                        /** UserData transaction_attribute */
                        transaction_attribute?: (google.ads.googleads.v23.common.ITransactionAttribute|null);

                        /** UserData user_attribute */
                        user_attribute?: (google.ads.googleads.v23.common.IUserAttribute|null);

                        /** UserData consent */
                        consent?: (google.ads.googleads.v23.common.IConsent|null);
                    }

                    /** Represents a UserData. */
                    class UserData implements IUserData {

                        /**
                         * Constructs a new UserData.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserData);

                        /** UserData user_identifiers. */
                        public user_identifiers: google.ads.googleads.v23.common.IUserIdentifier[];

                        /** UserData transaction_attribute. */
                        public transaction_attribute?: (google.ads.googleads.v23.common.ITransactionAttribute|null);

                        /** UserData user_attribute. */
                        public user_attribute?: (google.ads.googleads.v23.common.IUserAttribute|null);

                        /** UserData consent. */
                        public consent?: (google.ads.googleads.v23.common.IConsent|null);

                        /**
                         * Creates a new UserData instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserData instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserData): google.ads.googleads.v23.common.UserData;

                        /**
                         * Encodes the specified UserData message. Does not implicitly {@link google.ads.googleads.v23.common.UserData.verify|verify} messages.
                         * @param message UserData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserData message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserData.verify|verify} messages.
                         * @param message UserData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserData message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserData;

                        /**
                         * Decodes a UserData message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserData;

                        /**
                         * Verifies a UserData message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserData message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserData
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserData;

                        /**
                         * Creates a plain object from a UserData message. Also converts values to other types if specified.
                         * @param message UserData
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserData
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserAttribute. */
                    interface IUserAttribute {

                        /** UserAttribute lifetime_value_micros */
                        lifetime_value_micros?: (number|null);

                        /** UserAttribute lifetime_value_bucket */
                        lifetime_value_bucket?: (number|null);

                        /** UserAttribute last_purchase_date_time */
                        last_purchase_date_time?: (string|null);

                        /** UserAttribute average_purchase_count */
                        average_purchase_count?: (number|null);

                        /** UserAttribute average_purchase_value_micros */
                        average_purchase_value_micros?: (number|null);

                        /** UserAttribute acquisition_date_time */
                        acquisition_date_time?: (string|null);

                        /** UserAttribute shopping_loyalty */
                        shopping_loyalty?: (google.ads.googleads.v23.common.IShoppingLoyalty|null);

                        /** UserAttribute lifecycle_stage */
                        lifecycle_stage?: (string|null);

                        /** UserAttribute first_purchase_date_time */
                        first_purchase_date_time?: (string|null);

                        /** UserAttribute event_attribute */
                        event_attribute?: (google.ads.googleads.v23.common.IEventAttribute[]|null);
                    }

                    /** Represents a UserAttribute. */
                    class UserAttribute implements IUserAttribute {

                        /**
                         * Constructs a new UserAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserAttribute);

                        /** UserAttribute lifetime_value_micros. */
                        public lifetime_value_micros?: (number|null);

                        /** UserAttribute lifetime_value_bucket. */
                        public lifetime_value_bucket?: (number|null);

                        /** UserAttribute last_purchase_date_time. */
                        public last_purchase_date_time: string;

                        /** UserAttribute average_purchase_count. */
                        public average_purchase_count: number;

                        /** UserAttribute average_purchase_value_micros. */
                        public average_purchase_value_micros: number;

                        /** UserAttribute acquisition_date_time. */
                        public acquisition_date_time: string;

                        /** UserAttribute shopping_loyalty. */
                        public shopping_loyalty?: (google.ads.googleads.v23.common.IShoppingLoyalty|null);

                        /** UserAttribute lifecycle_stage. */
                        public lifecycle_stage: string;

                        /** UserAttribute first_purchase_date_time. */
                        public first_purchase_date_time: string;

                        /** UserAttribute event_attribute. */
                        public event_attribute: google.ads.googleads.v23.common.IEventAttribute[];

                        /**
                         * Creates a new UserAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserAttribute): google.ads.googleads.v23.common.UserAttribute;

                        /**
                         * Encodes the specified UserAttribute message. Does not implicitly {@link google.ads.googleads.v23.common.UserAttribute.verify|verify} messages.
                         * @param message UserAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserAttribute.verify|verify} messages.
                         * @param message UserAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserAttribute;

                        /**
                         * Decodes a UserAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserAttribute;

                        /**
                         * Verifies a UserAttribute message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserAttribute;

                        /**
                         * Creates a plain object from a UserAttribute message. Also converts values to other types if specified.
                         * @param message UserAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EventAttribute. */
                    interface IEventAttribute {

                        /** EventAttribute event */
                        event?: (string|null);

                        /** EventAttribute event_date_time */
                        event_date_time?: (string|null);

                        /** EventAttribute item_attribute */
                        item_attribute?: (google.ads.googleads.v23.common.IEventItemAttribute[]|null);
                    }

                    /** Represents an EventAttribute. */
                    class EventAttribute implements IEventAttribute {

                        /**
                         * Constructs a new EventAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IEventAttribute);

                        /** EventAttribute event. */
                        public event: string;

                        /** EventAttribute event_date_time. */
                        public event_date_time: string;

                        /** EventAttribute item_attribute. */
                        public item_attribute: google.ads.googleads.v23.common.IEventItemAttribute[];

                        /**
                         * Creates a new EventAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EventAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IEventAttribute): google.ads.googleads.v23.common.EventAttribute;

                        /**
                         * Encodes the specified EventAttribute message. Does not implicitly {@link google.ads.googleads.v23.common.EventAttribute.verify|verify} messages.
                         * @param message EventAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IEventAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EventAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.EventAttribute.verify|verify} messages.
                         * @param message EventAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IEventAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EventAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EventAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.EventAttribute;

                        /**
                         * Decodes an EventAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EventAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.EventAttribute;

                        /**
                         * Verifies an EventAttribute message.
                         * @param message Plain 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 EventAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EventAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.EventAttribute;

                        /**
                         * Creates a plain object from an EventAttribute message. Also converts values to other types if specified.
                         * @param message EventAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.EventAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EventAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EventAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EventItemAttribute. */
                    interface IEventItemAttribute {

                        /** EventItemAttribute item_id */
                        item_id?: (string|null);
                    }

                    /** Represents an EventItemAttribute. */
                    class EventItemAttribute implements IEventItemAttribute {

                        /**
                         * Constructs a new EventItemAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IEventItemAttribute);

                        /** EventItemAttribute item_id. */
                        public item_id: string;

                        /**
                         * Creates a new EventItemAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EventItemAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IEventItemAttribute): google.ads.googleads.v23.common.EventItemAttribute;

                        /**
                         * Encodes the specified EventItemAttribute message. Does not implicitly {@link google.ads.googleads.v23.common.EventItemAttribute.verify|verify} messages.
                         * @param message EventItemAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IEventItemAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EventItemAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.EventItemAttribute.verify|verify} messages.
                         * @param message EventItemAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IEventItemAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EventItemAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EventItemAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.EventItemAttribute;

                        /**
                         * Decodes an EventItemAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EventItemAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.EventItemAttribute;

                        /**
                         * Verifies an EventItemAttribute message.
                         * @param message Plain 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 EventItemAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EventItemAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.EventItemAttribute;

                        /**
                         * Creates a plain object from an EventItemAttribute message. Also converts values to other types if specified.
                         * @param message EventItemAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.EventItemAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EventItemAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EventItemAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ShoppingLoyalty. */
                    interface IShoppingLoyalty {

                        /** ShoppingLoyalty loyalty_tier */
                        loyalty_tier?: (string|null);
                    }

                    /** Represents a ShoppingLoyalty. */
                    class ShoppingLoyalty implements IShoppingLoyalty {

                        /**
                         * Constructs a new ShoppingLoyalty.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IShoppingLoyalty);

                        /** ShoppingLoyalty loyalty_tier. */
                        public loyalty_tier?: (string|null);

                        /**
                         * Creates a new ShoppingLoyalty instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingLoyalty instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IShoppingLoyalty): google.ads.googleads.v23.common.ShoppingLoyalty;

                        /**
                         * Encodes the specified ShoppingLoyalty message. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingLoyalty.verify|verify} messages.
                         * @param message ShoppingLoyalty message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IShoppingLoyalty, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingLoyalty message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ShoppingLoyalty.verify|verify} messages.
                         * @param message ShoppingLoyalty message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IShoppingLoyalty, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingLoyalty message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShoppingLoyalty
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ShoppingLoyalty;

                        /**
                         * Decodes a ShoppingLoyalty message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShoppingLoyalty
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ShoppingLoyalty;

                        /**
                         * Verifies a ShoppingLoyalty message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShoppingLoyalty message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShoppingLoyalty
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ShoppingLoyalty;

                        /**
                         * Creates a plain object from a ShoppingLoyalty message. Also converts values to other types if specified.
                         * @param message ShoppingLoyalty
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ShoppingLoyalty, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShoppingLoyalty to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShoppingLoyalty
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerMatchUserListMetadata. */
                    interface ICustomerMatchUserListMetadata {

                        /** CustomerMatchUserListMetadata user_list */
                        user_list?: (string|null);

                        /** CustomerMatchUserListMetadata consent */
                        consent?: (google.ads.googleads.v23.common.IConsent|null);
                    }

                    /** Represents a CustomerMatchUserListMetadata. */
                    class CustomerMatchUserListMetadata implements ICustomerMatchUserListMetadata {

                        /**
                         * Constructs a new CustomerMatchUserListMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomerMatchUserListMetadata);

                        /** CustomerMatchUserListMetadata user_list. */
                        public user_list?: (string|null);

                        /** CustomerMatchUserListMetadata consent. */
                        public consent?: (google.ads.googleads.v23.common.IConsent|null);

                        /**
                         * Creates a new CustomerMatchUserListMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerMatchUserListMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomerMatchUserListMetadata): google.ads.googleads.v23.common.CustomerMatchUserListMetadata;

                        /**
                         * Encodes the specified CustomerMatchUserListMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.CustomerMatchUserListMetadata.verify|verify} messages.
                         * @param message CustomerMatchUserListMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomerMatchUserListMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerMatchUserListMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomerMatchUserListMetadata.verify|verify} messages.
                         * @param message CustomerMatchUserListMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomerMatchUserListMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerMatchUserListMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerMatchUserListMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomerMatchUserListMetadata;

                        /**
                         * Decodes a CustomerMatchUserListMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerMatchUserListMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomerMatchUserListMetadata;

                        /**
                         * Verifies a CustomerMatchUserListMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerMatchUserListMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerMatchUserListMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomerMatchUserListMetadata;

                        /**
                         * Creates a plain object from a CustomerMatchUserListMetadata message. Also converts values to other types if specified.
                         * @param message CustomerMatchUserListMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomerMatchUserListMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerMatchUserListMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerMatchUserListMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a StoreSalesMetadata. */
                    interface IStoreSalesMetadata {

                        /** StoreSalesMetadata loyalty_fraction */
                        loyalty_fraction?: (number|null);

                        /** StoreSalesMetadata transaction_upload_fraction */
                        transaction_upload_fraction?: (number|null);

                        /** StoreSalesMetadata custom_key */
                        custom_key?: (string|null);

                        /** StoreSalesMetadata third_party_metadata */
                        third_party_metadata?: (google.ads.googleads.v23.common.IStoreSalesThirdPartyMetadata|null);
                    }

                    /** Represents a StoreSalesMetadata. */
                    class StoreSalesMetadata implements IStoreSalesMetadata {

                        /**
                         * Constructs a new StoreSalesMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IStoreSalesMetadata);

                        /** StoreSalesMetadata loyalty_fraction. */
                        public loyalty_fraction?: (number|null);

                        /** StoreSalesMetadata transaction_upload_fraction. */
                        public transaction_upload_fraction?: (number|null);

                        /** StoreSalesMetadata custom_key. */
                        public custom_key?: (string|null);

                        /** StoreSalesMetadata third_party_metadata. */
                        public third_party_metadata?: (google.ads.googleads.v23.common.IStoreSalesThirdPartyMetadata|null);

                        /**
                         * Creates a new StoreSalesMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StoreSalesMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IStoreSalesMetadata): google.ads.googleads.v23.common.StoreSalesMetadata;

                        /**
                         * Encodes the specified StoreSalesMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.StoreSalesMetadata.verify|verify} messages.
                         * @param message StoreSalesMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IStoreSalesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StoreSalesMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.StoreSalesMetadata.verify|verify} messages.
                         * @param message StoreSalesMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IStoreSalesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StoreSalesMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns StoreSalesMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.StoreSalesMetadata;

                        /**
                         * Decodes a StoreSalesMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StoreSalesMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.StoreSalesMetadata;

                        /**
                         * Verifies a StoreSalesMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StoreSalesMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns StoreSalesMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.StoreSalesMetadata;

                        /**
                         * Creates a plain object from a StoreSalesMetadata message. Also converts values to other types if specified.
                         * @param message StoreSalesMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.StoreSalesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StoreSalesMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for StoreSalesMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a StoreSalesThirdPartyMetadata. */
                    interface IStoreSalesThirdPartyMetadata {

                        /** StoreSalesThirdPartyMetadata advertiser_upload_date_time */
                        advertiser_upload_date_time?: (string|null);

                        /** StoreSalesThirdPartyMetadata valid_transaction_fraction */
                        valid_transaction_fraction?: (number|null);

                        /** StoreSalesThirdPartyMetadata partner_match_fraction */
                        partner_match_fraction?: (number|null);

                        /** StoreSalesThirdPartyMetadata partner_upload_fraction */
                        partner_upload_fraction?: (number|null);

                        /** StoreSalesThirdPartyMetadata bridge_map_version_id */
                        bridge_map_version_id?: (string|null);

                        /** StoreSalesThirdPartyMetadata partner_id */
                        partner_id?: (number|null);
                    }

                    /** Represents a StoreSalesThirdPartyMetadata. */
                    class StoreSalesThirdPartyMetadata implements IStoreSalesThirdPartyMetadata {

                        /**
                         * Constructs a new StoreSalesThirdPartyMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IStoreSalesThirdPartyMetadata);

                        /** StoreSalesThirdPartyMetadata advertiser_upload_date_time. */
                        public advertiser_upload_date_time?: (string|null);

                        /** StoreSalesThirdPartyMetadata valid_transaction_fraction. */
                        public valid_transaction_fraction?: (number|null);

                        /** StoreSalesThirdPartyMetadata partner_match_fraction. */
                        public partner_match_fraction?: (number|null);

                        /** StoreSalesThirdPartyMetadata partner_upload_fraction. */
                        public partner_upload_fraction?: (number|null);

                        /** StoreSalesThirdPartyMetadata bridge_map_version_id. */
                        public bridge_map_version_id?: (string|null);

                        /** StoreSalesThirdPartyMetadata partner_id. */
                        public partner_id?: (number|null);

                        /**
                         * Creates a new StoreSalesThirdPartyMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StoreSalesThirdPartyMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IStoreSalesThirdPartyMetadata): google.ads.googleads.v23.common.StoreSalesThirdPartyMetadata;

                        /**
                         * Encodes the specified StoreSalesThirdPartyMetadata message. Does not implicitly {@link google.ads.googleads.v23.common.StoreSalesThirdPartyMetadata.verify|verify} messages.
                         * @param message StoreSalesThirdPartyMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IStoreSalesThirdPartyMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StoreSalesThirdPartyMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.StoreSalesThirdPartyMetadata.verify|verify} messages.
                         * @param message StoreSalesThirdPartyMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IStoreSalesThirdPartyMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StoreSalesThirdPartyMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns StoreSalesThirdPartyMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.StoreSalesThirdPartyMetadata;

                        /**
                         * Decodes a StoreSalesThirdPartyMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StoreSalesThirdPartyMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.StoreSalesThirdPartyMetadata;

                        /**
                         * Verifies a StoreSalesThirdPartyMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StoreSalesThirdPartyMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns StoreSalesThirdPartyMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.StoreSalesThirdPartyMetadata;

                        /**
                         * Creates a plain object from a StoreSalesThirdPartyMetadata message. Also converts values to other types if specified.
                         * @param message StoreSalesThirdPartyMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.StoreSalesThirdPartyMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StoreSalesThirdPartyMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for StoreSalesThirdPartyMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PolicySummary. */
                    interface IPolicySummary {

                        /** PolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v23.common.IPolicyTopicEntry[]|null);

                        /** PolicySummary review_status */
                        review_status?: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** PolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents a PolicySummary. */
                    class PolicySummary implements IPolicySummary {

                        /**
                         * Constructs a new PolicySummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPolicySummary);

                        /** PolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v23.common.IPolicyTopicEntry[];

                        /** PolicySummary review_status. */
                        public review_status: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** PolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus);

                        /**
                         * Creates a new PolicySummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicySummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPolicySummary): google.ads.googleads.v23.common.PolicySummary;

                        /**
                         * Encodes the specified PolicySummary message. Does not implicitly {@link google.ads.googleads.v23.common.PolicySummary.verify|verify} messages.
                         * @param message PolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PolicySummary.verify|verify} messages.
                         * @param message PolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicySummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.PolicySummary;

                        /**
                         * Decodes a PolicySummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.PolicySummary;

                        /**
                         * Verifies a PolicySummary message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicySummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PolicySummary;

                        /**
                         * Creates a plain object from a PolicySummary message. Also converts values to other types if specified.
                         * @param message PolicySummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.PolicySummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicySummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RealTimeBiddingSetting. */
                    interface IRealTimeBiddingSetting {

                        /** RealTimeBiddingSetting opt_in */
                        opt_in?: (boolean|null);
                    }

                    /** Represents a RealTimeBiddingSetting. */
                    class RealTimeBiddingSetting implements IRealTimeBiddingSetting {

                        /**
                         * Constructs a new RealTimeBiddingSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IRealTimeBiddingSetting);

                        /** RealTimeBiddingSetting opt_in. */
                        public opt_in?: (boolean|null);

                        /**
                         * Creates a new RealTimeBiddingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RealTimeBiddingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IRealTimeBiddingSetting): google.ads.googleads.v23.common.RealTimeBiddingSetting;

                        /**
                         * Encodes the specified RealTimeBiddingSetting message. Does not implicitly {@link google.ads.googleads.v23.common.RealTimeBiddingSetting.verify|verify} messages.
                         * @param message RealTimeBiddingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IRealTimeBiddingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RealTimeBiddingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.RealTimeBiddingSetting.verify|verify} messages.
                         * @param message RealTimeBiddingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IRealTimeBiddingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RealTimeBiddingSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RealTimeBiddingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.RealTimeBiddingSetting;

                        /**
                         * Decodes a RealTimeBiddingSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RealTimeBiddingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.RealTimeBiddingSetting;

                        /**
                         * Verifies a RealTimeBiddingSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RealTimeBiddingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RealTimeBiddingSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.RealTimeBiddingSetting;

                        /**
                         * Creates a plain object from a RealTimeBiddingSetting message. Also converts values to other types if specified.
                         * @param message RealTimeBiddingSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.RealTimeBiddingSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RealTimeBiddingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RealTimeBiddingSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Segments. */
                    interface ISegments {

                        /** Segments activity_account_id */
                        activity_account_id?: (number|null);

                        /** Segments activity_city */
                        activity_city?: (string|null);

                        /** Segments activity_country */
                        activity_country?: (string|null);

                        /** Segments activity_rating */
                        activity_rating?: (number|null);

                        /** Segments activity_state */
                        activity_state?: (string|null);

                        /** Segments external_activity_id */
                        external_activity_id?: (string|null);

                        /** Segments ad_destination_type */
                        ad_destination_type?: (google.ads.googleads.v23.enums.AdDestinationTypeEnum.AdDestinationType|keyof typeof google.ads.googleads.v23.enums.AdDestinationTypeEnum.AdDestinationType|null);

                        /** Segments ad_format_type */
                        ad_format_type?: (google.ads.googleads.v23.enums.AdFormatTypeEnum.AdFormatType|keyof typeof google.ads.googleads.v23.enums.AdFormatTypeEnum.AdFormatType|null);

                        /** Segments ad_network_type */
                        ad_network_type?: (google.ads.googleads.v23.enums.AdNetworkTypeEnum.AdNetworkType|keyof typeof google.ads.googleads.v23.enums.AdNetworkTypeEnum.AdNetworkType|null);

                        /** Segments ad_group */
                        ad_group?: (string|null);

                        /** Segments ad_sub_network_type */
                        ad_sub_network_type?: (google.ads.googleads.v23.enums.AdSubNetworkTypeEnum.AdSubNetworkType|keyof typeof google.ads.googleads.v23.enums.AdSubNetworkTypeEnum.AdSubNetworkType|null);

                        /** Segments asset_group */
                        asset_group?: (string|null);

                        /** Segments auction_insight_domain */
                        auction_insight_domain?: (string|null);

                        /** Segments budget_campaign_association_status */
                        budget_campaign_association_status?: (google.ads.googleads.v23.common.IBudgetCampaignAssociationStatus|null);

                        /** Segments campaign */
                        campaign?: (string|null);

                        /** Segments click_type */
                        click_type?: (google.ads.googleads.v23.enums.ClickTypeEnum.ClickType|keyof typeof google.ads.googleads.v23.enums.ClickTypeEnum.ClickType|null);

                        /** Segments conversion_action */
                        conversion_action?: (string|null);

                        /** Segments conversion_action_category */
                        conversion_action_category?: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|null);

                        /** Segments conversion_action_name */
                        conversion_action_name?: (string|null);

                        /** Segments conversion_adjustment */
                        conversion_adjustment?: (boolean|null);

                        /** Segments conversion_attribution_event_type */
                        conversion_attribution_event_type?: (google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType|keyof typeof google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType|null);

                        /** Segments conversion_lag_bucket */
                        conversion_lag_bucket?: (google.ads.googleads.v23.enums.ConversionLagBucketEnum.ConversionLagBucket|keyof typeof google.ads.googleads.v23.enums.ConversionLagBucketEnum.ConversionLagBucket|null);

                        /** Segments conversion_or_adjustment_lag_bucket */
                        conversion_or_adjustment_lag_bucket?: (google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket|keyof typeof google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket|null);

                        /** Segments date */
                        date?: (string|null);

                        /** Segments day_of_week */
                        day_of_week?: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|null);

                        /** Segments device */
                        device?: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device|null);

                        /** Segments external_conversion_source */
                        external_conversion_source?: (google.ads.googleads.v23.enums.ExternalConversionSourceEnum.ExternalConversionSource|keyof typeof google.ads.googleads.v23.enums.ExternalConversionSourceEnum.ExternalConversionSource|null);

                        /** Segments geo_target_airport */
                        geo_target_airport?: (string|null);

                        /** Segments geo_target_canton */
                        geo_target_canton?: (string|null);

                        /** Segments geo_target_city */
                        geo_target_city?: (string|null);

                        /** Segments geo_target_country */
                        geo_target_country?: (string|null);

                        /** Segments geo_target_county */
                        geo_target_county?: (string|null);

                        /** Segments geo_target_district */
                        geo_target_district?: (string|null);

                        /** Segments geo_target_metro */
                        geo_target_metro?: (string|null);

                        /** Segments geo_target_most_specific_location */
                        geo_target_most_specific_location?: (string|null);

                        /** Segments geo_target_postal_code */
                        geo_target_postal_code?: (string|null);

                        /** Segments geo_target_province */
                        geo_target_province?: (string|null);

                        /** Segments geo_target_region */
                        geo_target_region?: (string|null);

                        /** Segments geo_target_state */
                        geo_target_state?: (string|null);

                        /** Segments hotel_booking_window_days */
                        hotel_booking_window_days?: (number|null);

                        /** Segments hotel_center_id */
                        hotel_center_id?: (number|null);

                        /** Segments hotel_check_in_date */
                        hotel_check_in_date?: (string|null);

                        /** Segments hotel_check_in_day_of_week */
                        hotel_check_in_day_of_week?: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|null);

                        /** Segments hotel_city */
                        hotel_city?: (string|null);

                        /** Segments hotel_class */
                        hotel_class?: (number|null);

                        /** Segments hotel_country */
                        hotel_country?: (string|null);

                        /** Segments hotel_date_selection_type */
                        hotel_date_selection_type?: (google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|null);

                        /** Segments hotel_length_of_stay */
                        hotel_length_of_stay?: (number|null);

                        /** Segments hotel_rate_rule_id */
                        hotel_rate_rule_id?: (string|null);

                        /** Segments hotel_rate_type */
                        hotel_rate_type?: (google.ads.googleads.v23.enums.HotelRateTypeEnum.HotelRateType|keyof typeof google.ads.googleads.v23.enums.HotelRateTypeEnum.HotelRateType|null);

                        /** Segments hotel_price_bucket */
                        hotel_price_bucket?: (google.ads.googleads.v23.enums.HotelPriceBucketEnum.HotelPriceBucket|keyof typeof google.ads.googleads.v23.enums.HotelPriceBucketEnum.HotelPriceBucket|null);

                        /** Segments hotel_state */
                        hotel_state?: (string|null);

                        /** Segments hour */
                        hour?: (number|null);

                        /** Segments interaction_on_this_extension */
                        interaction_on_this_extension?: (boolean|null);

                        /** Segments keyword */
                        keyword?: (google.ads.googleads.v23.common.IKeyword|null);

                        /** Segments landing_page_source */
                        landing_page_source?: (google.ads.googleads.v23.enums.LandingPageSourceEnum.LandingPageSource|keyof typeof google.ads.googleads.v23.enums.LandingPageSourceEnum.LandingPageSource|null);

                        /** Segments month */
                        month?: (string|null);

                        /** Segments month_of_year */
                        month_of_year?: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|null);

                        /** Segments partner_hotel_id */
                        partner_hotel_id?: (string|null);

                        /** Segments product_aggregator_id */
                        product_aggregator_id?: (number|null);

                        /** Segments product_category_level1 */
                        product_category_level1?: (string|null);

                        /** Segments product_category_level2 */
                        product_category_level2?: (string|null);

                        /** Segments product_category_level3 */
                        product_category_level3?: (string|null);

                        /** Segments product_category_level4 */
                        product_category_level4?: (string|null);

                        /** Segments product_category_level5 */
                        product_category_level5?: (string|null);

                        /** Segments product_brand */
                        product_brand?: (string|null);

                        /** Segments product_channel */
                        product_channel?: (google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|null);

                        /** Segments product_channel_exclusivity */
                        product_channel_exclusivity?: (google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|null);

                        /** Segments product_condition */
                        product_condition?: (google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|null);

                        /** Segments product_country */
                        product_country?: (string|null);

                        /** Segments product_custom_attribute0 */
                        product_custom_attribute0?: (string|null);

                        /** Segments product_custom_attribute1 */
                        product_custom_attribute1?: (string|null);

                        /** Segments product_custom_attribute2 */
                        product_custom_attribute2?: (string|null);

                        /** Segments product_custom_attribute3 */
                        product_custom_attribute3?: (string|null);

                        /** Segments product_custom_attribute4 */
                        product_custom_attribute4?: (string|null);

                        /** Segments product_feed_label */
                        product_feed_label?: (string|null);

                        /** Segments product_item_id */
                        product_item_id?: (string|null);

                        /** Segments product_language */
                        product_language?: (string|null);

                        /** Segments product_merchant_id */
                        product_merchant_id?: (number|null);

                        /** Segments product_store_id */
                        product_store_id?: (string|null);

                        /** Segments product_title */
                        product_title?: (string|null);

                        /** Segments product_type_l1 */
                        product_type_l1?: (string|null);

                        /** Segments product_type_l2 */
                        product_type_l2?: (string|null);

                        /** Segments product_type_l3 */
                        product_type_l3?: (string|null);

                        /** Segments product_type_l4 */
                        product_type_l4?: (string|null);

                        /** Segments product_type_l5 */
                        product_type_l5?: (string|null);

                        /** Segments quarter */
                        quarter?: (string|null);

                        /** Segments travel_destination_city */
                        travel_destination_city?: (string|null);

                        /** Segments travel_destination_country */
                        travel_destination_country?: (string|null);

                        /** Segments travel_destination_region */
                        travel_destination_region?: (string|null);

                        /** Segments vertical_ads_event_participant_display_names */
                        vertical_ads_event_participant_display_names?: (string|null);

                        /** Segments vertical_ads_hotel_class */
                        vertical_ads_hotel_class?: (number|null);

                        /** Segments vertical_ads_listing */
                        vertical_ads_listing?: (string|null);

                        /** Segments vertical_ads_listing_brand */
                        vertical_ads_listing_brand?: (string|null);

                        /** Segments vertical_ads_listing_city */
                        vertical_ads_listing_city?: (string|null);

                        /** Segments vertical_ads_listing_country */
                        vertical_ads_listing_country?: (string|null);

                        /** Segments vertical_ads_listing_region */
                        vertical_ads_listing_region?: (string|null);

                        /** Segments vertical_ads_partner_account */
                        vertical_ads_partner_account?: (number|null);

                        /** Segments vertical_ads_vertical */
                        vertical_ads_vertical?: (google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|keyof typeof google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|null);

                        /** Segments recommendation_type */
                        recommendation_type?: (google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|null);

                        /** Segments search_engine_results_page_type */
                        search_engine_results_page_type?: (google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType|keyof typeof google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType|null);

                        /** Segments search_subcategory */
                        search_subcategory?: (string|null);

                        /** Segments search_term */
                        search_term?: (string|null);

                        /** Segments search_term_match_type */
                        search_term_match_type?: (google.ads.googleads.v23.enums.SearchTermMatchTypeEnum.SearchTermMatchType|keyof typeof google.ads.googleads.v23.enums.SearchTermMatchTypeEnum.SearchTermMatchType|null);

                        /** Segments match_type */
                        match_type?: (google.ads.googleads.v23.enums.MatchTypeEnum.MatchType|keyof typeof google.ads.googleads.v23.enums.MatchTypeEnum.MatchType|null);

                        /** Segments slot */
                        slot?: (google.ads.googleads.v23.enums.SlotEnum.Slot|keyof typeof google.ads.googleads.v23.enums.SlotEnum.Slot|null);

                        /** Segments conversion_value_rule_primary_dimension */
                        conversion_value_rule_primary_dimension?: (google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum.ConversionValueRulePrimaryDimension|keyof typeof google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum.ConversionValueRulePrimaryDimension|null);

                        /** Segments webpage */
                        webpage?: (string|null);

                        /** Segments week */
                        week?: (string|null);

                        /** Segments year */
                        year?: (number|null);

                        /** Segments sk_ad_network_fine_conversion_value */
                        sk_ad_network_fine_conversion_value?: (number|null);

                        /** Segments sk_ad_network_redistributed_fine_conversion_value */
                        sk_ad_network_redistributed_fine_conversion_value?: (number|null);

                        /** Segments sk_ad_network_user_type */
                        sk_ad_network_user_type?: (google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum.SkAdNetworkUserType|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum.SkAdNetworkUserType|null);

                        /** Segments sk_ad_network_ad_event_type */
                        sk_ad_network_ad_event_type?: (google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum.SkAdNetworkAdEventType|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum.SkAdNetworkAdEventType|null);

                        /** Segments sk_ad_network_source_app */
                        sk_ad_network_source_app?: (google.ads.googleads.v23.common.ISkAdNetworkSourceApp|null);

                        /** Segments sk_ad_network_attribution_credit */
                        sk_ad_network_attribution_credit?: (google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum.SkAdNetworkAttributionCredit|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum.SkAdNetworkAttributionCredit|null);

                        /** Segments sk_ad_network_coarse_conversion_value */
                        sk_ad_network_coarse_conversion_value?: (google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue|null);

                        /** Segments sk_ad_network_source_domain */
                        sk_ad_network_source_domain?: (string|null);

                        /** Segments sk_ad_network_source_type */
                        sk_ad_network_source_type?: (google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum.SkAdNetworkSourceType|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum.SkAdNetworkSourceType|null);

                        /** Segments sk_ad_network_postback_sequence_index */
                        sk_ad_network_postback_sequence_index?: (number|null);

                        /** Segments sk_ad_network_version */
                        sk_ad_network_version?: (string|null);

                        /** Segments asset_interaction_target */
                        asset_interaction_target?: (google.ads.googleads.v23.common.IAssetInteractionTarget|null);

                        /** Segments new_versus_returning_customers */
                        new_versus_returning_customers?: (google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum.ConvertingUserPriorEngagementTypeAndLtvBucket|keyof typeof google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum.ConvertingUserPriorEngagementTypeAndLtvBucket|null);

                        /** Segments adjusted_age_range */
                        adjusted_age_range?: (google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType|keyof typeof google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType|null);

                        /** Segments adjusted_gender */
                        adjusted_gender?: (google.ads.googleads.v23.enums.GenderTypeEnum.GenderType|keyof typeof google.ads.googleads.v23.enums.GenderTypeEnum.GenderType|null);

                        /** Segments search_term_match_source */
                        search_term_match_source?: (google.ads.googleads.v23.enums.SearchTermMatchSourceEnum.SearchTermMatchSource|keyof typeof google.ads.googleads.v23.enums.SearchTermMatchSourceEnum.SearchTermMatchSource|null);

                        /** Segments search_term_targeting_status */
                        search_term_targeting_status?: (google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|keyof typeof google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|null);

                        /** Segments ad_using_product_data */
                        ad_using_product_data?: (boolean|null);

                        /** Segments ad_using_video */
                        ad_using_video?: (boolean|null);
                    }

                    /** Represents a Segments. */
                    class Segments implements ISegments {

                        /**
                         * Constructs a new Segments.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISegments);

                        /** Segments activity_account_id. */
                        public activity_account_id?: (number|null);

                        /** Segments activity_city. */
                        public activity_city?: (string|null);

                        /** Segments activity_country. */
                        public activity_country?: (string|null);

                        /** Segments activity_rating. */
                        public activity_rating?: (number|null);

                        /** Segments activity_state. */
                        public activity_state?: (string|null);

                        /** Segments external_activity_id. */
                        public external_activity_id?: (string|null);

                        /** Segments ad_destination_type. */
                        public ad_destination_type: (google.ads.googleads.v23.enums.AdDestinationTypeEnum.AdDestinationType|keyof typeof google.ads.googleads.v23.enums.AdDestinationTypeEnum.AdDestinationType);

                        /** Segments ad_format_type. */
                        public ad_format_type: (google.ads.googleads.v23.enums.AdFormatTypeEnum.AdFormatType|keyof typeof google.ads.googleads.v23.enums.AdFormatTypeEnum.AdFormatType);

                        /** Segments ad_network_type. */
                        public ad_network_type: (google.ads.googleads.v23.enums.AdNetworkTypeEnum.AdNetworkType|keyof typeof google.ads.googleads.v23.enums.AdNetworkTypeEnum.AdNetworkType);

                        /** Segments ad_group. */
                        public ad_group?: (string|null);

                        /** Segments ad_sub_network_type. */
                        public ad_sub_network_type: (google.ads.googleads.v23.enums.AdSubNetworkTypeEnum.AdSubNetworkType|keyof typeof google.ads.googleads.v23.enums.AdSubNetworkTypeEnum.AdSubNetworkType);

                        /** Segments asset_group. */
                        public asset_group?: (string|null);

                        /** Segments auction_insight_domain. */
                        public auction_insight_domain?: (string|null);

                        /** Segments budget_campaign_association_status. */
                        public budget_campaign_association_status?: (google.ads.googleads.v23.common.IBudgetCampaignAssociationStatus|null);

                        /** Segments campaign. */
                        public campaign?: (string|null);

                        /** Segments click_type. */
                        public click_type: (google.ads.googleads.v23.enums.ClickTypeEnum.ClickType|keyof typeof google.ads.googleads.v23.enums.ClickTypeEnum.ClickType);

                        /** Segments conversion_action. */
                        public conversion_action?: (string|null);

                        /** Segments conversion_action_category. */
                        public conversion_action_category: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory);

                        /** Segments conversion_action_name. */
                        public conversion_action_name?: (string|null);

                        /** Segments conversion_adjustment. */
                        public conversion_adjustment?: (boolean|null);

                        /** Segments conversion_attribution_event_type. */
                        public conversion_attribution_event_type: (google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType|keyof typeof google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType);

                        /** Segments conversion_lag_bucket. */
                        public conversion_lag_bucket: (google.ads.googleads.v23.enums.ConversionLagBucketEnum.ConversionLagBucket|keyof typeof google.ads.googleads.v23.enums.ConversionLagBucketEnum.ConversionLagBucket);

                        /** Segments conversion_or_adjustment_lag_bucket. */
                        public conversion_or_adjustment_lag_bucket: (google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket|keyof typeof google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket);

                        /** Segments date. */
                        public date?: (string|null);

                        /** Segments day_of_week. */
                        public day_of_week: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek);

                        /** Segments device. */
                        public device: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device);

                        /** Segments external_conversion_source. */
                        public external_conversion_source: (google.ads.googleads.v23.enums.ExternalConversionSourceEnum.ExternalConversionSource|keyof typeof google.ads.googleads.v23.enums.ExternalConversionSourceEnum.ExternalConversionSource);

                        /** Segments geo_target_airport. */
                        public geo_target_airport?: (string|null);

                        /** Segments geo_target_canton. */
                        public geo_target_canton?: (string|null);

                        /** Segments geo_target_city. */
                        public geo_target_city?: (string|null);

                        /** Segments geo_target_country. */
                        public geo_target_country?: (string|null);

                        /** Segments geo_target_county. */
                        public geo_target_county?: (string|null);

                        /** Segments geo_target_district. */
                        public geo_target_district?: (string|null);

                        /** Segments geo_target_metro. */
                        public geo_target_metro?: (string|null);

                        /** Segments geo_target_most_specific_location. */
                        public geo_target_most_specific_location?: (string|null);

                        /** Segments geo_target_postal_code. */
                        public geo_target_postal_code?: (string|null);

                        /** Segments geo_target_province. */
                        public geo_target_province?: (string|null);

                        /** Segments geo_target_region. */
                        public geo_target_region?: (string|null);

                        /** Segments geo_target_state. */
                        public geo_target_state?: (string|null);

                        /** Segments hotel_booking_window_days. */
                        public hotel_booking_window_days?: (number|null);

                        /** Segments hotel_center_id. */
                        public hotel_center_id?: (number|null);

                        /** Segments hotel_check_in_date. */
                        public hotel_check_in_date?: (string|null);

                        /** Segments hotel_check_in_day_of_week. */
                        public hotel_check_in_day_of_week: (google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v23.enums.DayOfWeekEnum.DayOfWeek);

                        /** Segments hotel_city. */
                        public hotel_city?: (string|null);

                        /** Segments hotel_class. */
                        public hotel_class?: (number|null);

                        /** Segments hotel_country. */
                        public hotel_country?: (string|null);

                        /** Segments hotel_date_selection_type. */
                        public hotel_date_selection_type: (google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType);

                        /** Segments hotel_length_of_stay. */
                        public hotel_length_of_stay?: (number|null);

                        /** Segments hotel_rate_rule_id. */
                        public hotel_rate_rule_id?: (string|null);

                        /** Segments hotel_rate_type. */
                        public hotel_rate_type: (google.ads.googleads.v23.enums.HotelRateTypeEnum.HotelRateType|keyof typeof google.ads.googleads.v23.enums.HotelRateTypeEnum.HotelRateType);

                        /** Segments hotel_price_bucket. */
                        public hotel_price_bucket: (google.ads.googleads.v23.enums.HotelPriceBucketEnum.HotelPriceBucket|keyof typeof google.ads.googleads.v23.enums.HotelPriceBucketEnum.HotelPriceBucket);

                        /** Segments hotel_state. */
                        public hotel_state?: (string|null);

                        /** Segments hour. */
                        public hour?: (number|null);

                        /** Segments interaction_on_this_extension. */
                        public interaction_on_this_extension?: (boolean|null);

                        /** Segments keyword. */
                        public keyword?: (google.ads.googleads.v23.common.IKeyword|null);

                        /** Segments landing_page_source. */
                        public landing_page_source: (google.ads.googleads.v23.enums.LandingPageSourceEnum.LandingPageSource|keyof typeof google.ads.googleads.v23.enums.LandingPageSourceEnum.LandingPageSource);

                        /** Segments month. */
                        public month?: (string|null);

                        /** Segments month_of_year. */
                        public month_of_year: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear);

                        /** Segments partner_hotel_id. */
                        public partner_hotel_id?: (string|null);

                        /** Segments product_aggregator_id. */
                        public product_aggregator_id?: (number|null);

                        /** Segments product_category_level1. */
                        public product_category_level1?: (string|null);

                        /** Segments product_category_level2. */
                        public product_category_level2?: (string|null);

                        /** Segments product_category_level3. */
                        public product_category_level3?: (string|null);

                        /** Segments product_category_level4. */
                        public product_category_level4?: (string|null);

                        /** Segments product_category_level5. */
                        public product_category_level5?: (string|null);

                        /** Segments product_brand. */
                        public product_brand?: (string|null);

                        /** Segments product_channel. */
                        public product_channel: (google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel);

                        /** Segments product_channel_exclusivity. */
                        public product_channel_exclusivity: (google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity);

                        /** Segments product_condition. */
                        public product_condition: (google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition);

                        /** Segments product_country. */
                        public product_country?: (string|null);

                        /** Segments product_custom_attribute0. */
                        public product_custom_attribute0?: (string|null);

                        /** Segments product_custom_attribute1. */
                        public product_custom_attribute1?: (string|null);

                        /** Segments product_custom_attribute2. */
                        public product_custom_attribute2?: (string|null);

                        /** Segments product_custom_attribute3. */
                        public product_custom_attribute3?: (string|null);

                        /** Segments product_custom_attribute4. */
                        public product_custom_attribute4?: (string|null);

                        /** Segments product_feed_label. */
                        public product_feed_label?: (string|null);

                        /** Segments product_item_id. */
                        public product_item_id?: (string|null);

                        /** Segments product_language. */
                        public product_language?: (string|null);

                        /** Segments product_merchant_id. */
                        public product_merchant_id?: (number|null);

                        /** Segments product_store_id. */
                        public product_store_id?: (string|null);

                        /** Segments product_title. */
                        public product_title?: (string|null);

                        /** Segments product_type_l1. */
                        public product_type_l1?: (string|null);

                        /** Segments product_type_l2. */
                        public product_type_l2?: (string|null);

                        /** Segments product_type_l3. */
                        public product_type_l3?: (string|null);

                        /** Segments product_type_l4. */
                        public product_type_l4?: (string|null);

                        /** Segments product_type_l5. */
                        public product_type_l5?: (string|null);

                        /** Segments quarter. */
                        public quarter?: (string|null);

                        /** Segments travel_destination_city. */
                        public travel_destination_city?: (string|null);

                        /** Segments travel_destination_country. */
                        public travel_destination_country?: (string|null);

                        /** Segments travel_destination_region. */
                        public travel_destination_region?: (string|null);

                        /** Segments vertical_ads_event_participant_display_names. */
                        public vertical_ads_event_participant_display_names?: (string|null);

                        /** Segments vertical_ads_hotel_class. */
                        public vertical_ads_hotel_class?: (number|null);

                        /** Segments vertical_ads_listing. */
                        public vertical_ads_listing?: (string|null);

                        /** Segments vertical_ads_listing_brand. */
                        public vertical_ads_listing_brand?: (string|null);

                        /** Segments vertical_ads_listing_city. */
                        public vertical_ads_listing_city?: (string|null);

                        /** Segments vertical_ads_listing_country. */
                        public vertical_ads_listing_country?: (string|null);

                        /** Segments vertical_ads_listing_region. */
                        public vertical_ads_listing_region?: (string|null);

                        /** Segments vertical_ads_partner_account. */
                        public vertical_ads_partner_account?: (number|null);

                        /** Segments vertical_ads_vertical. */
                        public vertical_ads_vertical?: (google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|keyof typeof google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|null);

                        /** Segments recommendation_type. */
                        public recommendation_type: (google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType);

                        /** Segments search_engine_results_page_type. */
                        public search_engine_results_page_type: (google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType|keyof typeof google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType);

                        /** Segments search_subcategory. */
                        public search_subcategory?: (string|null);

                        /** Segments search_term. */
                        public search_term?: (string|null);

                        /** Segments search_term_match_type. */
                        public search_term_match_type: (google.ads.googleads.v23.enums.SearchTermMatchTypeEnum.SearchTermMatchType|keyof typeof google.ads.googleads.v23.enums.SearchTermMatchTypeEnum.SearchTermMatchType);

                        /** Segments match_type. */
                        public match_type: (google.ads.googleads.v23.enums.MatchTypeEnum.MatchType|keyof typeof google.ads.googleads.v23.enums.MatchTypeEnum.MatchType);

                        /** Segments slot. */
                        public slot: (google.ads.googleads.v23.enums.SlotEnum.Slot|keyof typeof google.ads.googleads.v23.enums.SlotEnum.Slot);

                        /** Segments conversion_value_rule_primary_dimension. */
                        public conversion_value_rule_primary_dimension: (google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum.ConversionValueRulePrimaryDimension|keyof typeof google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum.ConversionValueRulePrimaryDimension);

                        /** Segments webpage. */
                        public webpage?: (string|null);

                        /** Segments week. */
                        public week?: (string|null);

                        /** Segments year. */
                        public year?: (number|null);

                        /** Segments sk_ad_network_fine_conversion_value. */
                        public sk_ad_network_fine_conversion_value?: (number|null);

                        /** Segments sk_ad_network_redistributed_fine_conversion_value. */
                        public sk_ad_network_redistributed_fine_conversion_value?: (number|null);

                        /** Segments sk_ad_network_user_type. */
                        public sk_ad_network_user_type: (google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum.SkAdNetworkUserType|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum.SkAdNetworkUserType);

                        /** Segments sk_ad_network_ad_event_type. */
                        public sk_ad_network_ad_event_type: (google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum.SkAdNetworkAdEventType|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum.SkAdNetworkAdEventType);

                        /** Segments sk_ad_network_source_app. */
                        public sk_ad_network_source_app?: (google.ads.googleads.v23.common.ISkAdNetworkSourceApp|null);

                        /** Segments sk_ad_network_attribution_credit. */
                        public sk_ad_network_attribution_credit: (google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum.SkAdNetworkAttributionCredit|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum.SkAdNetworkAttributionCredit);

                        /** Segments sk_ad_network_coarse_conversion_value. */
                        public sk_ad_network_coarse_conversion_value: (google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue);

                        /** Segments sk_ad_network_source_domain. */
                        public sk_ad_network_source_domain?: (string|null);

                        /** Segments sk_ad_network_source_type. */
                        public sk_ad_network_source_type: (google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum.SkAdNetworkSourceType|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum.SkAdNetworkSourceType);

                        /** Segments sk_ad_network_postback_sequence_index. */
                        public sk_ad_network_postback_sequence_index?: (number|null);

                        /** Segments sk_ad_network_version. */
                        public sk_ad_network_version?: (string|null);

                        /** Segments asset_interaction_target. */
                        public asset_interaction_target?: (google.ads.googleads.v23.common.IAssetInteractionTarget|null);

                        /** Segments new_versus_returning_customers. */
                        public new_versus_returning_customers: (google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum.ConvertingUserPriorEngagementTypeAndLtvBucket|keyof typeof google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum.ConvertingUserPriorEngagementTypeAndLtvBucket);

                        /** Segments adjusted_age_range. */
                        public adjusted_age_range: (google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType|keyof typeof google.ads.googleads.v23.enums.AgeRangeTypeEnum.AgeRangeType);

                        /** Segments adjusted_gender. */
                        public adjusted_gender: (google.ads.googleads.v23.enums.GenderTypeEnum.GenderType|keyof typeof google.ads.googleads.v23.enums.GenderTypeEnum.GenderType);

                        /** Segments search_term_match_source. */
                        public search_term_match_source: (google.ads.googleads.v23.enums.SearchTermMatchSourceEnum.SearchTermMatchSource|keyof typeof google.ads.googleads.v23.enums.SearchTermMatchSourceEnum.SearchTermMatchSource);

                        /** Segments search_term_targeting_status. */
                        public search_term_targeting_status: (google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|keyof typeof google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus);

                        /** Segments ad_using_product_data. */
                        public ad_using_product_data?: (boolean|null);

                        /** Segments ad_using_video. */
                        public ad_using_video?: (boolean|null);

                        /**
                         * Creates a new Segments instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Segments instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISegments): google.ads.googleads.v23.common.Segments;

                        /**
                         * Encodes the specified Segments message. Does not implicitly {@link google.ads.googleads.v23.common.Segments.verify|verify} messages.
                         * @param message Segments message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISegments, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Segments message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.Segments.verify|verify} messages.
                         * @param message Segments message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISegments, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Segments message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Segments
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.Segments;

                        /**
                         * Decodes a Segments message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Segments
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.Segments;

                        /**
                         * Verifies a Segments message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Segments message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Segments
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.Segments;

                        /**
                         * Creates a plain object from a Segments message. Also converts values to other types if specified.
                         * @param message Segments
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.Segments, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Segments to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Segments
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Keyword. */
                    interface IKeyword {

                        /** Keyword ad_group_criterion */
                        ad_group_criterion?: (string|null);

                        /** Keyword info */
                        info?: (google.ads.googleads.v23.common.IKeywordInfo|null);
                    }

                    /** Represents a Keyword. */
                    class Keyword implements IKeyword {

                        /**
                         * Constructs a new Keyword.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IKeyword);

                        /** Keyword ad_group_criterion. */
                        public ad_group_criterion?: (string|null);

                        /** Keyword info. */
                        public info?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /**
                         * Creates a new Keyword instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Keyword instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IKeyword): google.ads.googleads.v23.common.Keyword;

                        /**
                         * Encodes the specified Keyword message. Does not implicitly {@link google.ads.googleads.v23.common.Keyword.verify|verify} messages.
                         * @param message Keyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Keyword message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.Keyword.verify|verify} messages.
                         * @param message Keyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Keyword message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Keyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.Keyword;

                        /**
                         * Decodes a Keyword message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Keyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.Keyword;

                        /**
                         * Verifies a Keyword message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Keyword message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Keyword
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.Keyword;

                        /**
                         * Creates a plain object from a Keyword message. Also converts values to other types if specified.
                         * @param message Keyword
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.Keyword, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Keyword to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Keyword
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BudgetCampaignAssociationStatus. */
                    interface IBudgetCampaignAssociationStatus {

                        /** BudgetCampaignAssociationStatus campaign */
                        campaign?: (string|null);

                        /** BudgetCampaignAssociationStatus status */
                        status?: (google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus|keyof typeof google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus|null);
                    }

                    /** Represents a BudgetCampaignAssociationStatus. */
                    class BudgetCampaignAssociationStatus implements IBudgetCampaignAssociationStatus {

                        /**
                         * Constructs a new BudgetCampaignAssociationStatus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBudgetCampaignAssociationStatus);

                        /** BudgetCampaignAssociationStatus campaign. */
                        public campaign?: (string|null);

                        /** BudgetCampaignAssociationStatus status. */
                        public status: (google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus|keyof typeof google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus);

                        /**
                         * Creates a new BudgetCampaignAssociationStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetCampaignAssociationStatus instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBudgetCampaignAssociationStatus): google.ads.googleads.v23.common.BudgetCampaignAssociationStatus;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatus message. Does not implicitly {@link google.ads.googleads.v23.common.BudgetCampaignAssociationStatus.verify|verify} messages.
                         * @param message BudgetCampaignAssociationStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBudgetCampaignAssociationStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatus message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BudgetCampaignAssociationStatus.verify|verify} messages.
                         * @param message BudgetCampaignAssociationStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBudgetCampaignAssociationStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetCampaignAssociationStatus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetCampaignAssociationStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.BudgetCampaignAssociationStatus;

                        /**
                         * Decodes a BudgetCampaignAssociationStatus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetCampaignAssociationStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.BudgetCampaignAssociationStatus;

                        /**
                         * Verifies a BudgetCampaignAssociationStatus message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetCampaignAssociationStatus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetCampaignAssociationStatus
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.BudgetCampaignAssociationStatus;

                        /**
                         * Creates a plain object from a BudgetCampaignAssociationStatus message. Also converts values to other types if specified.
                         * @param message BudgetCampaignAssociationStatus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.BudgetCampaignAssociationStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetCampaignAssociationStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetCampaignAssociationStatus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetInteractionTarget. */
                    interface IAssetInteractionTarget {

                        /** AssetInteractionTarget asset */
                        asset?: (string|null);

                        /** AssetInteractionTarget interaction_on_this_asset */
                        interaction_on_this_asset?: (boolean|null);
                    }

                    /** Represents an AssetInteractionTarget. */
                    class AssetInteractionTarget implements IAssetInteractionTarget {

                        /**
                         * Constructs a new AssetInteractionTarget.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IAssetInteractionTarget);

                        /** AssetInteractionTarget asset. */
                        public asset: string;

                        /** AssetInteractionTarget interaction_on_this_asset. */
                        public interaction_on_this_asset: boolean;

                        /**
                         * Creates a new AssetInteractionTarget instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetInteractionTarget instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IAssetInteractionTarget): google.ads.googleads.v23.common.AssetInteractionTarget;

                        /**
                         * Encodes the specified AssetInteractionTarget message. Does not implicitly {@link google.ads.googleads.v23.common.AssetInteractionTarget.verify|verify} messages.
                         * @param message AssetInteractionTarget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IAssetInteractionTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetInteractionTarget message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.AssetInteractionTarget.verify|verify} messages.
                         * @param message AssetInteractionTarget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IAssetInteractionTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetInteractionTarget message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetInteractionTarget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.AssetInteractionTarget;

                        /**
                         * Decodes an AssetInteractionTarget message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetInteractionTarget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.AssetInteractionTarget;

                        /**
                         * Verifies an AssetInteractionTarget message.
                         * @param message Plain 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 AssetInteractionTarget message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetInteractionTarget
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.AssetInteractionTarget;

                        /**
                         * Creates a plain object from an AssetInteractionTarget message. Also converts values to other types if specified.
                         * @param message AssetInteractionTarget
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.AssetInteractionTarget, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetInteractionTarget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetInteractionTarget
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SkAdNetworkSourceApp. */
                    interface ISkAdNetworkSourceApp {

                        /** SkAdNetworkSourceApp sk_ad_network_source_app_id */
                        sk_ad_network_source_app_id?: (string|null);
                    }

                    /** Represents a SkAdNetworkSourceApp. */
                    class SkAdNetworkSourceApp implements ISkAdNetworkSourceApp {

                        /**
                         * Constructs a new SkAdNetworkSourceApp.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISkAdNetworkSourceApp);

                        /** SkAdNetworkSourceApp sk_ad_network_source_app_id. */
                        public sk_ad_network_source_app_id?: (string|null);

                        /**
                         * Creates a new SkAdNetworkSourceApp instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SkAdNetworkSourceApp instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISkAdNetworkSourceApp): google.ads.googleads.v23.common.SkAdNetworkSourceApp;

                        /**
                         * Encodes the specified SkAdNetworkSourceApp message. Does not implicitly {@link google.ads.googleads.v23.common.SkAdNetworkSourceApp.verify|verify} messages.
                         * @param message SkAdNetworkSourceApp message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISkAdNetworkSourceApp, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SkAdNetworkSourceApp message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.SkAdNetworkSourceApp.verify|verify} messages.
                         * @param message SkAdNetworkSourceApp message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISkAdNetworkSourceApp, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SkAdNetworkSourceApp message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SkAdNetworkSourceApp
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.SkAdNetworkSourceApp;

                        /**
                         * Decodes a SkAdNetworkSourceApp message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SkAdNetworkSourceApp
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.SkAdNetworkSourceApp;

                        /**
                         * Verifies a SkAdNetworkSourceApp message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SkAdNetworkSourceApp message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SkAdNetworkSourceApp
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.SkAdNetworkSourceApp;

                        /**
                         * Creates a plain object from a SkAdNetworkSourceApp message. Also converts values to other types if specified.
                         * @param message SkAdNetworkSourceApp
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.SkAdNetworkSourceApp, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SkAdNetworkSourceApp to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SkAdNetworkSourceApp
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CpcBidSimulationPointList. */
                    interface ICpcBidSimulationPointList {

                        /** CpcBidSimulationPointList points */
                        points?: (google.ads.googleads.v23.common.ICpcBidSimulationPoint[]|null);
                    }

                    /** Represents a CpcBidSimulationPointList. */
                    class CpcBidSimulationPointList implements ICpcBidSimulationPointList {

                        /**
                         * Constructs a new CpcBidSimulationPointList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICpcBidSimulationPointList);

                        /** CpcBidSimulationPointList points. */
                        public points: google.ads.googleads.v23.common.ICpcBidSimulationPoint[];

                        /**
                         * Creates a new CpcBidSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CpcBidSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICpcBidSimulationPointList): google.ads.googleads.v23.common.CpcBidSimulationPointList;

                        /**
                         * Encodes the specified CpcBidSimulationPointList message. Does not implicitly {@link google.ads.googleads.v23.common.CpcBidSimulationPointList.verify|verify} messages.
                         * @param message CpcBidSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICpcBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpcBidSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CpcBidSimulationPointList.verify|verify} messages.
                         * @param message CpcBidSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICpcBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpcBidSimulationPointList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CpcBidSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CpcBidSimulationPointList;

                        /**
                         * Decodes a CpcBidSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CpcBidSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CpcBidSimulationPointList;

                        /**
                         * Verifies a CpcBidSimulationPointList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpcBidSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CpcBidSimulationPointList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CpcBidSimulationPointList;

                        /**
                         * Creates a plain object from a CpcBidSimulationPointList message. Also converts values to other types if specified.
                         * @param message CpcBidSimulationPointList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CpcBidSimulationPointList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpcBidSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CpcBidSimulationPointList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CpvBidSimulationPointList. */
                    interface ICpvBidSimulationPointList {

                        /** CpvBidSimulationPointList points */
                        points?: (google.ads.googleads.v23.common.ICpvBidSimulationPoint[]|null);
                    }

                    /** Represents a CpvBidSimulationPointList. */
                    class CpvBidSimulationPointList implements ICpvBidSimulationPointList {

                        /**
                         * Constructs a new CpvBidSimulationPointList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICpvBidSimulationPointList);

                        /** CpvBidSimulationPointList points. */
                        public points: google.ads.googleads.v23.common.ICpvBidSimulationPoint[];

                        /**
                         * Creates a new CpvBidSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CpvBidSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICpvBidSimulationPointList): google.ads.googleads.v23.common.CpvBidSimulationPointList;

                        /**
                         * Encodes the specified CpvBidSimulationPointList message. Does not implicitly {@link google.ads.googleads.v23.common.CpvBidSimulationPointList.verify|verify} messages.
                         * @param message CpvBidSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICpvBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpvBidSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CpvBidSimulationPointList.verify|verify} messages.
                         * @param message CpvBidSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICpvBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpvBidSimulationPointList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CpvBidSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CpvBidSimulationPointList;

                        /**
                         * Decodes a CpvBidSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CpvBidSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CpvBidSimulationPointList;

                        /**
                         * Verifies a CpvBidSimulationPointList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpvBidSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CpvBidSimulationPointList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CpvBidSimulationPointList;

                        /**
                         * Creates a plain object from a CpvBidSimulationPointList message. Also converts values to other types if specified.
                         * @param message CpvBidSimulationPointList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CpvBidSimulationPointList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpvBidSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CpvBidSimulationPointList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetCpaSimulationPointList. */
                    interface ITargetCpaSimulationPointList {

                        /** TargetCpaSimulationPointList points */
                        points?: (google.ads.googleads.v23.common.ITargetCpaSimulationPoint[]|null);
                    }

                    /** Represents a TargetCpaSimulationPointList. */
                    class TargetCpaSimulationPointList implements ITargetCpaSimulationPointList {

                        /**
                         * Constructs a new TargetCpaSimulationPointList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetCpaSimulationPointList);

                        /** TargetCpaSimulationPointList points. */
                        public points: google.ads.googleads.v23.common.ITargetCpaSimulationPoint[];

                        /**
                         * Creates a new TargetCpaSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpaSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetCpaSimulationPointList): google.ads.googleads.v23.common.TargetCpaSimulationPointList;

                        /**
                         * Encodes the specified TargetCpaSimulationPointList message. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpaSimulationPointList.verify|verify} messages.
                         * @param message TargetCpaSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetCpaSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpaSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpaSimulationPointList.verify|verify} messages.
                         * @param message TargetCpaSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetCpaSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpaSimulationPointList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpaSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetCpaSimulationPointList;

                        /**
                         * Decodes a TargetCpaSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpaSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetCpaSimulationPointList;

                        /**
                         * Verifies a TargetCpaSimulationPointList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpaSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpaSimulationPointList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetCpaSimulationPointList;

                        /**
                         * Creates a plain object from a TargetCpaSimulationPointList message. Also converts values to other types if specified.
                         * @param message TargetCpaSimulationPointList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetCpaSimulationPointList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpaSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpaSimulationPointList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetRoasSimulationPointList. */
                    interface ITargetRoasSimulationPointList {

                        /** TargetRoasSimulationPointList points */
                        points?: (google.ads.googleads.v23.common.ITargetRoasSimulationPoint[]|null);
                    }

                    /** Represents a TargetRoasSimulationPointList. */
                    class TargetRoasSimulationPointList implements ITargetRoasSimulationPointList {

                        /**
                         * Constructs a new TargetRoasSimulationPointList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetRoasSimulationPointList);

                        /** TargetRoasSimulationPointList points. */
                        public points: google.ads.googleads.v23.common.ITargetRoasSimulationPoint[];

                        /**
                         * Creates a new TargetRoasSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRoasSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetRoasSimulationPointList): google.ads.googleads.v23.common.TargetRoasSimulationPointList;

                        /**
                         * Encodes the specified TargetRoasSimulationPointList message. Does not implicitly {@link google.ads.googleads.v23.common.TargetRoasSimulationPointList.verify|verify} messages.
                         * @param message TargetRoasSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetRoasSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRoasSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetRoasSimulationPointList.verify|verify} messages.
                         * @param message TargetRoasSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetRoasSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRoasSimulationPointList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetRoasSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetRoasSimulationPointList;

                        /**
                         * Decodes a TargetRoasSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetRoasSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetRoasSimulationPointList;

                        /**
                         * Verifies a TargetRoasSimulationPointList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRoasSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetRoasSimulationPointList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetRoasSimulationPointList;

                        /**
                         * Creates a plain object from a TargetRoasSimulationPointList message. Also converts values to other types if specified.
                         * @param message TargetRoasSimulationPointList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetRoasSimulationPointList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRoasSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetRoasSimulationPointList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PercentCpcBidSimulationPointList. */
                    interface IPercentCpcBidSimulationPointList {

                        /** PercentCpcBidSimulationPointList points */
                        points?: (google.ads.googleads.v23.common.IPercentCpcBidSimulationPoint[]|null);
                    }

                    /** Represents a PercentCpcBidSimulationPointList. */
                    class PercentCpcBidSimulationPointList implements IPercentCpcBidSimulationPointList {

                        /**
                         * Constructs a new PercentCpcBidSimulationPointList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPercentCpcBidSimulationPointList);

                        /** PercentCpcBidSimulationPointList points. */
                        public points: google.ads.googleads.v23.common.IPercentCpcBidSimulationPoint[];

                        /**
                         * Creates a new PercentCpcBidSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PercentCpcBidSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPercentCpcBidSimulationPointList): google.ads.googleads.v23.common.PercentCpcBidSimulationPointList;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPointList message. Does not implicitly {@link google.ads.googleads.v23.common.PercentCpcBidSimulationPointList.verify|verify} messages.
                         * @param message PercentCpcBidSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPercentCpcBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PercentCpcBidSimulationPointList.verify|verify} messages.
                         * @param message PercentCpcBidSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPercentCpcBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PercentCpcBidSimulationPointList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PercentCpcBidSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.PercentCpcBidSimulationPointList;

                        /**
                         * Decodes a PercentCpcBidSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PercentCpcBidSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.PercentCpcBidSimulationPointList;

                        /**
                         * Verifies a PercentCpcBidSimulationPointList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PercentCpcBidSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PercentCpcBidSimulationPointList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PercentCpcBidSimulationPointList;

                        /**
                         * Creates a plain object from a PercentCpcBidSimulationPointList message. Also converts values to other types if specified.
                         * @param message PercentCpcBidSimulationPointList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.PercentCpcBidSimulationPointList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PercentCpcBidSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PercentCpcBidSimulationPointList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BudgetSimulationPointList. */
                    interface IBudgetSimulationPointList {

                        /** BudgetSimulationPointList points */
                        points?: (google.ads.googleads.v23.common.IBudgetSimulationPoint[]|null);
                    }

                    /** Represents a BudgetSimulationPointList. */
                    class BudgetSimulationPointList implements IBudgetSimulationPointList {

                        /**
                         * Constructs a new BudgetSimulationPointList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBudgetSimulationPointList);

                        /** BudgetSimulationPointList points. */
                        public points: google.ads.googleads.v23.common.IBudgetSimulationPoint[];

                        /**
                         * Creates a new BudgetSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBudgetSimulationPointList): google.ads.googleads.v23.common.BudgetSimulationPointList;

                        /**
                         * Encodes the specified BudgetSimulationPointList message. Does not implicitly {@link google.ads.googleads.v23.common.BudgetSimulationPointList.verify|verify} messages.
                         * @param message BudgetSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBudgetSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BudgetSimulationPointList.verify|verify} messages.
                         * @param message BudgetSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBudgetSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetSimulationPointList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.BudgetSimulationPointList;

                        /**
                         * Decodes a BudgetSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.BudgetSimulationPointList;

                        /**
                         * Verifies a BudgetSimulationPointList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetSimulationPointList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.BudgetSimulationPointList;

                        /**
                         * Creates a plain object from a BudgetSimulationPointList message. Also converts values to other types if specified.
                         * @param message BudgetSimulationPointList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.BudgetSimulationPointList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetSimulationPointList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetImpressionShareSimulationPointList. */
                    interface ITargetImpressionShareSimulationPointList {

                        /** TargetImpressionShareSimulationPointList points */
                        points?: (google.ads.googleads.v23.common.ITargetImpressionShareSimulationPoint[]|null);
                    }

                    /** Represents a TargetImpressionShareSimulationPointList. */
                    class TargetImpressionShareSimulationPointList implements ITargetImpressionShareSimulationPointList {

                        /**
                         * Constructs a new TargetImpressionShareSimulationPointList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPointList);

                        /** TargetImpressionShareSimulationPointList points. */
                        public points: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPoint[];

                        /**
                         * Creates a new TargetImpressionShareSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetImpressionShareSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPointList): google.ads.googleads.v23.common.TargetImpressionShareSimulationPointList;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPointList message. Does not implicitly {@link google.ads.googleads.v23.common.TargetImpressionShareSimulationPointList.verify|verify} messages.
                         * @param message TargetImpressionShareSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetImpressionShareSimulationPointList.verify|verify} messages.
                         * @param message TargetImpressionShareSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShareSimulationPointList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetImpressionShareSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetImpressionShareSimulationPointList;

                        /**
                         * Decodes a TargetImpressionShareSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetImpressionShareSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetImpressionShareSimulationPointList;

                        /**
                         * Verifies a TargetImpressionShareSimulationPointList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShareSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetImpressionShareSimulationPointList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetImpressionShareSimulationPointList;

                        /**
                         * Creates a plain object from a TargetImpressionShareSimulationPointList message. Also converts values to other types if specified.
                         * @param message TargetImpressionShareSimulationPointList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetImpressionShareSimulationPointList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShareSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetImpressionShareSimulationPointList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CpcBidSimulationPoint. */
                    interface ICpcBidSimulationPoint {

                        /** CpcBidSimulationPoint required_budget_amount_micros */
                        required_budget_amount_micros?: (number|null);

                        /** CpcBidSimulationPoint biddable_conversions */
                        biddable_conversions?: (number|null);

                        /** CpcBidSimulationPoint biddable_conversions_value */
                        biddable_conversions_value?: (number|null);

                        /** CpcBidSimulationPoint clicks */
                        clicks?: (number|null);

                        /** CpcBidSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** CpcBidSimulationPoint impressions */
                        impressions?: (number|null);

                        /** CpcBidSimulationPoint top_slot_impressions */
                        top_slot_impressions?: (number|null);

                        /** CpcBidSimulationPoint cpc_bid_micros */
                        cpc_bid_micros?: (number|null);

                        /** CpcBidSimulationPoint cpc_bid_scaling_modifier */
                        cpc_bid_scaling_modifier?: (number|null);
                    }

                    /** Represents a CpcBidSimulationPoint. */
                    class CpcBidSimulationPoint implements ICpcBidSimulationPoint {

                        /**
                         * Constructs a new CpcBidSimulationPoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICpcBidSimulationPoint);

                        /** CpcBidSimulationPoint required_budget_amount_micros. */
                        public required_budget_amount_micros: number;

                        /** CpcBidSimulationPoint biddable_conversions. */
                        public biddable_conversions?: (number|null);

                        /** CpcBidSimulationPoint biddable_conversions_value. */
                        public biddable_conversions_value?: (number|null);

                        /** CpcBidSimulationPoint clicks. */
                        public clicks?: (number|null);

                        /** CpcBidSimulationPoint cost_micros. */
                        public cost_micros?: (number|null);

                        /** CpcBidSimulationPoint impressions. */
                        public impressions?: (number|null);

                        /** CpcBidSimulationPoint top_slot_impressions. */
                        public top_slot_impressions?: (number|null);

                        /** CpcBidSimulationPoint cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /** CpcBidSimulationPoint cpc_bid_scaling_modifier. */
                        public cpc_bid_scaling_modifier?: (number|null);

                        /** CpcBidSimulationPoint cpc_simulation_key_value. */
                        public cpc_simulation_key_value?: ("cpc_bid_micros"|"cpc_bid_scaling_modifier");

                        /**
                         * Creates a new CpcBidSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CpcBidSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICpcBidSimulationPoint): google.ads.googleads.v23.common.CpcBidSimulationPoint;

                        /**
                         * Encodes the specified CpcBidSimulationPoint message. Does not implicitly {@link google.ads.googleads.v23.common.CpcBidSimulationPoint.verify|verify} messages.
                         * @param message CpcBidSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICpcBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpcBidSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CpcBidSimulationPoint.verify|verify} messages.
                         * @param message CpcBidSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICpcBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpcBidSimulationPoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CpcBidSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CpcBidSimulationPoint;

                        /**
                         * Decodes a CpcBidSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CpcBidSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CpcBidSimulationPoint;

                        /**
                         * Verifies a CpcBidSimulationPoint message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpcBidSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CpcBidSimulationPoint
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CpcBidSimulationPoint;

                        /**
                         * Creates a plain object from a CpcBidSimulationPoint message. Also converts values to other types if specified.
                         * @param message CpcBidSimulationPoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CpcBidSimulationPoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpcBidSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CpcBidSimulationPoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CpvBidSimulationPoint. */
                    interface ICpvBidSimulationPoint {

                        /** CpvBidSimulationPoint cpv_bid_micros */
                        cpv_bid_micros?: (number|null);

                        /** CpvBidSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** CpvBidSimulationPoint impressions */
                        impressions?: (number|null);

                        /** CpvBidSimulationPoint views */
                        views?: (number|null);
                    }

                    /** Represents a CpvBidSimulationPoint. */
                    class CpvBidSimulationPoint implements ICpvBidSimulationPoint {

                        /**
                         * Constructs a new CpvBidSimulationPoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICpvBidSimulationPoint);

                        /** CpvBidSimulationPoint cpv_bid_micros. */
                        public cpv_bid_micros?: (number|null);

                        /** CpvBidSimulationPoint cost_micros. */
                        public cost_micros?: (number|null);

                        /** CpvBidSimulationPoint impressions. */
                        public impressions?: (number|null);

                        /** CpvBidSimulationPoint views. */
                        public views?: (number|null);

                        /**
                         * Creates a new CpvBidSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CpvBidSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICpvBidSimulationPoint): google.ads.googleads.v23.common.CpvBidSimulationPoint;

                        /**
                         * Encodes the specified CpvBidSimulationPoint message. Does not implicitly {@link google.ads.googleads.v23.common.CpvBidSimulationPoint.verify|verify} messages.
                         * @param message CpvBidSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICpvBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpvBidSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CpvBidSimulationPoint.verify|verify} messages.
                         * @param message CpvBidSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICpvBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpvBidSimulationPoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CpvBidSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CpvBidSimulationPoint;

                        /**
                         * Decodes a CpvBidSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CpvBidSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CpvBidSimulationPoint;

                        /**
                         * Verifies a CpvBidSimulationPoint message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpvBidSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CpvBidSimulationPoint
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CpvBidSimulationPoint;

                        /**
                         * Creates a plain object from a CpvBidSimulationPoint message. Also converts values to other types if specified.
                         * @param message CpvBidSimulationPoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CpvBidSimulationPoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpvBidSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CpvBidSimulationPoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetCpaSimulationPoint. */
                    interface ITargetCpaSimulationPoint {

                        /** TargetCpaSimulationPoint required_budget_amount_micros */
                        required_budget_amount_micros?: (number|null);

                        /** TargetCpaSimulationPoint biddable_conversions */
                        biddable_conversions?: (number|null);

                        /** TargetCpaSimulationPoint biddable_conversions_value */
                        biddable_conversions_value?: (number|null);

                        /** TargetCpaSimulationPoint app_installs */
                        app_installs?: (number|null);

                        /** TargetCpaSimulationPoint in_app_actions */
                        in_app_actions?: (number|null);

                        /** TargetCpaSimulationPoint clicks */
                        clicks?: (number|null);

                        /** TargetCpaSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** TargetCpaSimulationPoint impressions */
                        impressions?: (number|null);

                        /** TargetCpaSimulationPoint top_slot_impressions */
                        top_slot_impressions?: (number|null);

                        /** TargetCpaSimulationPoint interactions */
                        interactions?: (number|null);

                        /** TargetCpaSimulationPoint target_cpa_micros */
                        target_cpa_micros?: (number|null);

                        /** TargetCpaSimulationPoint target_cpa_scaling_modifier */
                        target_cpa_scaling_modifier?: (number|null);
                    }

                    /** Represents a TargetCpaSimulationPoint. */
                    class TargetCpaSimulationPoint implements ITargetCpaSimulationPoint {

                        /**
                         * Constructs a new TargetCpaSimulationPoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetCpaSimulationPoint);

                        /** TargetCpaSimulationPoint required_budget_amount_micros. */
                        public required_budget_amount_micros: number;

                        /** TargetCpaSimulationPoint biddable_conversions. */
                        public biddable_conversions?: (number|null);

                        /** TargetCpaSimulationPoint biddable_conversions_value. */
                        public biddable_conversions_value?: (number|null);

                        /** TargetCpaSimulationPoint app_installs. */
                        public app_installs: number;

                        /** TargetCpaSimulationPoint in_app_actions. */
                        public in_app_actions: number;

                        /** TargetCpaSimulationPoint clicks. */
                        public clicks?: (number|null);

                        /** TargetCpaSimulationPoint cost_micros. */
                        public cost_micros?: (number|null);

                        /** TargetCpaSimulationPoint impressions. */
                        public impressions?: (number|null);

                        /** TargetCpaSimulationPoint top_slot_impressions. */
                        public top_slot_impressions?: (number|null);

                        /** TargetCpaSimulationPoint interactions. */
                        public interactions?: (number|null);

                        /** TargetCpaSimulationPoint target_cpa_micros. */
                        public target_cpa_micros?: (number|null);

                        /** TargetCpaSimulationPoint target_cpa_scaling_modifier. */
                        public target_cpa_scaling_modifier?: (number|null);

                        /** TargetCpaSimulationPoint target_cpa_simulation_key_value. */
                        public target_cpa_simulation_key_value?: ("target_cpa_micros"|"target_cpa_scaling_modifier");

                        /**
                         * Creates a new TargetCpaSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpaSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetCpaSimulationPoint): google.ads.googleads.v23.common.TargetCpaSimulationPoint;

                        /**
                         * Encodes the specified TargetCpaSimulationPoint message. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpaSimulationPoint.verify|verify} messages.
                         * @param message TargetCpaSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetCpaSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpaSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetCpaSimulationPoint.verify|verify} messages.
                         * @param message TargetCpaSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetCpaSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpaSimulationPoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpaSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetCpaSimulationPoint;

                        /**
                         * Decodes a TargetCpaSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpaSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetCpaSimulationPoint;

                        /**
                         * Verifies a TargetCpaSimulationPoint message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpaSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpaSimulationPoint
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetCpaSimulationPoint;

                        /**
                         * Creates a plain object from a TargetCpaSimulationPoint message. Also converts values to other types if specified.
                         * @param message TargetCpaSimulationPoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetCpaSimulationPoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpaSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpaSimulationPoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetRoasSimulationPoint. */
                    interface ITargetRoasSimulationPoint {

                        /** TargetRoasSimulationPoint target_roas */
                        target_roas?: (number|null);

                        /** TargetRoasSimulationPoint required_budget_amount_micros */
                        required_budget_amount_micros?: (number|null);

                        /** TargetRoasSimulationPoint biddable_conversions */
                        biddable_conversions?: (number|null);

                        /** TargetRoasSimulationPoint biddable_conversions_value */
                        biddable_conversions_value?: (number|null);

                        /** TargetRoasSimulationPoint clicks */
                        clicks?: (number|null);

                        /** TargetRoasSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** TargetRoasSimulationPoint impressions */
                        impressions?: (number|null);

                        /** TargetRoasSimulationPoint top_slot_impressions */
                        top_slot_impressions?: (number|null);
                    }

                    /** Represents a TargetRoasSimulationPoint. */
                    class TargetRoasSimulationPoint implements ITargetRoasSimulationPoint {

                        /**
                         * Constructs a new TargetRoasSimulationPoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetRoasSimulationPoint);

                        /** TargetRoasSimulationPoint target_roas. */
                        public target_roas?: (number|null);

                        /** TargetRoasSimulationPoint required_budget_amount_micros. */
                        public required_budget_amount_micros: number;

                        /** TargetRoasSimulationPoint biddable_conversions. */
                        public biddable_conversions?: (number|null);

                        /** TargetRoasSimulationPoint biddable_conversions_value. */
                        public biddable_conversions_value?: (number|null);

                        /** TargetRoasSimulationPoint clicks. */
                        public clicks?: (number|null);

                        /** TargetRoasSimulationPoint cost_micros. */
                        public cost_micros?: (number|null);

                        /** TargetRoasSimulationPoint impressions. */
                        public impressions?: (number|null);

                        /** TargetRoasSimulationPoint top_slot_impressions. */
                        public top_slot_impressions?: (number|null);

                        /**
                         * Creates a new TargetRoasSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRoasSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetRoasSimulationPoint): google.ads.googleads.v23.common.TargetRoasSimulationPoint;

                        /**
                         * Encodes the specified TargetRoasSimulationPoint message. Does not implicitly {@link google.ads.googleads.v23.common.TargetRoasSimulationPoint.verify|verify} messages.
                         * @param message TargetRoasSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetRoasSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRoasSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetRoasSimulationPoint.verify|verify} messages.
                         * @param message TargetRoasSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetRoasSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRoasSimulationPoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetRoasSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetRoasSimulationPoint;

                        /**
                         * Decodes a TargetRoasSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetRoasSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetRoasSimulationPoint;

                        /**
                         * Verifies a TargetRoasSimulationPoint message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRoasSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetRoasSimulationPoint
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetRoasSimulationPoint;

                        /**
                         * Creates a plain object from a TargetRoasSimulationPoint message. Also converts values to other types if specified.
                         * @param message TargetRoasSimulationPoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetRoasSimulationPoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRoasSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetRoasSimulationPoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PercentCpcBidSimulationPoint. */
                    interface IPercentCpcBidSimulationPoint {

                        /** PercentCpcBidSimulationPoint percent_cpc_bid_micros */
                        percent_cpc_bid_micros?: (number|null);

                        /** PercentCpcBidSimulationPoint biddable_conversions */
                        biddable_conversions?: (number|null);

                        /** PercentCpcBidSimulationPoint biddable_conversions_value */
                        biddable_conversions_value?: (number|null);

                        /** PercentCpcBidSimulationPoint clicks */
                        clicks?: (number|null);

                        /** PercentCpcBidSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** PercentCpcBidSimulationPoint impressions */
                        impressions?: (number|null);

                        /** PercentCpcBidSimulationPoint top_slot_impressions */
                        top_slot_impressions?: (number|null);
                    }

                    /** Represents a PercentCpcBidSimulationPoint. */
                    class PercentCpcBidSimulationPoint implements IPercentCpcBidSimulationPoint {

                        /**
                         * Constructs a new PercentCpcBidSimulationPoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IPercentCpcBidSimulationPoint);

                        /** PercentCpcBidSimulationPoint percent_cpc_bid_micros. */
                        public percent_cpc_bid_micros?: (number|null);

                        /** PercentCpcBidSimulationPoint biddable_conversions. */
                        public biddable_conversions?: (number|null);

                        /** PercentCpcBidSimulationPoint biddable_conversions_value. */
                        public biddable_conversions_value?: (number|null);

                        /** PercentCpcBidSimulationPoint clicks. */
                        public clicks?: (number|null);

                        /** PercentCpcBidSimulationPoint cost_micros. */
                        public cost_micros?: (number|null);

                        /** PercentCpcBidSimulationPoint impressions. */
                        public impressions?: (number|null);

                        /** PercentCpcBidSimulationPoint top_slot_impressions. */
                        public top_slot_impressions?: (number|null);

                        /**
                         * Creates a new PercentCpcBidSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PercentCpcBidSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IPercentCpcBidSimulationPoint): google.ads.googleads.v23.common.PercentCpcBidSimulationPoint;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPoint message. Does not implicitly {@link google.ads.googleads.v23.common.PercentCpcBidSimulationPoint.verify|verify} messages.
                         * @param message PercentCpcBidSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IPercentCpcBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.PercentCpcBidSimulationPoint.verify|verify} messages.
                         * @param message PercentCpcBidSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IPercentCpcBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PercentCpcBidSimulationPoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PercentCpcBidSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.PercentCpcBidSimulationPoint;

                        /**
                         * Decodes a PercentCpcBidSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PercentCpcBidSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.PercentCpcBidSimulationPoint;

                        /**
                         * Verifies a PercentCpcBidSimulationPoint message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PercentCpcBidSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PercentCpcBidSimulationPoint
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.PercentCpcBidSimulationPoint;

                        /**
                         * Creates a plain object from a PercentCpcBidSimulationPoint message. Also converts values to other types if specified.
                         * @param message PercentCpcBidSimulationPoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.PercentCpcBidSimulationPoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PercentCpcBidSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PercentCpcBidSimulationPoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BudgetSimulationPoint. */
                    interface IBudgetSimulationPoint {

                        /** BudgetSimulationPoint budget_amount_micros */
                        budget_amount_micros?: (number|null);

                        /** BudgetSimulationPoint required_cpc_bid_ceiling_micros */
                        required_cpc_bid_ceiling_micros?: (number|null);

                        /** BudgetSimulationPoint biddable_conversions */
                        biddable_conversions?: (number|null);

                        /** BudgetSimulationPoint biddable_conversions_value */
                        biddable_conversions_value?: (number|null);

                        /** BudgetSimulationPoint clicks */
                        clicks?: (number|null);

                        /** BudgetSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** BudgetSimulationPoint impressions */
                        impressions?: (number|null);

                        /** BudgetSimulationPoint top_slot_impressions */
                        top_slot_impressions?: (number|null);

                        /** BudgetSimulationPoint interactions */
                        interactions?: (number|null);
                    }

                    /** Represents a BudgetSimulationPoint. */
                    class BudgetSimulationPoint implements IBudgetSimulationPoint {

                        /**
                         * Constructs a new BudgetSimulationPoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBudgetSimulationPoint);

                        /** BudgetSimulationPoint budget_amount_micros. */
                        public budget_amount_micros: number;

                        /** BudgetSimulationPoint required_cpc_bid_ceiling_micros. */
                        public required_cpc_bid_ceiling_micros: number;

                        /** BudgetSimulationPoint biddable_conversions. */
                        public biddable_conversions: number;

                        /** BudgetSimulationPoint biddable_conversions_value. */
                        public biddable_conversions_value: number;

                        /** BudgetSimulationPoint clicks. */
                        public clicks: number;

                        /** BudgetSimulationPoint cost_micros. */
                        public cost_micros: number;

                        /** BudgetSimulationPoint impressions. */
                        public impressions: number;

                        /** BudgetSimulationPoint top_slot_impressions. */
                        public top_slot_impressions: number;

                        /** BudgetSimulationPoint interactions. */
                        public interactions: number;

                        /**
                         * Creates a new BudgetSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBudgetSimulationPoint): google.ads.googleads.v23.common.BudgetSimulationPoint;

                        /**
                         * Encodes the specified BudgetSimulationPoint message. Does not implicitly {@link google.ads.googleads.v23.common.BudgetSimulationPoint.verify|verify} messages.
                         * @param message BudgetSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBudgetSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BudgetSimulationPoint.verify|verify} messages.
                         * @param message BudgetSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBudgetSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetSimulationPoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.BudgetSimulationPoint;

                        /**
                         * Decodes a BudgetSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.BudgetSimulationPoint;

                        /**
                         * Verifies a BudgetSimulationPoint message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetSimulationPoint
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.BudgetSimulationPoint;

                        /**
                         * Creates a plain object from a BudgetSimulationPoint message. Also converts values to other types if specified.
                         * @param message BudgetSimulationPoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.BudgetSimulationPoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetSimulationPoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetImpressionShareSimulationPoint. */
                    interface ITargetImpressionShareSimulationPoint {

                        /** TargetImpressionShareSimulationPoint target_impression_share_micros */
                        target_impression_share_micros?: (number|null);

                        /** TargetImpressionShareSimulationPoint required_cpc_bid_ceiling_micros */
                        required_cpc_bid_ceiling_micros?: (number|null);

                        /** TargetImpressionShareSimulationPoint required_budget_amount_micros */
                        required_budget_amount_micros?: (number|null);

                        /** TargetImpressionShareSimulationPoint biddable_conversions */
                        biddable_conversions?: (number|null);

                        /** TargetImpressionShareSimulationPoint biddable_conversions_value */
                        biddable_conversions_value?: (number|null);

                        /** TargetImpressionShareSimulationPoint clicks */
                        clicks?: (number|null);

                        /** TargetImpressionShareSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** TargetImpressionShareSimulationPoint impressions */
                        impressions?: (number|null);

                        /** TargetImpressionShareSimulationPoint top_slot_impressions */
                        top_slot_impressions?: (number|null);

                        /** TargetImpressionShareSimulationPoint absolute_top_impressions */
                        absolute_top_impressions?: (number|null);
                    }

                    /** Represents a TargetImpressionShareSimulationPoint. */
                    class TargetImpressionShareSimulationPoint implements ITargetImpressionShareSimulationPoint {

                        /**
                         * Constructs a new TargetImpressionShareSimulationPoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPoint);

                        /** TargetImpressionShareSimulationPoint target_impression_share_micros. */
                        public target_impression_share_micros: number;

                        /** TargetImpressionShareSimulationPoint required_cpc_bid_ceiling_micros. */
                        public required_cpc_bid_ceiling_micros: number;

                        /** TargetImpressionShareSimulationPoint required_budget_amount_micros. */
                        public required_budget_amount_micros: number;

                        /** TargetImpressionShareSimulationPoint biddable_conversions. */
                        public biddable_conversions: number;

                        /** TargetImpressionShareSimulationPoint biddable_conversions_value. */
                        public biddable_conversions_value: number;

                        /** TargetImpressionShareSimulationPoint clicks. */
                        public clicks: number;

                        /** TargetImpressionShareSimulationPoint cost_micros. */
                        public cost_micros: number;

                        /** TargetImpressionShareSimulationPoint impressions. */
                        public impressions: number;

                        /** TargetImpressionShareSimulationPoint top_slot_impressions. */
                        public top_slot_impressions: number;

                        /** TargetImpressionShareSimulationPoint absolute_top_impressions. */
                        public absolute_top_impressions: number;

                        /**
                         * Creates a new TargetImpressionShareSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetImpressionShareSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPoint): google.ads.googleads.v23.common.TargetImpressionShareSimulationPoint;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPoint message. Does not implicitly {@link google.ads.googleads.v23.common.TargetImpressionShareSimulationPoint.verify|verify} messages.
                         * @param message TargetImpressionShareSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetImpressionShareSimulationPoint.verify|verify} messages.
                         * @param message TargetImpressionShareSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetImpressionShareSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShareSimulationPoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetImpressionShareSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetImpressionShareSimulationPoint;

                        /**
                         * Decodes a TargetImpressionShareSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetImpressionShareSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetImpressionShareSimulationPoint;

                        /**
                         * Verifies a TargetImpressionShareSimulationPoint message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShareSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetImpressionShareSimulationPoint
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetImpressionShareSimulationPoint;

                        /**
                         * Creates a plain object from a TargetImpressionShareSimulationPoint message. Also converts values to other types if specified.
                         * @param message TargetImpressionShareSimulationPoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetImpressionShareSimulationPoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShareSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetImpressionShareSimulationPoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TagSnippet. */
                    interface ITagSnippet {

                        /** TagSnippet type */
                        type?: (google.ads.googleads.v23.enums.TrackingCodeTypeEnum.TrackingCodeType|keyof typeof google.ads.googleads.v23.enums.TrackingCodeTypeEnum.TrackingCodeType|null);

                        /** TagSnippet page_format */
                        page_format?: (google.ads.googleads.v23.enums.TrackingCodePageFormatEnum.TrackingCodePageFormat|keyof typeof google.ads.googleads.v23.enums.TrackingCodePageFormatEnum.TrackingCodePageFormat|null);

                        /** TagSnippet global_site_tag */
                        global_site_tag?: (string|null);

                        /** TagSnippet event_snippet */
                        event_snippet?: (string|null);
                    }

                    /** Represents a TagSnippet. */
                    class TagSnippet implements ITagSnippet {

                        /**
                         * Constructs a new TagSnippet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITagSnippet);

                        /** TagSnippet type. */
                        public type: (google.ads.googleads.v23.enums.TrackingCodeTypeEnum.TrackingCodeType|keyof typeof google.ads.googleads.v23.enums.TrackingCodeTypeEnum.TrackingCodeType);

                        /** TagSnippet page_format. */
                        public page_format: (google.ads.googleads.v23.enums.TrackingCodePageFormatEnum.TrackingCodePageFormat|keyof typeof google.ads.googleads.v23.enums.TrackingCodePageFormatEnum.TrackingCodePageFormat);

                        /** TagSnippet global_site_tag. */
                        public global_site_tag?: (string|null);

                        /** TagSnippet event_snippet. */
                        public event_snippet?: (string|null);

                        /**
                         * Creates a new TagSnippet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TagSnippet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITagSnippet): google.ads.googleads.v23.common.TagSnippet;

                        /**
                         * Encodes the specified TagSnippet message. Does not implicitly {@link google.ads.googleads.v23.common.TagSnippet.verify|verify} messages.
                         * @param message TagSnippet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITagSnippet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TagSnippet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TagSnippet.verify|verify} messages.
                         * @param message TagSnippet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITagSnippet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TagSnippet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TagSnippet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TagSnippet;

                        /**
                         * Decodes a TagSnippet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TagSnippet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TagSnippet;

                        /**
                         * Verifies a TagSnippet message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TagSnippet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TagSnippet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TagSnippet;

                        /**
                         * Creates a plain object from a TagSnippet message. Also converts values to other types if specified.
                         * @param message TagSnippet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TagSnippet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TagSnippet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TagSnippet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetingSetting. */
                    interface ITargetingSetting {

                        /** TargetingSetting target_restrictions */
                        target_restrictions?: (google.ads.googleads.v23.common.ITargetRestriction[]|null);

                        /** TargetingSetting target_restriction_operations */
                        target_restriction_operations?: (google.ads.googleads.v23.common.ITargetRestrictionOperation[]|null);
                    }

                    /** Represents a TargetingSetting. */
                    class TargetingSetting implements ITargetingSetting {

                        /**
                         * Constructs a new TargetingSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetingSetting);

                        /** TargetingSetting target_restrictions. */
                        public target_restrictions: google.ads.googleads.v23.common.ITargetRestriction[];

                        /** TargetingSetting target_restriction_operations. */
                        public target_restriction_operations: google.ads.googleads.v23.common.ITargetRestrictionOperation[];

                        /**
                         * Creates a new TargetingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetingSetting): google.ads.googleads.v23.common.TargetingSetting;

                        /**
                         * Encodes the specified TargetingSetting message. Does not implicitly {@link google.ads.googleads.v23.common.TargetingSetting.verify|verify} messages.
                         * @param message TargetingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetingSetting.verify|verify} messages.
                         * @param message TargetingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetingSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetingSetting;

                        /**
                         * Decodes a TargetingSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetingSetting;

                        /**
                         * Verifies a TargetingSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetingSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetingSetting;

                        /**
                         * Creates a plain object from a TargetingSetting message. Also converts values to other types if specified.
                         * @param message TargetingSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetingSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetingSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetRestriction. */
                    interface ITargetRestriction {

                        /** TargetRestriction targeting_dimension */
                        targeting_dimension?: (google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension|null);

                        /** TargetRestriction bid_only */
                        bid_only?: (boolean|null);
                    }

                    /** Represents a TargetRestriction. */
                    class TargetRestriction implements ITargetRestriction {

                        /**
                         * Constructs a new TargetRestriction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetRestriction);

                        /** TargetRestriction targeting_dimension. */
                        public targeting_dimension: (google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension);

                        /** TargetRestriction bid_only. */
                        public bid_only?: (boolean|null);

                        /**
                         * Creates a new TargetRestriction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRestriction instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetRestriction): google.ads.googleads.v23.common.TargetRestriction;

                        /**
                         * Encodes the specified TargetRestriction message. Does not implicitly {@link google.ads.googleads.v23.common.TargetRestriction.verify|verify} messages.
                         * @param message TargetRestriction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetRestriction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRestriction message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetRestriction.verify|verify} messages.
                         * @param message TargetRestriction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetRestriction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRestriction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetRestriction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetRestriction;

                        /**
                         * Decodes a TargetRestriction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetRestriction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetRestriction;

                        /**
                         * Verifies a TargetRestriction message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRestriction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetRestriction
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetRestriction;

                        /**
                         * Creates a plain object from a TargetRestriction message. Also converts values to other types if specified.
                         * @param message TargetRestriction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetRestriction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRestriction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetRestriction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetRestrictionOperation. */
                    interface ITargetRestrictionOperation {

                        /** TargetRestrictionOperation operator */
                        operator?: (google.ads.googleads.v23.common.TargetRestrictionOperation.Operator|keyof typeof google.ads.googleads.v23.common.TargetRestrictionOperation.Operator|null);

                        /** TargetRestrictionOperation value */
                        value?: (google.ads.googleads.v23.common.ITargetRestriction|null);
                    }

                    /** Represents a TargetRestrictionOperation. */
                    class TargetRestrictionOperation implements ITargetRestrictionOperation {

                        /**
                         * Constructs a new TargetRestrictionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITargetRestrictionOperation);

                        /** TargetRestrictionOperation operator. */
                        public operator: (google.ads.googleads.v23.common.TargetRestrictionOperation.Operator|keyof typeof google.ads.googleads.v23.common.TargetRestrictionOperation.Operator);

                        /** TargetRestrictionOperation value. */
                        public value?: (google.ads.googleads.v23.common.ITargetRestriction|null);

                        /**
                         * Creates a new TargetRestrictionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRestrictionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITargetRestrictionOperation): google.ads.googleads.v23.common.TargetRestrictionOperation;

                        /**
                         * Encodes the specified TargetRestrictionOperation message. Does not implicitly {@link google.ads.googleads.v23.common.TargetRestrictionOperation.verify|verify} messages.
                         * @param message TargetRestrictionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITargetRestrictionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRestrictionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TargetRestrictionOperation.verify|verify} messages.
                         * @param message TargetRestrictionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITargetRestrictionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRestrictionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetRestrictionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TargetRestrictionOperation;

                        /**
                         * Decodes a TargetRestrictionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetRestrictionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TargetRestrictionOperation;

                        /**
                         * Verifies a TargetRestrictionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRestrictionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetRestrictionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TargetRestrictionOperation;

                        /**
                         * Creates a plain object from a TargetRestrictionOperation message. Also converts values to other types if specified.
                         * @param message TargetRestrictionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TargetRestrictionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRestrictionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetRestrictionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TargetRestrictionOperation {

                        /** Operator enum. */
                        enum Operator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADD = 2,
                            REMOVE = 3
                        }
                    }

                    /** Properties of a TextLabel. */
                    interface ITextLabel {

                        /** TextLabel background_color */
                        background_color?: (string|null);

                        /** TextLabel description */
                        description?: (string|null);
                    }

                    /** Represents a TextLabel. */
                    class TextLabel implements ITextLabel {

                        /**
                         * Constructs a new TextLabel.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ITextLabel);

                        /** TextLabel background_color. */
                        public background_color?: (string|null);

                        /** TextLabel description. */
                        public description?: (string|null);

                        /**
                         * Creates a new TextLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TextLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ITextLabel): google.ads.googleads.v23.common.TextLabel;

                        /**
                         * Encodes the specified TextLabel message. Does not implicitly {@link google.ads.googleads.v23.common.TextLabel.verify|verify} messages.
                         * @param message TextLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ITextLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TextLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.TextLabel.verify|verify} messages.
                         * @param message TextLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ITextLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TextLabel message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TextLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.TextLabel;

                        /**
                         * Decodes a TextLabel message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TextLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.TextLabel;

                        /**
                         * Verifies a TextLabel message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TextLabel message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TextLabel
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.TextLabel;

                        /**
                         * Creates a plain object from a TextLabel message. Also converts values to other types if specified.
                         * @param message TextLabel
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.TextLabel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TextLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TextLabel
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerThirdPartyIntegrationPartners. */
                    interface ICustomerThirdPartyIntegrationPartners {

                        /** CustomerThirdPartyIntegrationPartners viewability_integration_partners */
                        viewability_integration_partners?: (google.ads.googleads.v23.common.ICustomerThirdPartyViewabilityIntegrationPartner[]|null);

                        /** CustomerThirdPartyIntegrationPartners brand_lift_integration_partners */
                        brand_lift_integration_partners?: (google.ads.googleads.v23.common.ICustomerThirdPartyBrandLiftIntegrationPartner[]|null);

                        /** CustomerThirdPartyIntegrationPartners brand_safety_integration_partners */
                        brand_safety_integration_partners?: (google.ads.googleads.v23.common.ICustomerThirdPartyBrandSafetyIntegrationPartner[]|null);

                        /** CustomerThirdPartyIntegrationPartners reach_integration_partners */
                        reach_integration_partners?: (google.ads.googleads.v23.common.ICustomerThirdPartyReachIntegrationPartner[]|null);
                    }

                    /** Represents a CustomerThirdPartyIntegrationPartners. */
                    class CustomerThirdPartyIntegrationPartners implements ICustomerThirdPartyIntegrationPartners {

                        /**
                         * Constructs a new CustomerThirdPartyIntegrationPartners.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyIntegrationPartners);

                        /** CustomerThirdPartyIntegrationPartners viewability_integration_partners. */
                        public viewability_integration_partners: google.ads.googleads.v23.common.ICustomerThirdPartyViewabilityIntegrationPartner[];

                        /** CustomerThirdPartyIntegrationPartners brand_lift_integration_partners. */
                        public brand_lift_integration_partners: google.ads.googleads.v23.common.ICustomerThirdPartyBrandLiftIntegrationPartner[];

                        /** CustomerThirdPartyIntegrationPartners brand_safety_integration_partners. */
                        public brand_safety_integration_partners: google.ads.googleads.v23.common.ICustomerThirdPartyBrandSafetyIntegrationPartner[];

                        /** CustomerThirdPartyIntegrationPartners reach_integration_partners. */
                        public reach_integration_partners: google.ads.googleads.v23.common.ICustomerThirdPartyReachIntegrationPartner[];

                        /**
                         * Creates a new CustomerThirdPartyIntegrationPartners instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerThirdPartyIntegrationPartners instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyIntegrationPartners): google.ads.googleads.v23.common.CustomerThirdPartyIntegrationPartners;

                        /**
                         * Encodes the specified CustomerThirdPartyIntegrationPartners message. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyIntegrationPartners.verify|verify} messages.
                         * @param message CustomerThirdPartyIntegrationPartners message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomerThirdPartyIntegrationPartners, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerThirdPartyIntegrationPartners message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyIntegrationPartners.verify|verify} messages.
                         * @param message CustomerThirdPartyIntegrationPartners message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomerThirdPartyIntegrationPartners, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerThirdPartyIntegrationPartners message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerThirdPartyIntegrationPartners
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomerThirdPartyIntegrationPartners;

                        /**
                         * Decodes a CustomerThirdPartyIntegrationPartners message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerThirdPartyIntegrationPartners
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomerThirdPartyIntegrationPartners;

                        /**
                         * Verifies a CustomerThirdPartyIntegrationPartners message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerThirdPartyIntegrationPartners message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerThirdPartyIntegrationPartners
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomerThirdPartyIntegrationPartners;

                        /**
                         * Creates a plain object from a CustomerThirdPartyIntegrationPartners message. Also converts values to other types if specified.
                         * @param message CustomerThirdPartyIntegrationPartners
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomerThirdPartyIntegrationPartners, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerThirdPartyIntegrationPartners to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerThirdPartyIntegrationPartners
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerThirdPartyViewabilityIntegrationPartner. */
                    interface ICustomerThirdPartyViewabilityIntegrationPartner {

                        /** CustomerThirdPartyViewabilityIntegrationPartner viewability_integration_partner */
                        viewability_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner|null);

                        /** CustomerThirdPartyViewabilityIntegrationPartner allow_share_cost */
                        allow_share_cost?: (boolean|null);
                    }

                    /** Represents a CustomerThirdPartyViewabilityIntegrationPartner. */
                    class CustomerThirdPartyViewabilityIntegrationPartner implements ICustomerThirdPartyViewabilityIntegrationPartner {

                        /**
                         * Constructs a new CustomerThirdPartyViewabilityIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyViewabilityIntegrationPartner);

                        /** CustomerThirdPartyViewabilityIntegrationPartner viewability_integration_partner. */
                        public viewability_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner);

                        /** CustomerThirdPartyViewabilityIntegrationPartner allow_share_cost. */
                        public allow_share_cost: boolean;

                        /**
                         * Creates a new CustomerThirdPartyViewabilityIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerThirdPartyViewabilityIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyViewabilityIntegrationPartner): google.ads.googleads.v23.common.CustomerThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Encodes the specified CustomerThirdPartyViewabilityIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyViewabilityIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyViewabilityIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomerThirdPartyViewabilityIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerThirdPartyViewabilityIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyViewabilityIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyViewabilityIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomerThirdPartyViewabilityIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerThirdPartyViewabilityIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerThirdPartyViewabilityIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomerThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Decodes a CustomerThirdPartyViewabilityIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerThirdPartyViewabilityIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomerThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Verifies a CustomerThirdPartyViewabilityIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerThirdPartyViewabilityIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerThirdPartyViewabilityIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomerThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Creates a plain object from a CustomerThirdPartyViewabilityIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CustomerThirdPartyViewabilityIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomerThirdPartyViewabilityIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerThirdPartyViewabilityIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerThirdPartyViewabilityIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerThirdPartyBrandSafetyIntegrationPartner. */
                    interface ICustomerThirdPartyBrandSafetyIntegrationPartner {

                        /** CustomerThirdPartyBrandSafetyIntegrationPartner brand_safety_integration_partner */
                        brand_safety_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner|null);
                    }

                    /** Represents a CustomerThirdPartyBrandSafetyIntegrationPartner. */
                    class CustomerThirdPartyBrandSafetyIntegrationPartner implements ICustomerThirdPartyBrandSafetyIntegrationPartner {

                        /**
                         * Constructs a new CustomerThirdPartyBrandSafetyIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyBrandSafetyIntegrationPartner);

                        /** CustomerThirdPartyBrandSafetyIntegrationPartner brand_safety_integration_partner. */
                        public brand_safety_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner);

                        /**
                         * Creates a new CustomerThirdPartyBrandSafetyIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerThirdPartyBrandSafetyIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyBrandSafetyIntegrationPartner): google.ads.googleads.v23.common.CustomerThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Encodes the specified CustomerThirdPartyBrandSafetyIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyBrandSafetyIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyBrandSafetyIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomerThirdPartyBrandSafetyIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerThirdPartyBrandSafetyIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyBrandSafetyIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyBrandSafetyIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomerThirdPartyBrandSafetyIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerThirdPartyBrandSafetyIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerThirdPartyBrandSafetyIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomerThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Decodes a CustomerThirdPartyBrandSafetyIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerThirdPartyBrandSafetyIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomerThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Verifies a CustomerThirdPartyBrandSafetyIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerThirdPartyBrandSafetyIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerThirdPartyBrandSafetyIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomerThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Creates a plain object from a CustomerThirdPartyBrandSafetyIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CustomerThirdPartyBrandSafetyIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomerThirdPartyBrandSafetyIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerThirdPartyBrandSafetyIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerThirdPartyBrandSafetyIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerThirdPartyBrandLiftIntegrationPartner. */
                    interface ICustomerThirdPartyBrandLiftIntegrationPartner {

                        /** CustomerThirdPartyBrandLiftIntegrationPartner brand_lift_integration_partner */
                        brand_lift_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner|null);

                        /** CustomerThirdPartyBrandLiftIntegrationPartner allow_share_cost */
                        allow_share_cost?: (boolean|null);
                    }

                    /** Represents a CustomerThirdPartyBrandLiftIntegrationPartner. */
                    class CustomerThirdPartyBrandLiftIntegrationPartner implements ICustomerThirdPartyBrandLiftIntegrationPartner {

                        /**
                         * Constructs a new CustomerThirdPartyBrandLiftIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyBrandLiftIntegrationPartner);

                        /** CustomerThirdPartyBrandLiftIntegrationPartner brand_lift_integration_partner. */
                        public brand_lift_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner);

                        /** CustomerThirdPartyBrandLiftIntegrationPartner allow_share_cost. */
                        public allow_share_cost: boolean;

                        /**
                         * Creates a new CustomerThirdPartyBrandLiftIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerThirdPartyBrandLiftIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyBrandLiftIntegrationPartner): google.ads.googleads.v23.common.CustomerThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Encodes the specified CustomerThirdPartyBrandLiftIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyBrandLiftIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyBrandLiftIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomerThirdPartyBrandLiftIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerThirdPartyBrandLiftIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyBrandLiftIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyBrandLiftIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomerThirdPartyBrandLiftIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerThirdPartyBrandLiftIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerThirdPartyBrandLiftIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomerThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Decodes a CustomerThirdPartyBrandLiftIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerThirdPartyBrandLiftIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomerThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Verifies a CustomerThirdPartyBrandLiftIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerThirdPartyBrandLiftIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerThirdPartyBrandLiftIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomerThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Creates a plain object from a CustomerThirdPartyBrandLiftIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CustomerThirdPartyBrandLiftIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomerThirdPartyBrandLiftIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerThirdPartyBrandLiftIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerThirdPartyBrandLiftIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerThirdPartyReachIntegrationPartner. */
                    interface ICustomerThirdPartyReachIntegrationPartner {

                        /** CustomerThirdPartyReachIntegrationPartner reach_integration_partner */
                        reach_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner|null);

                        /** CustomerThirdPartyReachIntegrationPartner allow_share_cost */
                        allow_share_cost?: (boolean|null);
                    }

                    /** Represents a CustomerThirdPartyReachIntegrationPartner. */
                    class CustomerThirdPartyReachIntegrationPartner implements ICustomerThirdPartyReachIntegrationPartner {

                        /**
                         * Constructs a new CustomerThirdPartyReachIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyReachIntegrationPartner);

                        /** CustomerThirdPartyReachIntegrationPartner reach_integration_partner. */
                        public reach_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner);

                        /** CustomerThirdPartyReachIntegrationPartner allow_share_cost. */
                        public allow_share_cost: boolean;

                        /**
                         * Creates a new CustomerThirdPartyReachIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerThirdPartyReachIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICustomerThirdPartyReachIntegrationPartner): google.ads.googleads.v23.common.CustomerThirdPartyReachIntegrationPartner;

                        /**
                         * Encodes the specified CustomerThirdPartyReachIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyReachIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyReachIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICustomerThirdPartyReachIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerThirdPartyReachIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CustomerThirdPartyReachIntegrationPartner.verify|verify} messages.
                         * @param message CustomerThirdPartyReachIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICustomerThirdPartyReachIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerThirdPartyReachIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerThirdPartyReachIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CustomerThirdPartyReachIntegrationPartner;

                        /**
                         * Decodes a CustomerThirdPartyReachIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerThirdPartyReachIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CustomerThirdPartyReachIntegrationPartner;

                        /**
                         * Verifies a CustomerThirdPartyReachIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerThirdPartyReachIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerThirdPartyReachIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CustomerThirdPartyReachIntegrationPartner;

                        /**
                         * Creates a plain object from a CustomerThirdPartyReachIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CustomerThirdPartyReachIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CustomerThirdPartyReachIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerThirdPartyReachIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerThirdPartyReachIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignThirdPartyIntegrationPartners. */
                    interface ICampaignThirdPartyIntegrationPartners {

                        /** CampaignThirdPartyIntegrationPartners viewability_integration_partners */
                        viewability_integration_partners?: (google.ads.googleads.v23.common.ICampaignThirdPartyViewabilityIntegrationPartner[]|null);

                        /** CampaignThirdPartyIntegrationPartners brand_lift_integration_partners */
                        brand_lift_integration_partners?: (google.ads.googleads.v23.common.ICampaignThirdPartyBrandLiftIntegrationPartner[]|null);

                        /** CampaignThirdPartyIntegrationPartners brand_safety_integration_partners */
                        brand_safety_integration_partners?: (google.ads.googleads.v23.common.ICampaignThirdPartyBrandSafetyIntegrationPartner[]|null);

                        /** CampaignThirdPartyIntegrationPartners reach_integration_partners */
                        reach_integration_partners?: (google.ads.googleads.v23.common.ICampaignThirdPartyReachIntegrationPartner[]|null);
                    }

                    /** Represents a CampaignThirdPartyIntegrationPartners. */
                    class CampaignThirdPartyIntegrationPartners implements ICampaignThirdPartyIntegrationPartners {

                        /**
                         * Constructs a new CampaignThirdPartyIntegrationPartners.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyIntegrationPartners);

                        /** CampaignThirdPartyIntegrationPartners viewability_integration_partners. */
                        public viewability_integration_partners: google.ads.googleads.v23.common.ICampaignThirdPartyViewabilityIntegrationPartner[];

                        /** CampaignThirdPartyIntegrationPartners brand_lift_integration_partners. */
                        public brand_lift_integration_partners: google.ads.googleads.v23.common.ICampaignThirdPartyBrandLiftIntegrationPartner[];

                        /** CampaignThirdPartyIntegrationPartners brand_safety_integration_partners. */
                        public brand_safety_integration_partners: google.ads.googleads.v23.common.ICampaignThirdPartyBrandSafetyIntegrationPartner[];

                        /** CampaignThirdPartyIntegrationPartners reach_integration_partners. */
                        public reach_integration_partners: google.ads.googleads.v23.common.ICampaignThirdPartyReachIntegrationPartner[];

                        /**
                         * Creates a new CampaignThirdPartyIntegrationPartners instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignThirdPartyIntegrationPartners instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyIntegrationPartners): google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners;

                        /**
                         * Encodes the specified CampaignThirdPartyIntegrationPartners message. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners.verify|verify} messages.
                         * @param message CampaignThirdPartyIntegrationPartners message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICampaignThirdPartyIntegrationPartners, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignThirdPartyIntegrationPartners message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners.verify|verify} messages.
                         * @param message CampaignThirdPartyIntegrationPartners message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICampaignThirdPartyIntegrationPartners, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignThirdPartyIntegrationPartners message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignThirdPartyIntegrationPartners
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners;

                        /**
                         * Decodes a CampaignThirdPartyIntegrationPartners message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignThirdPartyIntegrationPartners
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners;

                        /**
                         * Verifies a CampaignThirdPartyIntegrationPartners message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignThirdPartyIntegrationPartners message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignThirdPartyIntegrationPartners
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners;

                        /**
                         * Creates a plain object from a CampaignThirdPartyIntegrationPartners message. Also converts values to other types if specified.
                         * @param message CampaignThirdPartyIntegrationPartners
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignThirdPartyIntegrationPartners to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignThirdPartyIntegrationPartners
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignThirdPartyViewabilityIntegrationPartner. */
                    interface ICampaignThirdPartyViewabilityIntegrationPartner {

                        /** CampaignThirdPartyViewabilityIntegrationPartner viewability_integration_partner */
                        viewability_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner|null);

                        /** CampaignThirdPartyViewabilityIntegrationPartner viewability_integration_partner_data */
                        viewability_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);

                        /** CampaignThirdPartyViewabilityIntegrationPartner share_cost */
                        share_cost?: (boolean|null);
                    }

                    /** Represents a CampaignThirdPartyViewabilityIntegrationPartner. */
                    class CampaignThirdPartyViewabilityIntegrationPartner implements ICampaignThirdPartyViewabilityIntegrationPartner {

                        /**
                         * Constructs a new CampaignThirdPartyViewabilityIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyViewabilityIntegrationPartner);

                        /** CampaignThirdPartyViewabilityIntegrationPartner viewability_integration_partner. */
                        public viewability_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.ThirdPartyViewabilityIntegrationPartner);

                        /** CampaignThirdPartyViewabilityIntegrationPartner viewability_integration_partner_data. */
                        public viewability_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);

                        /** CampaignThirdPartyViewabilityIntegrationPartner share_cost. */
                        public share_cost: boolean;

                        /**
                         * Creates a new CampaignThirdPartyViewabilityIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignThirdPartyViewabilityIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyViewabilityIntegrationPartner): google.ads.googleads.v23.common.CampaignThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Encodes the specified CampaignThirdPartyViewabilityIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyViewabilityIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyViewabilityIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICampaignThirdPartyViewabilityIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignThirdPartyViewabilityIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyViewabilityIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyViewabilityIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICampaignThirdPartyViewabilityIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignThirdPartyViewabilityIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignThirdPartyViewabilityIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CampaignThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Decodes a CampaignThirdPartyViewabilityIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignThirdPartyViewabilityIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CampaignThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Verifies a CampaignThirdPartyViewabilityIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignThirdPartyViewabilityIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignThirdPartyViewabilityIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CampaignThirdPartyViewabilityIntegrationPartner;

                        /**
                         * Creates a plain object from a CampaignThirdPartyViewabilityIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CampaignThirdPartyViewabilityIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CampaignThirdPartyViewabilityIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignThirdPartyViewabilityIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignThirdPartyViewabilityIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignThirdPartyBrandSafetyIntegrationPartner. */
                    interface ICampaignThirdPartyBrandSafetyIntegrationPartner {

                        /** CampaignThirdPartyBrandSafetyIntegrationPartner brand_safety_integration_partner */
                        brand_safety_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner|null);

                        /** CampaignThirdPartyBrandSafetyIntegrationPartner brand_safety_integration_partner_data */
                        brand_safety_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);
                    }

                    /** Represents a CampaignThirdPartyBrandSafetyIntegrationPartner. */
                    class CampaignThirdPartyBrandSafetyIntegrationPartner implements ICampaignThirdPartyBrandSafetyIntegrationPartner {

                        /**
                         * Constructs a new CampaignThirdPartyBrandSafetyIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyBrandSafetyIntegrationPartner);

                        /** CampaignThirdPartyBrandSafetyIntegrationPartner brand_safety_integration_partner. */
                        public brand_safety_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.ThirdPartyBrandSafetyIntegrationPartner);

                        /** CampaignThirdPartyBrandSafetyIntegrationPartner brand_safety_integration_partner_data. */
                        public brand_safety_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);

                        /**
                         * Creates a new CampaignThirdPartyBrandSafetyIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignThirdPartyBrandSafetyIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyBrandSafetyIntegrationPartner): google.ads.googleads.v23.common.CampaignThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Encodes the specified CampaignThirdPartyBrandSafetyIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyBrandSafetyIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyBrandSafetyIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICampaignThirdPartyBrandSafetyIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignThirdPartyBrandSafetyIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyBrandSafetyIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyBrandSafetyIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICampaignThirdPartyBrandSafetyIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignThirdPartyBrandSafetyIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignThirdPartyBrandSafetyIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CampaignThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Decodes a CampaignThirdPartyBrandSafetyIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignThirdPartyBrandSafetyIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CampaignThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Verifies a CampaignThirdPartyBrandSafetyIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignThirdPartyBrandSafetyIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignThirdPartyBrandSafetyIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CampaignThirdPartyBrandSafetyIntegrationPartner;

                        /**
                         * Creates a plain object from a CampaignThirdPartyBrandSafetyIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CampaignThirdPartyBrandSafetyIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CampaignThirdPartyBrandSafetyIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignThirdPartyBrandSafetyIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignThirdPartyBrandSafetyIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignThirdPartyBrandLiftIntegrationPartner. */
                    interface ICampaignThirdPartyBrandLiftIntegrationPartner {

                        /** CampaignThirdPartyBrandLiftIntegrationPartner brand_lift_integration_partner */
                        brand_lift_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner|null);

                        /** CampaignThirdPartyBrandLiftIntegrationPartner brand_lift_integration_partner_data */
                        brand_lift_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);

                        /** CampaignThirdPartyBrandLiftIntegrationPartner share_cost */
                        share_cost?: (boolean|null);
                    }

                    /** Represents a CampaignThirdPartyBrandLiftIntegrationPartner. */
                    class CampaignThirdPartyBrandLiftIntegrationPartner implements ICampaignThirdPartyBrandLiftIntegrationPartner {

                        /**
                         * Constructs a new CampaignThirdPartyBrandLiftIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyBrandLiftIntegrationPartner);

                        /** CampaignThirdPartyBrandLiftIntegrationPartner brand_lift_integration_partner. */
                        public brand_lift_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.ThirdPartyBrandLiftIntegrationPartner);

                        /** CampaignThirdPartyBrandLiftIntegrationPartner brand_lift_integration_partner_data. */
                        public brand_lift_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);

                        /** CampaignThirdPartyBrandLiftIntegrationPartner share_cost. */
                        public share_cost: boolean;

                        /**
                         * Creates a new CampaignThirdPartyBrandLiftIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignThirdPartyBrandLiftIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyBrandLiftIntegrationPartner): google.ads.googleads.v23.common.CampaignThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Encodes the specified CampaignThirdPartyBrandLiftIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyBrandLiftIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyBrandLiftIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICampaignThirdPartyBrandLiftIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignThirdPartyBrandLiftIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyBrandLiftIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyBrandLiftIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICampaignThirdPartyBrandLiftIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignThirdPartyBrandLiftIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignThirdPartyBrandLiftIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CampaignThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Decodes a CampaignThirdPartyBrandLiftIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignThirdPartyBrandLiftIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CampaignThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Verifies a CampaignThirdPartyBrandLiftIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignThirdPartyBrandLiftIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignThirdPartyBrandLiftIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CampaignThirdPartyBrandLiftIntegrationPartner;

                        /**
                         * Creates a plain object from a CampaignThirdPartyBrandLiftIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CampaignThirdPartyBrandLiftIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CampaignThirdPartyBrandLiftIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignThirdPartyBrandLiftIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignThirdPartyBrandLiftIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignThirdPartyReachIntegrationPartner. */
                    interface ICampaignThirdPartyReachIntegrationPartner {

                        /** CampaignThirdPartyReachIntegrationPartner reach_integration_partner */
                        reach_integration_partner?: (google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner|null);

                        /** CampaignThirdPartyReachIntegrationPartner reach_integration_partner_data */
                        reach_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);

                        /** CampaignThirdPartyReachIntegrationPartner share_cost */
                        share_cost?: (boolean|null);
                    }

                    /** Represents a CampaignThirdPartyReachIntegrationPartner. */
                    class CampaignThirdPartyReachIntegrationPartner implements ICampaignThirdPartyReachIntegrationPartner {

                        /**
                         * Constructs a new CampaignThirdPartyReachIntegrationPartner.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyReachIntegrationPartner);

                        /** CampaignThirdPartyReachIntegrationPartner reach_integration_partner. */
                        public reach_integration_partner: (google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner|keyof typeof google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.ThirdPartyReachIntegrationPartner);

                        /** CampaignThirdPartyReachIntegrationPartner reach_integration_partner_data. */
                        public reach_integration_partner_data?: (google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData|null);

                        /** CampaignThirdPartyReachIntegrationPartner share_cost. */
                        public share_cost: boolean;

                        /**
                         * Creates a new CampaignThirdPartyReachIntegrationPartner instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignThirdPartyReachIntegrationPartner instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICampaignThirdPartyReachIntegrationPartner): google.ads.googleads.v23.common.CampaignThirdPartyReachIntegrationPartner;

                        /**
                         * Encodes the specified CampaignThirdPartyReachIntegrationPartner message. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyReachIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyReachIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICampaignThirdPartyReachIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignThirdPartyReachIntegrationPartner message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CampaignThirdPartyReachIntegrationPartner.verify|verify} messages.
                         * @param message CampaignThirdPartyReachIntegrationPartner message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICampaignThirdPartyReachIntegrationPartner, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignThirdPartyReachIntegrationPartner message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignThirdPartyReachIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CampaignThirdPartyReachIntegrationPartner;

                        /**
                         * Decodes a CampaignThirdPartyReachIntegrationPartner message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignThirdPartyReachIntegrationPartner
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CampaignThirdPartyReachIntegrationPartner;

                        /**
                         * Verifies a CampaignThirdPartyReachIntegrationPartner message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignThirdPartyReachIntegrationPartner message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignThirdPartyReachIntegrationPartner
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CampaignThirdPartyReachIntegrationPartner;

                        /**
                         * Creates a plain object from a CampaignThirdPartyReachIntegrationPartner message. Also converts values to other types if specified.
                         * @param message CampaignThirdPartyReachIntegrationPartner
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CampaignThirdPartyReachIntegrationPartner, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignThirdPartyReachIntegrationPartner to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignThirdPartyReachIntegrationPartner
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ThirdPartyIntegrationPartnerData. */
                    interface IThirdPartyIntegrationPartnerData {

                        /** ThirdPartyIntegrationPartnerData client_id */
                        client_id?: (string|null);

                        /** ThirdPartyIntegrationPartnerData third_party_placement_id */
                        third_party_placement_id?: (string|null);
                    }

                    /** Represents a ThirdPartyIntegrationPartnerData. */
                    class ThirdPartyIntegrationPartnerData implements IThirdPartyIntegrationPartnerData {

                        /**
                         * Constructs a new ThirdPartyIntegrationPartnerData.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData);

                        /** ThirdPartyIntegrationPartnerData client_id. */
                        public client_id: string;

                        /** ThirdPartyIntegrationPartnerData third_party_placement_id. */
                        public third_party_placement_id: string;

                        /**
                         * Creates a new ThirdPartyIntegrationPartnerData instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyIntegrationPartnerData instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData): google.ads.googleads.v23.common.ThirdPartyIntegrationPartnerData;

                        /**
                         * Encodes the specified ThirdPartyIntegrationPartnerData message. Does not implicitly {@link google.ads.googleads.v23.common.ThirdPartyIntegrationPartnerData.verify|verify} messages.
                         * @param message ThirdPartyIntegrationPartnerData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyIntegrationPartnerData message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.ThirdPartyIntegrationPartnerData.verify|verify} messages.
                         * @param message ThirdPartyIntegrationPartnerData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IThirdPartyIntegrationPartnerData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyIntegrationPartnerData message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyIntegrationPartnerData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.ThirdPartyIntegrationPartnerData;

                        /**
                         * Decodes a ThirdPartyIntegrationPartnerData message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyIntegrationPartnerData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.ThirdPartyIntegrationPartnerData;

                        /**
                         * Verifies a ThirdPartyIntegrationPartnerData message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyIntegrationPartnerData message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyIntegrationPartnerData
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.ThirdPartyIntegrationPartnerData;

                        /**
                         * Creates a plain object from a ThirdPartyIntegrationPartnerData message. Also converts values to other types if specified.
                         * @param message ThirdPartyIntegrationPartnerData
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.ThirdPartyIntegrationPartnerData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyIntegrationPartnerData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyIntegrationPartnerData
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UrlCollection. */
                    interface IUrlCollection {

                        /** UrlCollection url_collection_id */
                        url_collection_id?: (string|null);

                        /** UrlCollection final_urls */
                        final_urls?: (string[]|null);

                        /** UrlCollection final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** UrlCollection tracking_url_template */
                        tracking_url_template?: (string|null);
                    }

                    /** Represents an UrlCollection. */
                    class UrlCollection implements IUrlCollection {

                        /**
                         * Constructs a new UrlCollection.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUrlCollection);

                        /** UrlCollection url_collection_id. */
                        public url_collection_id?: (string|null);

                        /** UrlCollection final_urls. */
                        public final_urls: string[];

                        /** UrlCollection final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** UrlCollection tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /**
                         * Creates a new UrlCollection instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UrlCollection instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUrlCollection): google.ads.googleads.v23.common.UrlCollection;

                        /**
                         * Encodes the specified UrlCollection message. Does not implicitly {@link google.ads.googleads.v23.common.UrlCollection.verify|verify} messages.
                         * @param message UrlCollection message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUrlCollection, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UrlCollection message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UrlCollection.verify|verify} messages.
                         * @param message UrlCollection message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUrlCollection, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UrlCollection message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UrlCollection
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UrlCollection;

                        /**
                         * Decodes an UrlCollection message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UrlCollection
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UrlCollection;

                        /**
                         * Verifies an UrlCollection message.
                         * @param message Plain 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 UrlCollection message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UrlCollection
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UrlCollection;

                        /**
                         * Creates a plain object from an UrlCollection message. Also converts values to other types if specified.
                         * @param message UrlCollection
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UrlCollection, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UrlCollection to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UrlCollection
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LookalikeUserListInfo. */
                    interface ILookalikeUserListInfo {

                        /** LookalikeUserListInfo seed_user_list_ids */
                        seed_user_list_ids?: (number[]|null);

                        /** LookalikeUserListInfo expansion_level */
                        expansion_level?: (google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum.LookalikeExpansionLevel|keyof typeof google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum.LookalikeExpansionLevel|null);

                        /** LookalikeUserListInfo country_codes */
                        country_codes?: (string[]|null);
                    }

                    /** Represents a LookalikeUserListInfo. */
                    class LookalikeUserListInfo implements ILookalikeUserListInfo {

                        /**
                         * Constructs a new LookalikeUserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILookalikeUserListInfo);

                        /** LookalikeUserListInfo seed_user_list_ids. */
                        public seed_user_list_ids: number[];

                        /** LookalikeUserListInfo expansion_level. */
                        public expansion_level: (google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum.LookalikeExpansionLevel|keyof typeof google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum.LookalikeExpansionLevel);

                        /** LookalikeUserListInfo country_codes. */
                        public country_codes: string[];

                        /**
                         * Creates a new LookalikeUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LookalikeUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILookalikeUserListInfo): google.ads.googleads.v23.common.LookalikeUserListInfo;

                        /**
                         * Encodes the specified LookalikeUserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LookalikeUserListInfo.verify|verify} messages.
                         * @param message LookalikeUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILookalikeUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LookalikeUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LookalikeUserListInfo.verify|verify} messages.
                         * @param message LookalikeUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILookalikeUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LookalikeUserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LookalikeUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LookalikeUserListInfo;

                        /**
                         * Decodes a LookalikeUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LookalikeUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LookalikeUserListInfo;

                        /**
                         * Verifies a LookalikeUserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LookalikeUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LookalikeUserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LookalikeUserListInfo;

                        /**
                         * Creates a plain object from a LookalikeUserListInfo message. Also converts values to other types if specified.
                         * @param message LookalikeUserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LookalikeUserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LookalikeUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LookalikeUserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SimilarUserListInfo. */
                    interface ISimilarUserListInfo {

                        /** SimilarUserListInfo seed_user_list */
                        seed_user_list?: (string|null);
                    }

                    /** Represents a SimilarUserListInfo. */
                    class SimilarUserListInfo implements ISimilarUserListInfo {

                        /**
                         * Constructs a new SimilarUserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ISimilarUserListInfo);

                        /** SimilarUserListInfo seed_user_list. */
                        public seed_user_list?: (string|null);

                        /**
                         * Creates a new SimilarUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SimilarUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ISimilarUserListInfo): google.ads.googleads.v23.common.SimilarUserListInfo;

                        /**
                         * Encodes the specified SimilarUserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.SimilarUserListInfo.verify|verify} messages.
                         * @param message SimilarUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ISimilarUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SimilarUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.SimilarUserListInfo.verify|verify} messages.
                         * @param message SimilarUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ISimilarUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SimilarUserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SimilarUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.SimilarUserListInfo;

                        /**
                         * Decodes a SimilarUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SimilarUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.SimilarUserListInfo;

                        /**
                         * Verifies a SimilarUserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SimilarUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SimilarUserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.SimilarUserListInfo;

                        /**
                         * Creates a plain object from a SimilarUserListInfo message. Also converts values to other types if specified.
                         * @param message SimilarUserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.SimilarUserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SimilarUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SimilarUserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CrmBasedUserListInfo. */
                    interface ICrmBasedUserListInfo {

                        /** CrmBasedUserListInfo app_id */
                        app_id?: (string|null);

                        /** CrmBasedUserListInfo upload_key_type */
                        upload_key_type?: (google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType|keyof typeof google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType|null);

                        /** CrmBasedUserListInfo data_source_type */
                        data_source_type?: (google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|keyof typeof google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|null);
                    }

                    /** Represents a CrmBasedUserListInfo. */
                    class CrmBasedUserListInfo implements ICrmBasedUserListInfo {

                        /**
                         * Constructs a new CrmBasedUserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ICrmBasedUserListInfo);

                        /** CrmBasedUserListInfo app_id. */
                        public app_id?: (string|null);

                        /** CrmBasedUserListInfo upload_key_type. */
                        public upload_key_type: (google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType|keyof typeof google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType);

                        /** CrmBasedUserListInfo data_source_type. */
                        public data_source_type: (google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|keyof typeof google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType);

                        /**
                         * Creates a new CrmBasedUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CrmBasedUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ICrmBasedUserListInfo): google.ads.googleads.v23.common.CrmBasedUserListInfo;

                        /**
                         * Encodes the specified CrmBasedUserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.CrmBasedUserListInfo.verify|verify} messages.
                         * @param message CrmBasedUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ICrmBasedUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CrmBasedUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.CrmBasedUserListInfo.verify|verify} messages.
                         * @param message CrmBasedUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ICrmBasedUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CrmBasedUserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CrmBasedUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.CrmBasedUserListInfo;

                        /**
                         * Decodes a CrmBasedUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CrmBasedUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.CrmBasedUserListInfo;

                        /**
                         * Verifies a CrmBasedUserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CrmBasedUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CrmBasedUserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.CrmBasedUserListInfo;

                        /**
                         * Creates a plain object from a CrmBasedUserListInfo message. Also converts values to other types if specified.
                         * @param message CrmBasedUserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.CrmBasedUserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CrmBasedUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CrmBasedUserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListRuleInfo. */
                    interface IUserListRuleInfo {

                        /** UserListRuleInfo rule_type */
                        rule_type?: (google.ads.googleads.v23.enums.UserListRuleTypeEnum.UserListRuleType|keyof typeof google.ads.googleads.v23.enums.UserListRuleTypeEnum.UserListRuleType|null);

                        /** UserListRuleInfo rule_item_groups */
                        rule_item_groups?: (google.ads.googleads.v23.common.IUserListRuleItemGroupInfo[]|null);
                    }

                    /** Represents a UserListRuleInfo. */
                    class UserListRuleInfo implements IUserListRuleInfo {

                        /**
                         * Constructs a new UserListRuleInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListRuleInfo);

                        /** UserListRuleInfo rule_type. */
                        public rule_type: (google.ads.googleads.v23.enums.UserListRuleTypeEnum.UserListRuleType|keyof typeof google.ads.googleads.v23.enums.UserListRuleTypeEnum.UserListRuleType);

                        /** UserListRuleInfo rule_item_groups. */
                        public rule_item_groups: google.ads.googleads.v23.common.IUserListRuleItemGroupInfo[];

                        /**
                         * Creates a new UserListRuleInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListRuleInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListRuleInfo): google.ads.googleads.v23.common.UserListRuleInfo;

                        /**
                         * Encodes the specified UserListRuleInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListRuleInfo.verify|verify} messages.
                         * @param message UserListRuleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListRuleInfo.verify|verify} messages.
                         * @param message UserListRuleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListRuleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListRuleInfo;

                        /**
                         * Decodes a UserListRuleInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListRuleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListRuleInfo;

                        /**
                         * Verifies a UserListRuleInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListRuleInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListRuleInfo;

                        /**
                         * Creates a plain object from a UserListRuleInfo message. Also converts values to other types if specified.
                         * @param message UserListRuleInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListRuleInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListRuleInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListRuleItemGroupInfo. */
                    interface IUserListRuleItemGroupInfo {

                        /** UserListRuleItemGroupInfo rule_items */
                        rule_items?: (google.ads.googleads.v23.common.IUserListRuleItemInfo[]|null);
                    }

                    /** Represents a UserListRuleItemGroupInfo. */
                    class UserListRuleItemGroupInfo implements IUserListRuleItemGroupInfo {

                        /**
                         * Constructs a new UserListRuleItemGroupInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListRuleItemGroupInfo);

                        /** UserListRuleItemGroupInfo rule_items. */
                        public rule_items: google.ads.googleads.v23.common.IUserListRuleItemInfo[];

                        /**
                         * Creates a new UserListRuleItemGroupInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListRuleItemGroupInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListRuleItemGroupInfo): google.ads.googleads.v23.common.UserListRuleItemGroupInfo;

                        /**
                         * Encodes the specified UserListRuleItemGroupInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListRuleItemGroupInfo.verify|verify} messages.
                         * @param message UserListRuleItemGroupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListRuleItemGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleItemGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListRuleItemGroupInfo.verify|verify} messages.
                         * @param message UserListRuleItemGroupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListRuleItemGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleItemGroupInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListRuleItemGroupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListRuleItemGroupInfo;

                        /**
                         * Decodes a UserListRuleItemGroupInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListRuleItemGroupInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListRuleItemGroupInfo;

                        /**
                         * Verifies a UserListRuleItemGroupInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleItemGroupInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListRuleItemGroupInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListRuleItemGroupInfo;

                        /**
                         * Creates a plain object from a UserListRuleItemGroupInfo message. Also converts values to other types if specified.
                         * @param message UserListRuleItemGroupInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListRuleItemGroupInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleItemGroupInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListRuleItemGroupInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListRuleItemInfo. */
                    interface IUserListRuleItemInfo {

                        /** UserListRuleItemInfo name */
                        name?: (string|null);

                        /** UserListRuleItemInfo number_rule_item */
                        number_rule_item?: (google.ads.googleads.v23.common.IUserListNumberRuleItemInfo|null);

                        /** UserListRuleItemInfo string_rule_item */
                        string_rule_item?: (google.ads.googleads.v23.common.IUserListStringRuleItemInfo|null);

                        /** UserListRuleItemInfo date_rule_item */
                        date_rule_item?: (google.ads.googleads.v23.common.IUserListDateRuleItemInfo|null);
                    }

                    /** Represents a UserListRuleItemInfo. */
                    class UserListRuleItemInfo implements IUserListRuleItemInfo {

                        /**
                         * Constructs a new UserListRuleItemInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListRuleItemInfo);

                        /** UserListRuleItemInfo name. */
                        public name?: (string|null);

                        /** UserListRuleItemInfo number_rule_item. */
                        public number_rule_item?: (google.ads.googleads.v23.common.IUserListNumberRuleItemInfo|null);

                        /** UserListRuleItemInfo string_rule_item. */
                        public string_rule_item?: (google.ads.googleads.v23.common.IUserListStringRuleItemInfo|null);

                        /** UserListRuleItemInfo date_rule_item. */
                        public date_rule_item?: (google.ads.googleads.v23.common.IUserListDateRuleItemInfo|null);

                        /** UserListRuleItemInfo rule_item. */
                        public rule_item?: ("number_rule_item"|"string_rule_item"|"date_rule_item");

                        /**
                         * Creates a new UserListRuleItemInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListRuleItemInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListRuleItemInfo): google.ads.googleads.v23.common.UserListRuleItemInfo;

                        /**
                         * Encodes the specified UserListRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListRuleItemInfo.verify|verify} messages.
                         * @param message UserListRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListRuleItemInfo.verify|verify} messages.
                         * @param message UserListRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleItemInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListRuleItemInfo;

                        /**
                         * Decodes a UserListRuleItemInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListRuleItemInfo;

                        /**
                         * Verifies a UserListRuleItemInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListRuleItemInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListRuleItemInfo message. Also converts values to other types if specified.
                         * @param message UserListRuleItemInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListRuleItemInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListRuleItemInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListDateRuleItemInfo. */
                    interface IUserListDateRuleItemInfo {

                        /** UserListDateRuleItemInfo operator */
                        operator?: (google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator|keyof typeof google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator|null);

                        /** UserListDateRuleItemInfo value */
                        value?: (string|null);

                        /** UserListDateRuleItemInfo offset_in_days */
                        offset_in_days?: (number|null);
                    }

                    /** Represents a UserListDateRuleItemInfo. */
                    class UserListDateRuleItemInfo implements IUserListDateRuleItemInfo {

                        /**
                         * Constructs a new UserListDateRuleItemInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListDateRuleItemInfo);

                        /** UserListDateRuleItemInfo operator. */
                        public operator: (google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator|keyof typeof google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator);

                        /** UserListDateRuleItemInfo value. */
                        public value?: (string|null);

                        /** UserListDateRuleItemInfo offset_in_days. */
                        public offset_in_days?: (number|null);

                        /**
                         * Creates a new UserListDateRuleItemInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListDateRuleItemInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListDateRuleItemInfo): google.ads.googleads.v23.common.UserListDateRuleItemInfo;

                        /**
                         * Encodes the specified UserListDateRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListDateRuleItemInfo.verify|verify} messages.
                         * @param message UserListDateRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListDateRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListDateRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListDateRuleItemInfo.verify|verify} messages.
                         * @param message UserListDateRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListDateRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListDateRuleItemInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListDateRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListDateRuleItemInfo;

                        /**
                         * Decodes a UserListDateRuleItemInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListDateRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListDateRuleItemInfo;

                        /**
                         * Verifies a UserListDateRuleItemInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListDateRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListDateRuleItemInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListDateRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListDateRuleItemInfo message. Also converts values to other types if specified.
                         * @param message UserListDateRuleItemInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListDateRuleItemInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListDateRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListDateRuleItemInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListNumberRuleItemInfo. */
                    interface IUserListNumberRuleItemInfo {

                        /** UserListNumberRuleItemInfo operator */
                        operator?: (google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator|keyof typeof google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator|null);

                        /** UserListNumberRuleItemInfo value */
                        value?: (number|null);
                    }

                    /** Represents a UserListNumberRuleItemInfo. */
                    class UserListNumberRuleItemInfo implements IUserListNumberRuleItemInfo {

                        /**
                         * Constructs a new UserListNumberRuleItemInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListNumberRuleItemInfo);

                        /** UserListNumberRuleItemInfo operator. */
                        public operator: (google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator|keyof typeof google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator);

                        /** UserListNumberRuleItemInfo value. */
                        public value?: (number|null);

                        /**
                         * Creates a new UserListNumberRuleItemInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListNumberRuleItemInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListNumberRuleItemInfo): google.ads.googleads.v23.common.UserListNumberRuleItemInfo;

                        /**
                         * Encodes the specified UserListNumberRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListNumberRuleItemInfo.verify|verify} messages.
                         * @param message UserListNumberRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListNumberRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListNumberRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListNumberRuleItemInfo.verify|verify} messages.
                         * @param message UserListNumberRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListNumberRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListNumberRuleItemInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListNumberRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListNumberRuleItemInfo;

                        /**
                         * Decodes a UserListNumberRuleItemInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListNumberRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListNumberRuleItemInfo;

                        /**
                         * Verifies a UserListNumberRuleItemInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListNumberRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListNumberRuleItemInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListNumberRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListNumberRuleItemInfo message. Also converts values to other types if specified.
                         * @param message UserListNumberRuleItemInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListNumberRuleItemInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListNumberRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListNumberRuleItemInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListStringRuleItemInfo. */
                    interface IUserListStringRuleItemInfo {

                        /** UserListStringRuleItemInfo operator */
                        operator?: (google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator|keyof typeof google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator|null);

                        /** UserListStringRuleItemInfo value */
                        value?: (string|null);
                    }

                    /** Represents a UserListStringRuleItemInfo. */
                    class UserListStringRuleItemInfo implements IUserListStringRuleItemInfo {

                        /**
                         * Constructs a new UserListStringRuleItemInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListStringRuleItemInfo);

                        /** UserListStringRuleItemInfo operator. */
                        public operator: (google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator|keyof typeof google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator);

                        /** UserListStringRuleItemInfo value. */
                        public value?: (string|null);

                        /**
                         * Creates a new UserListStringRuleItemInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListStringRuleItemInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListStringRuleItemInfo): google.ads.googleads.v23.common.UserListStringRuleItemInfo;

                        /**
                         * Encodes the specified UserListStringRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListStringRuleItemInfo.verify|verify} messages.
                         * @param message UserListStringRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListStringRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListStringRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListStringRuleItemInfo.verify|verify} messages.
                         * @param message UserListStringRuleItemInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListStringRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListStringRuleItemInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListStringRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListStringRuleItemInfo;

                        /**
                         * Decodes a UserListStringRuleItemInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListStringRuleItemInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListStringRuleItemInfo;

                        /**
                         * Verifies a UserListStringRuleItemInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListStringRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListStringRuleItemInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListStringRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListStringRuleItemInfo message. Also converts values to other types if specified.
                         * @param message UserListStringRuleItemInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListStringRuleItemInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListStringRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListStringRuleItemInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FlexibleRuleOperandInfo. */
                    interface IFlexibleRuleOperandInfo {

                        /** FlexibleRuleOperandInfo rule */
                        rule?: (google.ads.googleads.v23.common.IUserListRuleInfo|null);

                        /** FlexibleRuleOperandInfo lookback_window_days */
                        lookback_window_days?: (number|null);
                    }

                    /** Represents a FlexibleRuleOperandInfo. */
                    class FlexibleRuleOperandInfo implements IFlexibleRuleOperandInfo {

                        /**
                         * Constructs a new FlexibleRuleOperandInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFlexibleRuleOperandInfo);

                        /** FlexibleRuleOperandInfo rule. */
                        public rule?: (google.ads.googleads.v23.common.IUserListRuleInfo|null);

                        /** FlexibleRuleOperandInfo lookback_window_days. */
                        public lookback_window_days?: (number|null);

                        /**
                         * Creates a new FlexibleRuleOperandInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FlexibleRuleOperandInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFlexibleRuleOperandInfo): google.ads.googleads.v23.common.FlexibleRuleOperandInfo;

                        /**
                         * Encodes the specified FlexibleRuleOperandInfo message. Does not implicitly {@link google.ads.googleads.v23.common.FlexibleRuleOperandInfo.verify|verify} messages.
                         * @param message FlexibleRuleOperandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFlexibleRuleOperandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FlexibleRuleOperandInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FlexibleRuleOperandInfo.verify|verify} messages.
                         * @param message FlexibleRuleOperandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFlexibleRuleOperandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FlexibleRuleOperandInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FlexibleRuleOperandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.FlexibleRuleOperandInfo;

                        /**
                         * Decodes a FlexibleRuleOperandInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FlexibleRuleOperandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.FlexibleRuleOperandInfo;

                        /**
                         * Verifies a FlexibleRuleOperandInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FlexibleRuleOperandInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FlexibleRuleOperandInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.FlexibleRuleOperandInfo;

                        /**
                         * Creates a plain object from a FlexibleRuleOperandInfo message. Also converts values to other types if specified.
                         * @param message FlexibleRuleOperandInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.FlexibleRuleOperandInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FlexibleRuleOperandInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FlexibleRuleOperandInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FlexibleRuleUserListInfo. */
                    interface IFlexibleRuleUserListInfo {

                        /** FlexibleRuleUserListInfo inclusive_rule_operator */
                        inclusive_rule_operator?: (google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum.UserListFlexibleRuleOperator|keyof typeof google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum.UserListFlexibleRuleOperator|null);

                        /** FlexibleRuleUserListInfo inclusive_operands */
                        inclusive_operands?: (google.ads.googleads.v23.common.IFlexibleRuleOperandInfo[]|null);

                        /** FlexibleRuleUserListInfo exclusive_operands */
                        exclusive_operands?: (google.ads.googleads.v23.common.IFlexibleRuleOperandInfo[]|null);
                    }

                    /** Represents a FlexibleRuleUserListInfo. */
                    class FlexibleRuleUserListInfo implements IFlexibleRuleUserListInfo {

                        /**
                         * Constructs a new FlexibleRuleUserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IFlexibleRuleUserListInfo);

                        /** FlexibleRuleUserListInfo inclusive_rule_operator. */
                        public inclusive_rule_operator: (google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum.UserListFlexibleRuleOperator|keyof typeof google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum.UserListFlexibleRuleOperator);

                        /** FlexibleRuleUserListInfo inclusive_operands. */
                        public inclusive_operands: google.ads.googleads.v23.common.IFlexibleRuleOperandInfo[];

                        /** FlexibleRuleUserListInfo exclusive_operands. */
                        public exclusive_operands: google.ads.googleads.v23.common.IFlexibleRuleOperandInfo[];

                        /**
                         * Creates a new FlexibleRuleUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FlexibleRuleUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IFlexibleRuleUserListInfo): google.ads.googleads.v23.common.FlexibleRuleUserListInfo;

                        /**
                         * Encodes the specified FlexibleRuleUserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.FlexibleRuleUserListInfo.verify|verify} messages.
                         * @param message FlexibleRuleUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IFlexibleRuleUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FlexibleRuleUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.FlexibleRuleUserListInfo.verify|verify} messages.
                         * @param message FlexibleRuleUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IFlexibleRuleUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FlexibleRuleUserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FlexibleRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.FlexibleRuleUserListInfo;

                        /**
                         * Decodes a FlexibleRuleUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FlexibleRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.FlexibleRuleUserListInfo;

                        /**
                         * Verifies a FlexibleRuleUserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FlexibleRuleUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FlexibleRuleUserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.FlexibleRuleUserListInfo;

                        /**
                         * Creates a plain object from a FlexibleRuleUserListInfo message. Also converts values to other types if specified.
                         * @param message FlexibleRuleUserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.FlexibleRuleUserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FlexibleRuleUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FlexibleRuleUserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RuleBasedUserListInfo. */
                    interface IRuleBasedUserListInfo {

                        /** RuleBasedUserListInfo prepopulation_status */
                        prepopulation_status?: (google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus|keyof typeof google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus|null);

                        /** RuleBasedUserListInfo flexible_rule_user_list */
                        flexible_rule_user_list?: (google.ads.googleads.v23.common.IFlexibleRuleUserListInfo|null);
                    }

                    /** Represents a RuleBasedUserListInfo. */
                    class RuleBasedUserListInfo implements IRuleBasedUserListInfo {

                        /**
                         * Constructs a new RuleBasedUserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IRuleBasedUserListInfo);

                        /** RuleBasedUserListInfo prepopulation_status. */
                        public prepopulation_status: (google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus|keyof typeof google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus);

                        /** RuleBasedUserListInfo flexible_rule_user_list. */
                        public flexible_rule_user_list?: (google.ads.googleads.v23.common.IFlexibleRuleUserListInfo|null);

                        /**
                         * Creates a new RuleBasedUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RuleBasedUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IRuleBasedUserListInfo): google.ads.googleads.v23.common.RuleBasedUserListInfo;

                        /**
                         * Encodes the specified RuleBasedUserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.RuleBasedUserListInfo.verify|verify} messages.
                         * @param message RuleBasedUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IRuleBasedUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RuleBasedUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.RuleBasedUserListInfo.verify|verify} messages.
                         * @param message RuleBasedUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IRuleBasedUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RuleBasedUserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RuleBasedUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.RuleBasedUserListInfo;

                        /**
                         * Decodes a RuleBasedUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RuleBasedUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.RuleBasedUserListInfo;

                        /**
                         * Verifies a RuleBasedUserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RuleBasedUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RuleBasedUserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.RuleBasedUserListInfo;

                        /**
                         * Creates a plain object from a RuleBasedUserListInfo message. Also converts values to other types if specified.
                         * @param message RuleBasedUserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.RuleBasedUserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RuleBasedUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RuleBasedUserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LogicalUserListInfo. */
                    interface ILogicalUserListInfo {

                        /** LogicalUserListInfo rules */
                        rules?: (google.ads.googleads.v23.common.IUserListLogicalRuleInfo[]|null);
                    }

                    /** Represents a LogicalUserListInfo. */
                    class LogicalUserListInfo implements ILogicalUserListInfo {

                        /**
                         * Constructs a new LogicalUserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILogicalUserListInfo);

                        /** LogicalUserListInfo rules. */
                        public rules: google.ads.googleads.v23.common.IUserListLogicalRuleInfo[];

                        /**
                         * Creates a new LogicalUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LogicalUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILogicalUserListInfo): google.ads.googleads.v23.common.LogicalUserListInfo;

                        /**
                         * Encodes the specified LogicalUserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LogicalUserListInfo.verify|verify} messages.
                         * @param message LogicalUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILogicalUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LogicalUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LogicalUserListInfo.verify|verify} messages.
                         * @param message LogicalUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILogicalUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LogicalUserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LogicalUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LogicalUserListInfo;

                        /**
                         * Decodes a LogicalUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LogicalUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LogicalUserListInfo;

                        /**
                         * Verifies a LogicalUserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LogicalUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LogicalUserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LogicalUserListInfo;

                        /**
                         * Creates a plain object from a LogicalUserListInfo message. Also converts values to other types if specified.
                         * @param message LogicalUserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LogicalUserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LogicalUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LogicalUserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListLogicalRuleInfo. */
                    interface IUserListLogicalRuleInfo {

                        /** UserListLogicalRuleInfo operator */
                        operator?: (google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator|keyof typeof google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator|null);

                        /** UserListLogicalRuleInfo rule_operands */
                        rule_operands?: (google.ads.googleads.v23.common.ILogicalUserListOperandInfo[]|null);
                    }

                    /** Represents a UserListLogicalRuleInfo. */
                    class UserListLogicalRuleInfo implements IUserListLogicalRuleInfo {

                        /**
                         * Constructs a new UserListLogicalRuleInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListLogicalRuleInfo);

                        /** UserListLogicalRuleInfo operator. */
                        public operator: (google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator|keyof typeof google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator);

                        /** UserListLogicalRuleInfo rule_operands. */
                        public rule_operands: google.ads.googleads.v23.common.ILogicalUserListOperandInfo[];

                        /**
                         * Creates a new UserListLogicalRuleInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListLogicalRuleInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListLogicalRuleInfo): google.ads.googleads.v23.common.UserListLogicalRuleInfo;

                        /**
                         * Encodes the specified UserListLogicalRuleInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListLogicalRuleInfo.verify|verify} messages.
                         * @param message UserListLogicalRuleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListLogicalRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListLogicalRuleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListLogicalRuleInfo.verify|verify} messages.
                         * @param message UserListLogicalRuleInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListLogicalRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListLogicalRuleInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListLogicalRuleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListLogicalRuleInfo;

                        /**
                         * Decodes a UserListLogicalRuleInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListLogicalRuleInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListLogicalRuleInfo;

                        /**
                         * Verifies a UserListLogicalRuleInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListLogicalRuleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListLogicalRuleInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListLogicalRuleInfo;

                        /**
                         * Creates a plain object from a UserListLogicalRuleInfo message. Also converts values to other types if specified.
                         * @param message UserListLogicalRuleInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListLogicalRuleInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListLogicalRuleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListLogicalRuleInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LogicalUserListOperandInfo. */
                    interface ILogicalUserListOperandInfo {

                        /** LogicalUserListOperandInfo user_list */
                        user_list?: (string|null);
                    }

                    /** Represents a LogicalUserListOperandInfo. */
                    class LogicalUserListOperandInfo implements ILogicalUserListOperandInfo {

                        /**
                         * Constructs a new LogicalUserListOperandInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.ILogicalUserListOperandInfo);

                        /** LogicalUserListOperandInfo user_list. */
                        public user_list?: (string|null);

                        /**
                         * Creates a new LogicalUserListOperandInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LogicalUserListOperandInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.ILogicalUserListOperandInfo): google.ads.googleads.v23.common.LogicalUserListOperandInfo;

                        /**
                         * Encodes the specified LogicalUserListOperandInfo message. Does not implicitly {@link google.ads.googleads.v23.common.LogicalUserListOperandInfo.verify|verify} messages.
                         * @param message LogicalUserListOperandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.ILogicalUserListOperandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LogicalUserListOperandInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.LogicalUserListOperandInfo.verify|verify} messages.
                         * @param message LogicalUserListOperandInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.ILogicalUserListOperandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LogicalUserListOperandInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LogicalUserListOperandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.LogicalUserListOperandInfo;

                        /**
                         * Decodes a LogicalUserListOperandInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LogicalUserListOperandInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.LogicalUserListOperandInfo;

                        /**
                         * Verifies a LogicalUserListOperandInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LogicalUserListOperandInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LogicalUserListOperandInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.LogicalUserListOperandInfo;

                        /**
                         * Creates a plain object from a LogicalUserListOperandInfo message. Also converts values to other types if specified.
                         * @param message LogicalUserListOperandInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.LogicalUserListOperandInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LogicalUserListOperandInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LogicalUserListOperandInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BasicUserListInfo. */
                    interface IBasicUserListInfo {

                        /** BasicUserListInfo actions */
                        actions?: (google.ads.googleads.v23.common.IUserListActionInfo[]|null);
                    }

                    /** Represents a BasicUserListInfo. */
                    class BasicUserListInfo implements IBasicUserListInfo {

                        /**
                         * Constructs a new BasicUserListInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IBasicUserListInfo);

                        /** BasicUserListInfo actions. */
                        public actions: google.ads.googleads.v23.common.IUserListActionInfo[];

                        /**
                         * Creates a new BasicUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BasicUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IBasicUserListInfo): google.ads.googleads.v23.common.BasicUserListInfo;

                        /**
                         * Encodes the specified BasicUserListInfo message. Does not implicitly {@link google.ads.googleads.v23.common.BasicUserListInfo.verify|verify} messages.
                         * @param message BasicUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IBasicUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BasicUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.BasicUserListInfo.verify|verify} messages.
                         * @param message BasicUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IBasicUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BasicUserListInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BasicUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.BasicUserListInfo;

                        /**
                         * Decodes a BasicUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BasicUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.BasicUserListInfo;

                        /**
                         * Verifies a BasicUserListInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BasicUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BasicUserListInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.BasicUserListInfo;

                        /**
                         * Creates a plain object from a BasicUserListInfo message. Also converts values to other types if specified.
                         * @param message BasicUserListInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.BasicUserListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BasicUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BasicUserListInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListActionInfo. */
                    interface IUserListActionInfo {

                        /** UserListActionInfo conversion_action */
                        conversion_action?: (string|null);

                        /** UserListActionInfo remarketing_action */
                        remarketing_action?: (string|null);
                    }

                    /** Represents a UserListActionInfo. */
                    class UserListActionInfo implements IUserListActionInfo {

                        /**
                         * Constructs a new UserListActionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IUserListActionInfo);

                        /** UserListActionInfo conversion_action. */
                        public conversion_action?: (string|null);

                        /** UserListActionInfo remarketing_action. */
                        public remarketing_action?: (string|null);

                        /** UserListActionInfo user_list_action. */
                        public user_list_action?: ("conversion_action"|"remarketing_action");

                        /**
                         * Creates a new UserListActionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListActionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IUserListActionInfo): google.ads.googleads.v23.common.UserListActionInfo;

                        /**
                         * Encodes the specified UserListActionInfo message. Does not implicitly {@link google.ads.googleads.v23.common.UserListActionInfo.verify|verify} messages.
                         * @param message UserListActionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.common.IUserListActionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListActionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.UserListActionInfo.verify|verify} messages.
                         * @param message UserListActionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.common.IUserListActionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListActionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListActionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.common.UserListActionInfo;

                        /**
                         * Decodes a UserListActionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListActionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.common.UserListActionInfo;

                        /**
                         * Verifies a UserListActionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListActionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListActionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.common.UserListActionInfo;

                        /**
                         * Creates a plain object from a UserListActionInfo message. Also converts values to other types if specified.
                         * @param message UserListActionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.common.UserListActionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListActionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListActionInfo
                         * @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 boolean_value */
                        boolean_value?: (boolean|null);

                        /** Value int64_value */
                        int64_value?: (number|null);

                        /** Value float_value */
                        float_value?: (number|null);

                        /** Value double_value */
                        double_value?: (number|null);

                        /** Value string_value */
                        string_value?: (string|null);
                    }

                    /** Represents a Value. */
                    class Value implements IValue {

                        /**
                         * Constructs a new Value.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.common.IValue);

                        /** Value boolean_value. */
                        public boolean_value?: (boolean|null);

                        /** Value int64_value. */
                        public int64_value?: (number|null);

                        /** Value float_value. */
                        public float_value?: (number|null);

                        /** Value double_value. */
                        public double_value?: (number|null);

                        /** Value string_value. */
                        public string_value?: (string|null);

                        /** Value value. */
                        public value?: ("boolean_value"|"int64_value"|"float_value"|"double_value"|"string_value");

                        /**
                         * Creates a new Value instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Value instance
                         */
                        public static create(properties?: google.ads.googleads.v23.common.IValue): google.ads.googleads.v23.common.Value;

                        /**
                         * Encodes the specified Value message. Does not implicitly {@link google.ads.googleads.v23.common.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.ads.googleads.v23.common.IValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Value message, length delimited. Does not implicitly {@link google.ads.googleads.v23.common.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.ads.googleads.v23.common.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.ads.googleads.v23.common.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.ads.googleads.v23.common.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.ads.googleads.v23.common.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.ads.googleads.v23.common.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;
                    }
                }

                /** Namespace enums. */
                namespace enums {

                    /** Properties of a PolicyTopicEntryTypeEnum. */
                    interface IPolicyTopicEntryTypeEnum {
                    }

                    /** Represents a PolicyTopicEntryTypeEnum. */
                    class PolicyTopicEntryTypeEnum implements IPolicyTopicEntryTypeEnum {

                        /**
                         * Constructs a new PolicyTopicEntryTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPolicyTopicEntryTypeEnum);

                        /**
                         * Creates a new PolicyTopicEntryTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyTopicEntryTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPolicyTopicEntryTypeEnum): google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum;

                        /**
                         * Encodes the specified PolicyTopicEntryTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum.verify|verify} messages.
                         * @param message PolicyTopicEntryTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPolicyTopicEntryTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEntryTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum.verify|verify} messages.
                         * @param message PolicyTopicEntryTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPolicyTopicEntryTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEntryTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyTopicEntryTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum;

                        /**
                         * Decodes a PolicyTopicEntryTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyTopicEntryTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum;

                        /**
                         * Verifies a PolicyTopicEntryTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEntryTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyTopicEntryTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEntryTypeEnum message. Also converts values to other types if specified.
                         * @param message PolicyTopicEntryTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PolicyTopicEntryTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEntryTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyTopicEntryTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyTopicEntryTypeEnum {

                        /** PolicyTopicEntryType enum. */
                        enum PolicyTopicEntryType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PROHIBITED = 2,
                            LIMITED = 4,
                            FULLY_LIMITED = 8,
                            DESCRIPTIVE = 5,
                            BROADENING = 6,
                            AREA_OF_INTEREST_ONLY = 7
                        }
                    }

                    /** Properties of a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum. */
                    interface IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum {
                    }

                    /** Represents a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum. */
                    class PolicyTopicEvidenceDestinationMismatchUrlTypeEnum implements IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum {

                        /**
                         * Constructs a new PolicyTopicEvidenceDestinationMismatchUrlTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum);

                        /**
                         * Creates a new PolicyTopicEvidenceDestinationMismatchUrlTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyTopicEvidenceDestinationMismatchUrlTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum.verify|verify} messages.
                         * @param message PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum.verify|verify} messages.
                         * @param message PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyTopicEvidenceDestinationMismatchUrlTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyTopicEvidenceDestinationMismatchUrlTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum;

                        /**
                         * Verifies a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyTopicEvidenceDestinationMismatchUrlTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message. Also converts values to other types if specified.
                         * @param message PolicyTopicEvidenceDestinationMismatchUrlTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEvidenceDestinationMismatchUrlTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyTopicEvidenceDestinationMismatchUrlTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyTopicEvidenceDestinationMismatchUrlTypeEnum {

                        /** PolicyTopicEvidenceDestinationMismatchUrlType enum. */
                        enum PolicyTopicEvidenceDestinationMismatchUrlType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DISPLAY_URL = 2,
                            FINAL_URL = 3,
                            FINAL_MOBILE_URL = 4,
                            TRACKING_URL = 5,
                            MOBILE_TRACKING_URL = 6
                        }
                    }

                    /** Properties of a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum. */
                    interface IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum {
                    }

                    /** Represents a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum. */
                    class PolicyTopicEvidenceDestinationNotWorkingDeviceEnum implements IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum {

                        /**
                         * Constructs a new PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum);

                        /**
                         * Creates a new PolicyTopicEvidenceDestinationNotWorkingDeviceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDeviceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.verify|verify} messages.
                         * @param message PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.verify|verify} messages.
                         * @param message PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum;

                        /**
                         * Verifies a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDeviceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message. Also converts values to other types if specified.
                         * @param message PolicyTopicEvidenceDestinationNotWorkingDeviceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEvidenceDestinationNotWorkingDeviceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyTopicEvidenceDestinationNotWorkingDeviceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyTopicEvidenceDestinationNotWorkingDeviceEnum {

                        /** PolicyTopicEvidenceDestinationNotWorkingDevice enum. */
                        enum PolicyTopicEvidenceDestinationNotWorkingDevice {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DESKTOP = 2,
                            ANDROID = 3,
                            IOS = 4
                        }
                    }

                    /** Properties of a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum. */
                    interface IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum {
                    }

                    /** Represents a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum. */
                    class PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum implements IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum {

                        /**
                         * Constructs a new PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum);

                        /**
                         * Creates a new PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.verify|verify} messages.
                         * @param message PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.verify|verify} messages.
                         * @param message PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum;

                        /**
                         * Verifies a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message. Also converts values to other types if specified.
                         * @param message PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum {

                        /** PolicyTopicEvidenceDestinationNotWorkingDnsErrorType enum. */
                        enum PolicyTopicEvidenceDestinationNotWorkingDnsErrorType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HOSTNAME_NOT_FOUND = 2,
                            GOOGLE_CRAWLER_DNS_ISSUE = 3
                        }
                    }

                    /** Properties of an AssetLinkPrimaryStatusEnum. */
                    interface IAssetLinkPrimaryStatusEnum {
                    }

                    /** Represents an AssetLinkPrimaryStatusEnum. */
                    class AssetLinkPrimaryStatusEnum implements IAssetLinkPrimaryStatusEnum {

                        /**
                         * Constructs a new AssetLinkPrimaryStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusEnum);

                        /**
                         * Creates a new AssetLinkPrimaryStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetLinkPrimaryStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusEnum): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum;

                        /**
                         * Encodes the specified AssetLinkPrimaryStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.verify|verify} messages.
                         * @param message AssetLinkPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetLinkPrimaryStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.verify|verify} messages.
                         * @param message AssetLinkPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetLinkPrimaryStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetLinkPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum;

                        /**
                         * Decodes an AssetLinkPrimaryStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetLinkPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum;

                        /**
                         * Verifies an AssetLinkPrimaryStatusEnum message.
                         * @param message Plain 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 AssetLinkPrimaryStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetLinkPrimaryStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum;

                        /**
                         * Creates a plain object from an AssetLinkPrimaryStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetLinkPrimaryStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetLinkPrimaryStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetLinkPrimaryStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetLinkPrimaryStatusEnum {

                        /** AssetLinkPrimaryStatus enum. */
                        enum AssetLinkPrimaryStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            PAUSED = 3,
                            REMOVED = 4,
                            PENDING = 5,
                            LIMITED = 6,
                            NOT_ELIGIBLE = 7
                        }
                    }

                    /** Properties of an AssetLinkPrimaryStatusReasonEnum. */
                    interface IAssetLinkPrimaryStatusReasonEnum {
                    }

                    /** Represents an AssetLinkPrimaryStatusReasonEnum. */
                    class AssetLinkPrimaryStatusReasonEnum implements IAssetLinkPrimaryStatusReasonEnum {

                        /**
                         * Constructs a new AssetLinkPrimaryStatusReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusReasonEnum);

                        /**
                         * Creates a new AssetLinkPrimaryStatusReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetLinkPrimaryStatusReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusReasonEnum): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum;

                        /**
                         * Encodes the specified AssetLinkPrimaryStatusReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AssetLinkPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetLinkPrimaryStatusReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AssetLinkPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetLinkPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetLinkPrimaryStatusReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetLinkPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum;

                        /**
                         * Decodes an AssetLinkPrimaryStatusReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetLinkPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum;

                        /**
                         * Verifies an AssetLinkPrimaryStatusReasonEnum message.
                         * @param message Plain 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 AssetLinkPrimaryStatusReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetLinkPrimaryStatusReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum;

                        /**
                         * Creates a plain object from an AssetLinkPrimaryStatusReasonEnum message. Also converts values to other types if specified.
                         * @param message AssetLinkPrimaryStatusReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetLinkPrimaryStatusReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetLinkPrimaryStatusReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetLinkPrimaryStatusReasonEnum {

                        /** AssetLinkPrimaryStatusReason enum. */
                        enum AssetLinkPrimaryStatusReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ASSET_LINK_PAUSED = 2,
                            ASSET_LINK_REMOVED = 3,
                            ASSET_DISAPPROVED = 4,
                            ASSET_UNDER_REVIEW = 5,
                            ASSET_APPROVED_LABELED = 6
                        }
                    }

                    /** Properties of an AssetOfflineEvaluationErrorReasonsEnum. */
                    interface IAssetOfflineEvaluationErrorReasonsEnum {
                    }

                    /** Represents an AssetOfflineEvaluationErrorReasonsEnum. */
                    class AssetOfflineEvaluationErrorReasonsEnum implements IAssetOfflineEvaluationErrorReasonsEnum {

                        /**
                         * Constructs a new AssetOfflineEvaluationErrorReasonsEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetOfflineEvaluationErrorReasonsEnum);

                        /**
                         * Creates a new AssetOfflineEvaluationErrorReasonsEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetOfflineEvaluationErrorReasonsEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetOfflineEvaluationErrorReasonsEnum): google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum;

                        /**
                         * Encodes the specified AssetOfflineEvaluationErrorReasonsEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum.verify|verify} messages.
                         * @param message AssetOfflineEvaluationErrorReasonsEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetOfflineEvaluationErrorReasonsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetOfflineEvaluationErrorReasonsEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum.verify|verify} messages.
                         * @param message AssetOfflineEvaluationErrorReasonsEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetOfflineEvaluationErrorReasonsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetOfflineEvaluationErrorReasonsEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetOfflineEvaluationErrorReasonsEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum;

                        /**
                         * Decodes an AssetOfflineEvaluationErrorReasonsEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetOfflineEvaluationErrorReasonsEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum;

                        /**
                         * Verifies an AssetOfflineEvaluationErrorReasonsEnum message.
                         * @param message Plain 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 AssetOfflineEvaluationErrorReasonsEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetOfflineEvaluationErrorReasonsEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum;

                        /**
                         * Creates a plain object from an AssetOfflineEvaluationErrorReasonsEnum message. Also converts values to other types if specified.
                         * @param message AssetOfflineEvaluationErrorReasonsEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetOfflineEvaluationErrorReasonsEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetOfflineEvaluationErrorReasonsEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetOfflineEvaluationErrorReasonsEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetOfflineEvaluationErrorReasonsEnum {

                        /** AssetOfflineEvaluationErrorReasons enum. */
                        enum AssetOfflineEvaluationErrorReasons {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PRICE_ASSET_DESCRIPTION_REPEATS_ROW_HEADER = 2,
                            PRICE_ASSET_REPETITIVE_HEADERS = 3,
                            PRICE_ASSET_HEADER_INCOMPATIBLE_WITH_PRICE_TYPE = 4,
                            PRICE_ASSET_DESCRIPTION_INCOMPATIBLE_WITH_ITEM_HEADER = 5,
                            PRICE_ASSET_DESCRIPTION_HAS_PRICE_QUALIFIER = 6,
                            PRICE_ASSET_UNSUPPORTED_LANGUAGE = 7,
                            PRICE_ASSET_OTHER_ERROR = 8
                        }
                    }

                    /** Properties of a PolicyApprovalStatusEnum. */
                    interface IPolicyApprovalStatusEnum {
                    }

                    /** Represents a PolicyApprovalStatusEnum. */
                    class PolicyApprovalStatusEnum implements IPolicyApprovalStatusEnum {

                        /**
                         * Constructs a new PolicyApprovalStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPolicyApprovalStatusEnum);

                        /**
                         * Creates a new PolicyApprovalStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyApprovalStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPolicyApprovalStatusEnum): google.ads.googleads.v23.enums.PolicyApprovalStatusEnum;

                        /**
                         * Encodes the specified PolicyApprovalStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.verify|verify} messages.
                         * @param message PolicyApprovalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPolicyApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyApprovalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.verify|verify} messages.
                         * @param message PolicyApprovalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPolicyApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyApprovalStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PolicyApprovalStatusEnum;

                        /**
                         * Decodes a PolicyApprovalStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PolicyApprovalStatusEnum;

                        /**
                         * Verifies a PolicyApprovalStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyApprovalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyApprovalStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PolicyApprovalStatusEnum;

                        /**
                         * Creates a plain object from a PolicyApprovalStatusEnum message. Also converts values to other types if specified.
                         * @param message PolicyApprovalStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PolicyApprovalStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyApprovalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyApprovalStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyApprovalStatusEnum {

                        /** PolicyApprovalStatus enum. */
                        enum PolicyApprovalStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DISAPPROVED = 2,
                            APPROVED_LIMITED = 3,
                            APPROVED = 4,
                            AREA_OF_INTEREST_ONLY = 5
                        }
                    }

                    /** Properties of a PolicyReviewStatusEnum. */
                    interface IPolicyReviewStatusEnum {
                    }

                    /** Represents a PolicyReviewStatusEnum. */
                    class PolicyReviewStatusEnum implements IPolicyReviewStatusEnum {

                        /**
                         * Constructs a new PolicyReviewStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPolicyReviewStatusEnum);

                        /**
                         * Creates a new PolicyReviewStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyReviewStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPolicyReviewStatusEnum): google.ads.googleads.v23.enums.PolicyReviewStatusEnum;

                        /**
                         * Encodes the specified PolicyReviewStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyReviewStatusEnum.verify|verify} messages.
                         * @param message PolicyReviewStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPolicyReviewStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyReviewStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PolicyReviewStatusEnum.verify|verify} messages.
                         * @param message PolicyReviewStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPolicyReviewStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyReviewStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyReviewStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PolicyReviewStatusEnum;

                        /**
                         * Decodes a PolicyReviewStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyReviewStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PolicyReviewStatusEnum;

                        /**
                         * Verifies a PolicyReviewStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyReviewStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyReviewStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PolicyReviewStatusEnum;

                        /**
                         * Creates a plain object from a PolicyReviewStatusEnum message. Also converts values to other types if specified.
                         * @param message PolicyReviewStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PolicyReviewStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyReviewStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyReviewStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyReviewStatusEnum {

                        /** PolicyReviewStatus enum. */
                        enum PolicyReviewStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REVIEW_IN_PROGRESS = 2,
                            REVIEWED = 3,
                            UNDER_APPEAL = 4,
                            ELIGIBLE_MAY_SERVE = 5
                        }
                    }

                    /** Properties of an AssetPerformanceLabelEnum. */
                    interface IAssetPerformanceLabelEnum {
                    }

                    /** Represents an AssetPerformanceLabelEnum. */
                    class AssetPerformanceLabelEnum implements IAssetPerformanceLabelEnum {

                        /**
                         * Constructs a new AssetPerformanceLabelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetPerformanceLabelEnum);

                        /**
                         * Creates a new AssetPerformanceLabelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetPerformanceLabelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetPerformanceLabelEnum): google.ads.googleads.v23.enums.AssetPerformanceLabelEnum;

                        /**
                         * Encodes the specified AssetPerformanceLabelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.verify|verify} messages.
                         * @param message AssetPerformanceLabelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetPerformanceLabelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetPerformanceLabelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.verify|verify} messages.
                         * @param message AssetPerformanceLabelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetPerformanceLabelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetPerformanceLabelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetPerformanceLabelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetPerformanceLabelEnum;

                        /**
                         * Decodes an AssetPerformanceLabelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetPerformanceLabelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetPerformanceLabelEnum;

                        /**
                         * Verifies an AssetPerformanceLabelEnum message.
                         * @param message Plain 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 AssetPerformanceLabelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetPerformanceLabelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetPerformanceLabelEnum;

                        /**
                         * Creates a plain object from an AssetPerformanceLabelEnum message. Also converts values to other types if specified.
                         * @param message AssetPerformanceLabelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetPerformanceLabelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetPerformanceLabelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetPerformanceLabelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetPerformanceLabelEnum {

                        /** AssetPerformanceLabel enum. */
                        enum AssetPerformanceLabel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            LEARNING = 3,
                            LOW = 4,
                            GOOD = 5,
                            BEST = 6,
                            NOT_APPLICABLE = 7
                        }
                    }

                    /** Properties of a ServedAssetFieldTypeEnum. */
                    interface IServedAssetFieldTypeEnum {
                    }

                    /** Represents a ServedAssetFieldTypeEnum. */
                    class ServedAssetFieldTypeEnum implements IServedAssetFieldTypeEnum {

                        /**
                         * Constructs a new ServedAssetFieldTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IServedAssetFieldTypeEnum);

                        /**
                         * Creates a new ServedAssetFieldTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServedAssetFieldTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IServedAssetFieldTypeEnum): google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum;

                        /**
                         * Encodes the specified ServedAssetFieldTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.verify|verify} messages.
                         * @param message ServedAssetFieldTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IServedAssetFieldTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServedAssetFieldTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.verify|verify} messages.
                         * @param message ServedAssetFieldTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IServedAssetFieldTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServedAssetFieldTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServedAssetFieldTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum;

                        /**
                         * Decodes a ServedAssetFieldTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServedAssetFieldTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum;

                        /**
                         * Verifies a ServedAssetFieldTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ServedAssetFieldTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServedAssetFieldTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum;

                        /**
                         * Creates a plain object from a ServedAssetFieldTypeEnum message. Also converts values to other types if specified.
                         * @param message ServedAssetFieldTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServedAssetFieldTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServedAssetFieldTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ServedAssetFieldTypeEnum {

                        /** ServedAssetFieldType enum. */
                        enum ServedAssetFieldType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HEADLINE_1 = 2,
                            HEADLINE_2 = 3,
                            HEADLINE_3 = 4,
                            DESCRIPTION_1 = 5,
                            DESCRIPTION_2 = 6,
                            HEADLINE = 7,
                            HEADLINE_IN_PORTRAIT = 8,
                            LONG_HEADLINE = 9,
                            DESCRIPTION = 10,
                            DESCRIPTION_IN_PORTRAIT = 11,
                            BUSINESS_NAME_IN_PORTRAIT = 12,
                            BUSINESS_NAME = 13,
                            MARKETING_IMAGE = 14,
                            MARKETING_IMAGE_IN_PORTRAIT = 15,
                            SQUARE_MARKETING_IMAGE = 16,
                            PORTRAIT_MARKETING_IMAGE = 17,
                            LOGO = 18,
                            LANDSCAPE_LOGO = 19,
                            CALL_TO_ACTION = 20,
                            YOU_TUBE_VIDEO = 21,
                            SITELINK = 22,
                            CALL = 23,
                            MOBILE_APP = 24,
                            CALLOUT = 25,
                            STRUCTURED_SNIPPET = 26,
                            PRICE = 27,
                            PROMOTION = 28,
                            AD_IMAGE = 29,
                            LEAD_FORM = 30,
                            BUSINESS_LOGO = 31,
                            DESCRIPTION_PREFIX = 32,
                            HEADLINE_AS_SITELINK_POSITION_ONE = 39,
                            HEADLINE_AS_SITELINK_POSITION_TWO = 40,
                            DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_ONE = 41,
                            DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_TWO = 42
                        }
                    }

                    /** Properties of a DisplayAdFormatSettingEnum. */
                    interface IDisplayAdFormatSettingEnum {
                    }

                    /** Represents a DisplayAdFormatSettingEnum. */
                    class DisplayAdFormatSettingEnum implements IDisplayAdFormatSettingEnum {

                        /**
                         * Constructs a new DisplayAdFormatSettingEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDisplayAdFormatSettingEnum);

                        /**
                         * Creates a new DisplayAdFormatSettingEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DisplayAdFormatSettingEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDisplayAdFormatSettingEnum): google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum;

                        /**
                         * Encodes the specified DisplayAdFormatSettingEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.verify|verify} messages.
                         * @param message DisplayAdFormatSettingEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDisplayAdFormatSettingEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DisplayAdFormatSettingEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum.verify|verify} messages.
                         * @param message DisplayAdFormatSettingEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDisplayAdFormatSettingEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DisplayAdFormatSettingEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DisplayAdFormatSettingEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum;

                        /**
                         * Decodes a DisplayAdFormatSettingEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DisplayAdFormatSettingEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum;

                        /**
                         * Verifies a DisplayAdFormatSettingEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DisplayAdFormatSettingEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DisplayAdFormatSettingEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum;

                        /**
                         * Creates a plain object from a DisplayAdFormatSettingEnum message. Also converts values to other types if specified.
                         * @param message DisplayAdFormatSettingEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DisplayAdFormatSettingEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DisplayAdFormatSettingEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DisplayAdFormatSettingEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DisplayAdFormatSettingEnum {

                        /** DisplayAdFormatSetting enum. */
                        enum DisplayAdFormatSetting {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ALL_FORMATS = 2,
                            NON_NATIVE = 3,
                            NATIVE = 4
                        }
                    }

                    /** Properties of a DisplayUploadProductTypeEnum. */
                    interface IDisplayUploadProductTypeEnum {
                    }

                    /** Represents a DisplayUploadProductTypeEnum. */
                    class DisplayUploadProductTypeEnum implements IDisplayUploadProductTypeEnum {

                        /**
                         * Constructs a new DisplayUploadProductTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDisplayUploadProductTypeEnum);

                        /**
                         * Creates a new DisplayUploadProductTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DisplayUploadProductTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDisplayUploadProductTypeEnum): google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum;

                        /**
                         * Encodes the specified DisplayUploadProductTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum.verify|verify} messages.
                         * @param message DisplayUploadProductTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDisplayUploadProductTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DisplayUploadProductTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum.verify|verify} messages.
                         * @param message DisplayUploadProductTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDisplayUploadProductTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DisplayUploadProductTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DisplayUploadProductTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum;

                        /**
                         * Decodes a DisplayUploadProductTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DisplayUploadProductTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum;

                        /**
                         * Verifies a DisplayUploadProductTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DisplayUploadProductTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DisplayUploadProductTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum;

                        /**
                         * Creates a plain object from a DisplayUploadProductTypeEnum message. Also converts values to other types if specified.
                         * @param message DisplayUploadProductTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DisplayUploadProductTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DisplayUploadProductTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DisplayUploadProductTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DisplayUploadProductTypeEnum {

                        /** DisplayUploadProductType enum. */
                        enum DisplayUploadProductType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HTML5_UPLOAD_AD = 2,
                            DYNAMIC_HTML5_EDUCATION_AD = 3,
                            DYNAMIC_HTML5_FLIGHT_AD = 4,
                            DYNAMIC_HTML5_HOTEL_RENTAL_AD = 5,
                            DYNAMIC_HTML5_JOB_AD = 6,
                            DYNAMIC_HTML5_LOCAL_AD = 7,
                            DYNAMIC_HTML5_REAL_ESTATE_AD = 8,
                            DYNAMIC_HTML5_CUSTOM_AD = 9,
                            DYNAMIC_HTML5_TRAVEL_AD = 10,
                            DYNAMIC_HTML5_HOTEL_AD = 11
                        }
                    }

                    /** Properties of a LegacyAppInstallAdAppStoreEnum. */
                    interface ILegacyAppInstallAdAppStoreEnum {
                    }

                    /** Represents a LegacyAppInstallAdAppStoreEnum. */
                    class LegacyAppInstallAdAppStoreEnum implements ILegacyAppInstallAdAppStoreEnum {

                        /**
                         * Constructs a new LegacyAppInstallAdAppStoreEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILegacyAppInstallAdAppStoreEnum);

                        /**
                         * Creates a new LegacyAppInstallAdAppStoreEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LegacyAppInstallAdAppStoreEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILegacyAppInstallAdAppStoreEnum): google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum;

                        /**
                         * Encodes the specified LegacyAppInstallAdAppStoreEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum.verify|verify} messages.
                         * @param message LegacyAppInstallAdAppStoreEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILegacyAppInstallAdAppStoreEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LegacyAppInstallAdAppStoreEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum.verify|verify} messages.
                         * @param message LegacyAppInstallAdAppStoreEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILegacyAppInstallAdAppStoreEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LegacyAppInstallAdAppStoreEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LegacyAppInstallAdAppStoreEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum;

                        /**
                         * Decodes a LegacyAppInstallAdAppStoreEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LegacyAppInstallAdAppStoreEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum;

                        /**
                         * Verifies a LegacyAppInstallAdAppStoreEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LegacyAppInstallAdAppStoreEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LegacyAppInstallAdAppStoreEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum;

                        /**
                         * Creates a plain object from a LegacyAppInstallAdAppStoreEnum message. Also converts values to other types if specified.
                         * @param message LegacyAppInstallAdAppStoreEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LegacyAppInstallAdAppStoreEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LegacyAppInstallAdAppStoreEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LegacyAppInstallAdAppStoreEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LegacyAppInstallAdAppStoreEnum {

                        /** LegacyAppInstallAdAppStore enum. */
                        enum LegacyAppInstallAdAppStore {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPLE_APP_STORE = 2,
                            GOOGLE_PLAY = 3,
                            WINDOWS_STORE = 4,
                            WINDOWS_PHONE_STORE = 5,
                            CN_APP_STORE = 6
                        }
                    }

                    /** Properties of a MimeTypeEnum. */
                    interface IMimeTypeEnum {
                    }

                    /** Represents a MimeTypeEnum. */
                    class MimeTypeEnum implements IMimeTypeEnum {

                        /**
                         * Constructs a new MimeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IMimeTypeEnum);

                        /**
                         * Creates a new MimeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MimeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IMimeTypeEnum): google.ads.googleads.v23.enums.MimeTypeEnum;

                        /**
                         * Encodes the specified MimeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.MimeTypeEnum.verify|verify} messages.
                         * @param message MimeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IMimeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MimeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.MimeTypeEnum.verify|verify} messages.
                         * @param message MimeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IMimeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MimeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MimeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.MimeTypeEnum;

                        /**
                         * Decodes a MimeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MimeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.MimeTypeEnum;

                        /**
                         * Verifies a MimeTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MimeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MimeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.MimeTypeEnum;

                        /**
                         * Creates a plain object from a MimeTypeEnum message. Also converts values to other types if specified.
                         * @param message MimeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.MimeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MimeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MimeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MimeTypeEnum {

                        /** MimeType enum. */
                        enum MimeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IMAGE_JPEG = 2,
                            IMAGE_GIF = 3,
                            IMAGE_PNG = 4,
                            FLASH = 5,
                            TEXT_HTML = 6,
                            PDF = 7,
                            MSWORD = 8,
                            MSEXCEL = 9,
                            RTF = 10,
                            AUDIO_WAV = 11,
                            AUDIO_MP3 = 12,
                            HTML5_AD_ZIP = 13
                        }
                    }

                    /** Properties of a VideoThumbnailEnum. */
                    interface IVideoThumbnailEnum {
                    }

                    /** Represents a VideoThumbnailEnum. */
                    class VideoThumbnailEnum implements IVideoThumbnailEnum {

                        /**
                         * Constructs a new VideoThumbnailEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IVideoThumbnailEnum);

                        /**
                         * Creates a new VideoThumbnailEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoThumbnailEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IVideoThumbnailEnum): google.ads.googleads.v23.enums.VideoThumbnailEnum;

                        /**
                         * Encodes the specified VideoThumbnailEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.VideoThumbnailEnum.verify|verify} messages.
                         * @param message VideoThumbnailEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IVideoThumbnailEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoThumbnailEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.VideoThumbnailEnum.verify|verify} messages.
                         * @param message VideoThumbnailEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IVideoThumbnailEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoThumbnailEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VideoThumbnailEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.VideoThumbnailEnum;

                        /**
                         * Decodes a VideoThumbnailEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VideoThumbnailEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.VideoThumbnailEnum;

                        /**
                         * Verifies a VideoThumbnailEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VideoThumbnailEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VideoThumbnailEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.VideoThumbnailEnum;

                        /**
                         * Creates a plain object from a VideoThumbnailEnum message. Also converts values to other types if specified.
                         * @param message VideoThumbnailEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.VideoThumbnailEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VideoThumbnailEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VideoThumbnailEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VideoThumbnailEnum {

                        /** VideoThumbnail enum. */
                        enum VideoThumbnail {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DEFAULT_THUMBNAIL = 2,
                            THUMBNAIL_1 = 3,
                            THUMBNAIL_2 = 4,
                            THUMBNAIL_3 = 5
                        }
                    }

                    /** Properties of an ApplicationInstanceEnum. */
                    interface IApplicationInstanceEnum {
                    }

                    /** Represents an ApplicationInstanceEnum. */
                    class ApplicationInstanceEnum implements IApplicationInstanceEnum {

                        /**
                         * Constructs a new ApplicationInstanceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IApplicationInstanceEnum);

                        /**
                         * Creates a new ApplicationInstanceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplicationInstanceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IApplicationInstanceEnum): google.ads.googleads.v23.enums.ApplicationInstanceEnum;

                        /**
                         * Encodes the specified ApplicationInstanceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ApplicationInstanceEnum.verify|verify} messages.
                         * @param message ApplicationInstanceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IApplicationInstanceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplicationInstanceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ApplicationInstanceEnum.verify|verify} messages.
                         * @param message ApplicationInstanceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IApplicationInstanceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplicationInstanceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApplicationInstanceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ApplicationInstanceEnum;

                        /**
                         * Decodes an ApplicationInstanceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApplicationInstanceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ApplicationInstanceEnum;

                        /**
                         * Verifies an ApplicationInstanceEnum message.
                         * @param message Plain 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 ApplicationInstanceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApplicationInstanceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ApplicationInstanceEnum;

                        /**
                         * Creates a plain object from an ApplicationInstanceEnum message. Also converts values to other types if specified.
                         * @param message ApplicationInstanceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ApplicationInstanceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplicationInstanceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApplicationInstanceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ApplicationInstanceEnum {

                        /** ApplicationInstance enum. */
                        enum ApplicationInstance {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DEVELOPMENT_AND_TESTING = 2,
                            PRODUCTION = 3
                        }
                    }

                    /** Properties of a ChainRelationshipTypeEnum. */
                    interface IChainRelationshipTypeEnum {
                    }

                    /** Represents a ChainRelationshipTypeEnum. */
                    class ChainRelationshipTypeEnum implements IChainRelationshipTypeEnum {

                        /**
                         * Constructs a new ChainRelationshipTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IChainRelationshipTypeEnum);

                        /**
                         * Creates a new ChainRelationshipTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChainRelationshipTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IChainRelationshipTypeEnum): google.ads.googleads.v23.enums.ChainRelationshipTypeEnum;

                        /**
                         * Encodes the specified ChainRelationshipTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ChainRelationshipTypeEnum.verify|verify} messages.
                         * @param message ChainRelationshipTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IChainRelationshipTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChainRelationshipTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ChainRelationshipTypeEnum.verify|verify} messages.
                         * @param message ChainRelationshipTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IChainRelationshipTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChainRelationshipTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChainRelationshipTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ChainRelationshipTypeEnum;

                        /**
                         * Decodes a ChainRelationshipTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChainRelationshipTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ChainRelationshipTypeEnum;

                        /**
                         * Verifies a ChainRelationshipTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChainRelationshipTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChainRelationshipTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ChainRelationshipTypeEnum;

                        /**
                         * Creates a plain object from a ChainRelationshipTypeEnum message. Also converts values to other types if specified.
                         * @param message ChainRelationshipTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ChainRelationshipTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChainRelationshipTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChainRelationshipTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChainRelationshipTypeEnum {

                        /** ChainRelationshipType enum. */
                        enum ChainRelationshipType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AUTO_DEALERS = 2,
                            GENERAL_RETAILERS = 3
                        }
                    }

                    /** Properties of a LocationOwnershipTypeEnum. */
                    interface ILocationOwnershipTypeEnum {
                    }

                    /** Represents a LocationOwnershipTypeEnum. */
                    class LocationOwnershipTypeEnum implements ILocationOwnershipTypeEnum {

                        /**
                         * Constructs a new LocationOwnershipTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocationOwnershipTypeEnum);

                        /**
                         * Creates a new LocationOwnershipTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationOwnershipTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocationOwnershipTypeEnum): google.ads.googleads.v23.enums.LocationOwnershipTypeEnum;

                        /**
                         * Encodes the specified LocationOwnershipTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.verify|verify} messages.
                         * @param message LocationOwnershipTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocationOwnershipTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationOwnershipTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocationOwnershipTypeEnum.verify|verify} messages.
                         * @param message LocationOwnershipTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocationOwnershipTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationOwnershipTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationOwnershipTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocationOwnershipTypeEnum;

                        /**
                         * Decodes a LocationOwnershipTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationOwnershipTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocationOwnershipTypeEnum;

                        /**
                         * Verifies a LocationOwnershipTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationOwnershipTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationOwnershipTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocationOwnershipTypeEnum;

                        /**
                         * Creates a plain object from a LocationOwnershipTypeEnum message. Also converts values to other types if specified.
                         * @param message LocationOwnershipTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocationOwnershipTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationOwnershipTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationOwnershipTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocationOwnershipTypeEnum {

                        /** LocationOwnershipType enum. */
                        enum LocationOwnershipType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_OWNER = 2,
                            AFFILIATE = 3
                        }
                    }

                    /** Properties of a LocationStringFilterTypeEnum. */
                    interface ILocationStringFilterTypeEnum {
                    }

                    /** Represents a LocationStringFilterTypeEnum. */
                    class LocationStringFilterTypeEnum implements ILocationStringFilterTypeEnum {

                        /**
                         * Constructs a new LocationStringFilterTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocationStringFilterTypeEnum);

                        /**
                         * Creates a new LocationStringFilterTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationStringFilterTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocationStringFilterTypeEnum): google.ads.googleads.v23.enums.LocationStringFilterTypeEnum;

                        /**
                         * Encodes the specified LocationStringFilterTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocationStringFilterTypeEnum.verify|verify} messages.
                         * @param message LocationStringFilterTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocationStringFilterTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationStringFilterTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocationStringFilterTypeEnum.verify|verify} messages.
                         * @param message LocationStringFilterTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocationStringFilterTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationStringFilterTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationStringFilterTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocationStringFilterTypeEnum;

                        /**
                         * Decodes a LocationStringFilterTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationStringFilterTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocationStringFilterTypeEnum;

                        /**
                         * Verifies a LocationStringFilterTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationStringFilterTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationStringFilterTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocationStringFilterTypeEnum;

                        /**
                         * Creates a plain object from a LocationStringFilterTypeEnum message. Also converts values to other types if specified.
                         * @param message LocationStringFilterTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocationStringFilterTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationStringFilterTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationStringFilterTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocationStringFilterTypeEnum {

                        /** LocationStringFilterType enum. */
                        enum LocationStringFilterType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXACT = 2
                        }
                    }

                    /** Properties of an AgeRangeTypeEnum. */
                    interface IAgeRangeTypeEnum {
                    }

                    /** Represents an AgeRangeTypeEnum. */
                    class AgeRangeTypeEnum implements IAgeRangeTypeEnum {

                        /**
                         * Constructs a new AgeRangeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAgeRangeTypeEnum);

                        /**
                         * Creates a new AgeRangeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AgeRangeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAgeRangeTypeEnum): google.ads.googleads.v23.enums.AgeRangeTypeEnum;

                        /**
                         * Encodes the specified AgeRangeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AgeRangeTypeEnum.verify|verify} messages.
                         * @param message AgeRangeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAgeRangeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AgeRangeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AgeRangeTypeEnum.verify|verify} messages.
                         * @param message AgeRangeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAgeRangeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeRangeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AgeRangeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AgeRangeTypeEnum;

                        /**
                         * Decodes an AgeRangeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AgeRangeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AgeRangeTypeEnum;

                        /**
                         * Verifies an AgeRangeTypeEnum message.
                         * @param message Plain 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 AgeRangeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AgeRangeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AgeRangeTypeEnum;

                        /**
                         * Creates a plain object from an AgeRangeTypeEnum message. Also converts values to other types if specified.
                         * @param message AgeRangeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AgeRangeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AgeRangeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AgeRangeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AgeRangeTypeEnum {

                        /** AgeRangeType enum. */
                        enum AgeRangeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AGE_RANGE_18_24 = 503001,
                            AGE_RANGE_25_34 = 503002,
                            AGE_RANGE_35_44 = 503003,
                            AGE_RANGE_45_54 = 503004,
                            AGE_RANGE_55_64 = 503005,
                            AGE_RANGE_65_UP = 503006,
                            AGE_RANGE_UNDETERMINED = 503999
                        }
                    }

                    /** Properties of an AppPaymentModelTypeEnum. */
                    interface IAppPaymentModelTypeEnum {
                    }

                    /** Represents an AppPaymentModelTypeEnum. */
                    class AppPaymentModelTypeEnum implements IAppPaymentModelTypeEnum {

                        /**
                         * Constructs a new AppPaymentModelTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAppPaymentModelTypeEnum);

                        /**
                         * Creates a new AppPaymentModelTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppPaymentModelTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAppPaymentModelTypeEnum): google.ads.googleads.v23.enums.AppPaymentModelTypeEnum;

                        /**
                         * Encodes the specified AppPaymentModelTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AppPaymentModelTypeEnum.verify|verify} messages.
                         * @param message AppPaymentModelTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAppPaymentModelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppPaymentModelTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AppPaymentModelTypeEnum.verify|verify} messages.
                         * @param message AppPaymentModelTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAppPaymentModelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppPaymentModelTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppPaymentModelTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AppPaymentModelTypeEnum;

                        /**
                         * Decodes an AppPaymentModelTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppPaymentModelTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AppPaymentModelTypeEnum;

                        /**
                         * Verifies an AppPaymentModelTypeEnum message.
                         * @param message Plain 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 AppPaymentModelTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppPaymentModelTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AppPaymentModelTypeEnum;

                        /**
                         * Creates a plain object from an AppPaymentModelTypeEnum message. Also converts values to other types if specified.
                         * @param message AppPaymentModelTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AppPaymentModelTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppPaymentModelTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppPaymentModelTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AppPaymentModelTypeEnum {

                        /** AppPaymentModelType enum. */
                        enum AppPaymentModelType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PAID = 30
                        }
                    }

                    /** Properties of a BrandRequestRejectionReasonEnum. */
                    interface IBrandRequestRejectionReasonEnum {
                    }

                    /** Represents a BrandRequestRejectionReasonEnum. */
                    class BrandRequestRejectionReasonEnum implements IBrandRequestRejectionReasonEnum {

                        /**
                         * Constructs a new BrandRequestRejectionReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBrandRequestRejectionReasonEnum);

                        /**
                         * Creates a new BrandRequestRejectionReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandRequestRejectionReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBrandRequestRejectionReasonEnum): google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum;

                        /**
                         * Encodes the specified BrandRequestRejectionReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum.verify|verify} messages.
                         * @param message BrandRequestRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBrandRequestRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandRequestRejectionReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum.verify|verify} messages.
                         * @param message BrandRequestRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBrandRequestRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandRequestRejectionReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandRequestRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum;

                        /**
                         * Decodes a BrandRequestRejectionReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandRequestRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum;

                        /**
                         * Verifies a BrandRequestRejectionReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandRequestRejectionReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandRequestRejectionReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum;

                        /**
                         * Creates a plain object from a BrandRequestRejectionReasonEnum message. Also converts values to other types if specified.
                         * @param message BrandRequestRejectionReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BrandRequestRejectionReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandRequestRejectionReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandRequestRejectionReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BrandRequestRejectionReasonEnum {

                        /** BrandRequestRejectionReason enum. */
                        enum BrandRequestRejectionReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXISTING_BRAND = 2,
                            EXISTING_BRAND_VARIANT = 3,
                            INCORRECT_INFORMATION = 4,
                            NOT_A_BRAND = 5
                        }
                    }

                    /** Properties of a BrandStateEnum. */
                    interface IBrandStateEnum {
                    }

                    /** Represents a BrandStateEnum. */
                    class BrandStateEnum implements IBrandStateEnum {

                        /**
                         * Constructs a new BrandStateEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBrandStateEnum);

                        /**
                         * Creates a new BrandStateEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandStateEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBrandStateEnum): google.ads.googleads.v23.enums.BrandStateEnum;

                        /**
                         * Encodes the specified BrandStateEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BrandStateEnum.verify|verify} messages.
                         * @param message BrandStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBrandStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandStateEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BrandStateEnum.verify|verify} messages.
                         * @param message BrandStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBrandStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandStateEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BrandStateEnum;

                        /**
                         * Decodes a BrandStateEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BrandStateEnum;

                        /**
                         * Verifies a BrandStateEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandStateEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandStateEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BrandStateEnum;

                        /**
                         * Creates a plain object from a BrandStateEnum message. Also converts values to other types if specified.
                         * @param message BrandStateEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BrandStateEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandStateEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandStateEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BrandStateEnum {

                        /** BrandState enum. */
                        enum BrandState {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            DEPRECATED = 3,
                            UNVERIFIED = 4,
                            APPROVED = 5,
                            CANCELLED = 6,
                            REJECTED = 7
                        }
                    }

                    /** Properties of a ContentLabelTypeEnum. */
                    interface IContentLabelTypeEnum {
                    }

                    /** Represents a ContentLabelTypeEnum. */
                    class ContentLabelTypeEnum implements IContentLabelTypeEnum {

                        /**
                         * Constructs a new ContentLabelTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IContentLabelTypeEnum);

                        /**
                         * Creates a new ContentLabelTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ContentLabelTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IContentLabelTypeEnum): google.ads.googleads.v23.enums.ContentLabelTypeEnum;

                        /**
                         * Encodes the specified ContentLabelTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ContentLabelTypeEnum.verify|verify} messages.
                         * @param message ContentLabelTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IContentLabelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContentLabelTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ContentLabelTypeEnum.verify|verify} messages.
                         * @param message ContentLabelTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IContentLabelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContentLabelTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ContentLabelTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ContentLabelTypeEnum;

                        /**
                         * Decodes a ContentLabelTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ContentLabelTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ContentLabelTypeEnum;

                        /**
                         * Verifies a ContentLabelTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContentLabelTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ContentLabelTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ContentLabelTypeEnum;

                        /**
                         * Creates a plain object from a ContentLabelTypeEnum message. Also converts values to other types if specified.
                         * @param message ContentLabelTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ContentLabelTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContentLabelTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ContentLabelTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ContentLabelTypeEnum {

                        /** ContentLabelType enum. */
                        enum ContentLabelType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEXUALLY_SUGGESTIVE = 2,
                            BELOW_THE_FOLD = 3,
                            PARKED_DOMAIN = 4,
                            JUVENILE = 6,
                            PROFANITY = 7,
                            TRAGEDY = 8,
                            VIDEO = 9,
                            VIDEO_RATING_DV_G = 10,
                            VIDEO_RATING_DV_PG = 11,
                            VIDEO_RATING_DV_T = 12,
                            VIDEO_RATING_DV_MA = 13,
                            VIDEO_NOT_YET_RATED = 14,
                            EMBEDDED_VIDEO = 15,
                            LIVE_STREAMING_VIDEO = 16,
                            SOCIAL_ISSUES = 17,
                            BRAND_SUITABILITY_CONTENT_FOR_FAMILIES = 18,
                            BRAND_SUITABILITY_GAMES_FIGHTING = 19,
                            BRAND_SUITABILITY_GAMES_MATURE = 20,
                            BRAND_SUITABILITY_HEALTH_SENSITIVE = 21,
                            BRAND_SUITABILITY_HEALTH_SOURCE_UNDETERMINED = 22,
                            BRAND_SUITABILITY_NEWS_RECENT = 23,
                            BRAND_SUITABILITY_NEWS_SENSITIVE = 24,
                            BRAND_SUITABILITY_NEWS_SOURCE_NOT_FEATURED = 25,
                            BRAND_SUITABILITY_POLITICS = 26,
                            BRAND_SUITABILITY_RELIGION = 27
                        }
                    }

                    /** Properties of a DayOfWeekEnum. */
                    interface IDayOfWeekEnum {
                    }

                    /** Represents a DayOfWeekEnum. */
                    class DayOfWeekEnum implements IDayOfWeekEnum {

                        /**
                         * Constructs a new DayOfWeekEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDayOfWeekEnum);

                        /**
                         * Creates a new DayOfWeekEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DayOfWeekEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDayOfWeekEnum): google.ads.googleads.v23.enums.DayOfWeekEnum;

                        /**
                         * Encodes the specified DayOfWeekEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DayOfWeekEnum.verify|verify} messages.
                         * @param message DayOfWeekEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDayOfWeekEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DayOfWeekEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DayOfWeekEnum.verify|verify} messages.
                         * @param message DayOfWeekEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDayOfWeekEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DayOfWeekEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DayOfWeekEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DayOfWeekEnum;

                        /**
                         * Decodes a DayOfWeekEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DayOfWeekEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DayOfWeekEnum;

                        /**
                         * Verifies a DayOfWeekEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DayOfWeekEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DayOfWeekEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DayOfWeekEnum;

                        /**
                         * Creates a plain object from a DayOfWeekEnum message. Also converts values to other types if specified.
                         * @param message DayOfWeekEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DayOfWeekEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DayOfWeekEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DayOfWeekEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DayOfWeekEnum {

                        /** DayOfWeek enum. */
                        enum DayOfWeek {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MONDAY = 2,
                            TUESDAY = 3,
                            WEDNESDAY = 4,
                            THURSDAY = 5,
                            FRIDAY = 6,
                            SATURDAY = 7,
                            SUNDAY = 8
                        }
                    }

                    /** Properties of a DeviceEnum. */
                    interface IDeviceEnum {
                    }

                    /** Represents a DeviceEnum. */
                    class DeviceEnum implements IDeviceEnum {

                        /**
                         * Constructs a new DeviceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDeviceEnum);

                        /**
                         * Creates a new DeviceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeviceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDeviceEnum): google.ads.googleads.v23.enums.DeviceEnum;

                        /**
                         * Encodes the specified DeviceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DeviceEnum.verify|verify} messages.
                         * @param message DeviceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeviceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DeviceEnum.verify|verify} messages.
                         * @param message DeviceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeviceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DeviceEnum;

                        /**
                         * Decodes a DeviceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DeviceEnum;

                        /**
                         * Verifies a DeviceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DeviceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeviceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DeviceEnum;

                        /**
                         * Creates a plain object from a DeviceEnum message. Also converts values to other types if specified.
                         * @param message DeviceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DeviceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeviceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeviceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DeviceEnum {

                        /** Device enum. */
                        enum Device {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MOBILE = 2,
                            TABLET = 3,
                            DESKTOP = 4,
                            CONNECTED_TV = 6,
                            OTHER = 5
                        }
                    }

                    /** Properties of a GenderTypeEnum. */
                    interface IGenderTypeEnum {
                    }

                    /** Represents a GenderTypeEnum. */
                    class GenderTypeEnum implements IGenderTypeEnum {

                        /**
                         * Constructs a new GenderTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGenderTypeEnum);

                        /**
                         * Creates a new GenderTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenderTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGenderTypeEnum): google.ads.googleads.v23.enums.GenderTypeEnum;

                        /**
                         * Encodes the specified GenderTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GenderTypeEnum.verify|verify} messages.
                         * @param message GenderTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGenderTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenderTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GenderTypeEnum.verify|verify} messages.
                         * @param message GenderTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGenderTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenderTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenderTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GenderTypeEnum;

                        /**
                         * Decodes a GenderTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenderTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GenderTypeEnum;

                        /**
                         * Verifies a GenderTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenderTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenderTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GenderTypeEnum;

                        /**
                         * Creates a plain object from a GenderTypeEnum message. Also converts values to other types if specified.
                         * @param message GenderTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GenderTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenderTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenderTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GenderTypeEnum {

                        /** GenderType enum. */
                        enum GenderType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MALE = 10,
                            FEMALE = 11,
                            UNDETERMINED = 20
                        }
                    }

                    /** Properties of a HotelDateSelectionTypeEnum. */
                    interface IHotelDateSelectionTypeEnum {
                    }

                    /** Represents a HotelDateSelectionTypeEnum. */
                    class HotelDateSelectionTypeEnum implements IHotelDateSelectionTypeEnum {

                        /**
                         * Constructs a new HotelDateSelectionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IHotelDateSelectionTypeEnum);

                        /**
                         * Creates a new HotelDateSelectionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelDateSelectionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IHotelDateSelectionTypeEnum): google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum;

                        /**
                         * Encodes the specified HotelDateSelectionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.verify|verify} messages.
                         * @param message HotelDateSelectionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IHotelDateSelectionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelDateSelectionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum.verify|verify} messages.
                         * @param message HotelDateSelectionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IHotelDateSelectionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelDateSelectionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelDateSelectionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum;

                        /**
                         * Decodes a HotelDateSelectionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelDateSelectionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum;

                        /**
                         * Verifies a HotelDateSelectionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelDateSelectionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelDateSelectionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum;

                        /**
                         * Creates a plain object from a HotelDateSelectionTypeEnum message. Also converts values to other types if specified.
                         * @param message HotelDateSelectionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.HotelDateSelectionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelDateSelectionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelDateSelectionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace HotelDateSelectionTypeEnum {

                        /** HotelDateSelectionType enum. */
                        enum HotelDateSelectionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DEFAULT_SELECTION = 50,
                            USER_SELECTED = 51
                        }
                    }

                    /** Properties of an IncomeRangeTypeEnum. */
                    interface IIncomeRangeTypeEnum {
                    }

                    /** Represents an IncomeRangeTypeEnum. */
                    class IncomeRangeTypeEnum implements IIncomeRangeTypeEnum {

                        /**
                         * Constructs a new IncomeRangeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IIncomeRangeTypeEnum);

                        /**
                         * Creates a new IncomeRangeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IncomeRangeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IIncomeRangeTypeEnum): google.ads.googleads.v23.enums.IncomeRangeTypeEnum;

                        /**
                         * Encodes the specified IncomeRangeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.IncomeRangeTypeEnum.verify|verify} messages.
                         * @param message IncomeRangeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IIncomeRangeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncomeRangeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.IncomeRangeTypeEnum.verify|verify} messages.
                         * @param message IncomeRangeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IIncomeRangeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncomeRangeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IncomeRangeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.IncomeRangeTypeEnum;

                        /**
                         * Decodes an IncomeRangeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IncomeRangeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.IncomeRangeTypeEnum;

                        /**
                         * Verifies an IncomeRangeTypeEnum message.
                         * @param message Plain 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 IncomeRangeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IncomeRangeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.IncomeRangeTypeEnum;

                        /**
                         * Creates a plain object from an IncomeRangeTypeEnum message. Also converts values to other types if specified.
                         * @param message IncomeRangeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.IncomeRangeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncomeRangeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IncomeRangeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IncomeRangeTypeEnum {

                        /** IncomeRangeType enum. */
                        enum IncomeRangeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INCOME_RANGE_0_50 = 510001,
                            INCOME_RANGE_50_60 = 510002,
                            INCOME_RANGE_60_70 = 510003,
                            INCOME_RANGE_70_80 = 510004,
                            INCOME_RANGE_80_90 = 510005,
                            INCOME_RANGE_90_UP = 510006,
                            INCOME_RANGE_UNDETERMINED = 510000
                        }
                    }

                    /** Properties of an InteractionTypeEnum. */
                    interface IInteractionTypeEnum {
                    }

                    /** Represents an InteractionTypeEnum. */
                    class InteractionTypeEnum implements IInteractionTypeEnum {

                        /**
                         * Constructs a new InteractionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IInteractionTypeEnum);

                        /**
                         * Creates a new InteractionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InteractionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IInteractionTypeEnum): google.ads.googleads.v23.enums.InteractionTypeEnum;

                        /**
                         * Encodes the specified InteractionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.InteractionTypeEnum.verify|verify} messages.
                         * @param message InteractionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IInteractionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InteractionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.InteractionTypeEnum.verify|verify} messages.
                         * @param message InteractionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IInteractionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InteractionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InteractionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.InteractionTypeEnum;

                        /**
                         * Decodes an InteractionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InteractionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.InteractionTypeEnum;

                        /**
                         * Verifies an InteractionTypeEnum message.
                         * @param message Plain 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 InteractionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InteractionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.InteractionTypeEnum;

                        /**
                         * Creates a plain object from an InteractionTypeEnum message. Also converts values to other types if specified.
                         * @param message InteractionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.InteractionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InteractionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InteractionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace InteractionTypeEnum {

                        /** InteractionType enum. */
                        enum InteractionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CALLS = 8000
                        }
                    }

                    /** Properties of a KeywordMatchTypeEnum. */
                    interface IKeywordMatchTypeEnum {
                    }

                    /** Represents a KeywordMatchTypeEnum. */
                    class KeywordMatchTypeEnum implements IKeywordMatchTypeEnum {

                        /**
                         * Constructs a new KeywordMatchTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IKeywordMatchTypeEnum);

                        /**
                         * Creates a new KeywordMatchTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordMatchTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IKeywordMatchTypeEnum): google.ads.googleads.v23.enums.KeywordMatchTypeEnum;

                        /**
                         * Encodes the specified KeywordMatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordMatchTypeEnum.verify|verify} messages.
                         * @param message KeywordMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IKeywordMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordMatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordMatchTypeEnum.verify|verify} messages.
                         * @param message KeywordMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IKeywordMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordMatchTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.KeywordMatchTypeEnum;

                        /**
                         * Decodes a KeywordMatchTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.KeywordMatchTypeEnum;

                        /**
                         * Verifies a KeywordMatchTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordMatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordMatchTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.KeywordMatchTypeEnum;

                        /**
                         * Creates a plain object from a KeywordMatchTypeEnum message. Also converts values to other types if specified.
                         * @param message KeywordMatchTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.KeywordMatchTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordMatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordMatchTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordMatchTypeEnum {

                        /** KeywordMatchType enum. */
                        enum KeywordMatchType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXACT = 2,
                            PHRASE = 3,
                            BROAD = 4
                        }
                    }

                    /** Properties of a ListingGroupTypeEnum. */
                    interface IListingGroupTypeEnum {
                    }

                    /** Represents a ListingGroupTypeEnum. */
                    class ListingGroupTypeEnum implements IListingGroupTypeEnum {

                        /**
                         * Constructs a new ListingGroupTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupTypeEnum);

                        /**
                         * Creates a new ListingGroupTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupTypeEnum): google.ads.googleads.v23.enums.ListingGroupTypeEnum;

                        /**
                         * Encodes the specified ListingGroupTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupTypeEnum.verify|verify} messages.
                         * @param message ListingGroupTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupTypeEnum.verify|verify} messages.
                         * @param message ListingGroupTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupTypeEnum;

                        /**
                         * Decodes a ListingGroupTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupTypeEnum;

                        /**
                         * Verifies a ListingGroupTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupTypeEnum;

                        /**
                         * Creates a plain object from a ListingGroupTypeEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupTypeEnum {

                        /** ListingGroupType enum. */
                        enum ListingGroupType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SUBDIVISION = 2,
                            UNIT = 3
                        }
                    }

                    /** Properties of a LocationGroupRadiusUnitsEnum. */
                    interface ILocationGroupRadiusUnitsEnum {
                    }

                    /** Represents a LocationGroupRadiusUnitsEnum. */
                    class LocationGroupRadiusUnitsEnum implements ILocationGroupRadiusUnitsEnum {

                        /**
                         * Constructs a new LocationGroupRadiusUnitsEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocationGroupRadiusUnitsEnum);

                        /**
                         * Creates a new LocationGroupRadiusUnitsEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationGroupRadiusUnitsEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocationGroupRadiusUnitsEnum): google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum;

                        /**
                         * Encodes the specified LocationGroupRadiusUnitsEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum.verify|verify} messages.
                         * @param message LocationGroupRadiusUnitsEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocationGroupRadiusUnitsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationGroupRadiusUnitsEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum.verify|verify} messages.
                         * @param message LocationGroupRadiusUnitsEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocationGroupRadiusUnitsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationGroupRadiusUnitsEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationGroupRadiusUnitsEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum;

                        /**
                         * Decodes a LocationGroupRadiusUnitsEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationGroupRadiusUnitsEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum;

                        /**
                         * Verifies a LocationGroupRadiusUnitsEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationGroupRadiusUnitsEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationGroupRadiusUnitsEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum;

                        /**
                         * Creates a plain object from a LocationGroupRadiusUnitsEnum message. Also converts values to other types if specified.
                         * @param message LocationGroupRadiusUnitsEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocationGroupRadiusUnitsEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationGroupRadiusUnitsEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationGroupRadiusUnitsEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocationGroupRadiusUnitsEnum {

                        /** LocationGroupRadiusUnits enum. */
                        enum LocationGroupRadiusUnits {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            METERS = 2,
                            MILES = 3,
                            MILLI_MILES = 4
                        }
                    }

                    /** Properties of a MinuteOfHourEnum. */
                    interface IMinuteOfHourEnum {
                    }

                    /** Represents a MinuteOfHourEnum. */
                    class MinuteOfHourEnum implements IMinuteOfHourEnum {

                        /**
                         * Constructs a new MinuteOfHourEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IMinuteOfHourEnum);

                        /**
                         * Creates a new MinuteOfHourEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MinuteOfHourEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IMinuteOfHourEnum): google.ads.googleads.v23.enums.MinuteOfHourEnum;

                        /**
                         * Encodes the specified MinuteOfHourEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.MinuteOfHourEnum.verify|verify} messages.
                         * @param message MinuteOfHourEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IMinuteOfHourEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MinuteOfHourEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.MinuteOfHourEnum.verify|verify} messages.
                         * @param message MinuteOfHourEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IMinuteOfHourEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MinuteOfHourEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MinuteOfHourEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.MinuteOfHourEnum;

                        /**
                         * Decodes a MinuteOfHourEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MinuteOfHourEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.MinuteOfHourEnum;

                        /**
                         * Verifies a MinuteOfHourEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MinuteOfHourEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MinuteOfHourEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.MinuteOfHourEnum;

                        /**
                         * Creates a plain object from a MinuteOfHourEnum message. Also converts values to other types if specified.
                         * @param message MinuteOfHourEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.MinuteOfHourEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MinuteOfHourEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MinuteOfHourEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MinuteOfHourEnum {

                        /** MinuteOfHour enum. */
                        enum MinuteOfHour {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ZERO = 2,
                            FIFTEEN = 3,
                            THIRTY = 4,
                            FORTY_FIVE = 5
                        }
                    }

                    /** Properties of a ParentalStatusTypeEnum. */
                    interface IParentalStatusTypeEnum {
                    }

                    /** Represents a ParentalStatusTypeEnum. */
                    class ParentalStatusTypeEnum implements IParentalStatusTypeEnum {

                        /**
                         * Constructs a new ParentalStatusTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IParentalStatusTypeEnum);

                        /**
                         * Creates a new ParentalStatusTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ParentalStatusTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IParentalStatusTypeEnum): google.ads.googleads.v23.enums.ParentalStatusTypeEnum;

                        /**
                         * Encodes the specified ParentalStatusTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ParentalStatusTypeEnum.verify|verify} messages.
                         * @param message ParentalStatusTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IParentalStatusTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ParentalStatusTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ParentalStatusTypeEnum.verify|verify} messages.
                         * @param message ParentalStatusTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IParentalStatusTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ParentalStatusTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ParentalStatusTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ParentalStatusTypeEnum;

                        /**
                         * Decodes a ParentalStatusTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ParentalStatusTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ParentalStatusTypeEnum;

                        /**
                         * Verifies a ParentalStatusTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ParentalStatusTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ParentalStatusTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ParentalStatusTypeEnum;

                        /**
                         * Creates a plain object from a ParentalStatusTypeEnum message. Also converts values to other types if specified.
                         * @param message ParentalStatusTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ParentalStatusTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ParentalStatusTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ParentalStatusTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ParentalStatusTypeEnum {

                        /** ParentalStatusType enum. */
                        enum ParentalStatusType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PARENT = 300,
                            NOT_A_PARENT = 301,
                            UNDETERMINED = 302
                        }
                    }

                    /** Properties of a ProductCategoryLevelEnum. */
                    interface IProductCategoryLevelEnum {
                    }

                    /** Represents a ProductCategoryLevelEnum. */
                    class ProductCategoryLevelEnum implements IProductCategoryLevelEnum {

                        /**
                         * Constructs a new ProductCategoryLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductCategoryLevelEnum);

                        /**
                         * Creates a new ProductCategoryLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductCategoryLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductCategoryLevelEnum): google.ads.googleads.v23.enums.ProductCategoryLevelEnum;

                        /**
                         * Encodes the specified ProductCategoryLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductCategoryLevelEnum.verify|verify} messages.
                         * @param message ProductCategoryLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductCategoryLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCategoryLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductCategoryLevelEnum.verify|verify} messages.
                         * @param message ProductCategoryLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductCategoryLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCategoryLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductCategoryLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductCategoryLevelEnum;

                        /**
                         * Decodes a ProductCategoryLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductCategoryLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductCategoryLevelEnum;

                        /**
                         * Verifies a ProductCategoryLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductCategoryLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductCategoryLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductCategoryLevelEnum;

                        /**
                         * Creates a plain object from a ProductCategoryLevelEnum message. Also converts values to other types if specified.
                         * @param message ProductCategoryLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductCategoryLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCategoryLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductCategoryLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductCategoryLevelEnum {

                        /** ProductCategoryLevel enum. */
                        enum ProductCategoryLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LEVEL1 = 2,
                            LEVEL2 = 3,
                            LEVEL3 = 4,
                            LEVEL4 = 5,
                            LEVEL5 = 6
                        }
                    }

                    /** Properties of a ProductChannelEnum. */
                    interface IProductChannelEnum {
                    }

                    /** Represents a ProductChannelEnum. */
                    class ProductChannelEnum implements IProductChannelEnum {

                        /**
                         * Constructs a new ProductChannelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductChannelEnum);

                        /**
                         * Creates a new ProductChannelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductChannelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductChannelEnum): google.ads.googleads.v23.enums.ProductChannelEnum;

                        /**
                         * Encodes the specified ProductChannelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductChannelEnum.verify|verify} messages.
                         * @param message ProductChannelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductChannelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductChannelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductChannelEnum.verify|verify} messages.
                         * @param message ProductChannelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductChannelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductChannelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductChannelEnum;

                        /**
                         * Decodes a ProductChannelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductChannelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductChannelEnum;

                        /**
                         * Verifies a ProductChannelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductChannelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductChannelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductChannelEnum;

                        /**
                         * Creates a plain object from a ProductChannelEnum message. Also converts values to other types if specified.
                         * @param message ProductChannelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductChannelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductChannelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductChannelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductChannelEnum {

                        /** ProductChannel enum. */
                        enum ProductChannel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ONLINE = 2,
                            LOCAL = 3
                        }
                    }

                    /** Properties of a ProductChannelExclusivityEnum. */
                    interface IProductChannelExclusivityEnum {
                    }

                    /** Represents a ProductChannelExclusivityEnum. */
                    class ProductChannelExclusivityEnum implements IProductChannelExclusivityEnum {

                        /**
                         * Constructs a new ProductChannelExclusivityEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductChannelExclusivityEnum);

                        /**
                         * Creates a new ProductChannelExclusivityEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductChannelExclusivityEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductChannelExclusivityEnum): google.ads.googleads.v23.enums.ProductChannelExclusivityEnum;

                        /**
                         * Encodes the specified ProductChannelExclusivityEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.verify|verify} messages.
                         * @param message ProductChannelExclusivityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductChannelExclusivityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductChannelExclusivityEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.verify|verify} messages.
                         * @param message ProductChannelExclusivityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductChannelExclusivityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelExclusivityEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductChannelExclusivityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductChannelExclusivityEnum;

                        /**
                         * Decodes a ProductChannelExclusivityEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductChannelExclusivityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductChannelExclusivityEnum;

                        /**
                         * Verifies a ProductChannelExclusivityEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductChannelExclusivityEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductChannelExclusivityEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductChannelExclusivityEnum;

                        /**
                         * Creates a plain object from a ProductChannelExclusivityEnum message. Also converts values to other types if specified.
                         * @param message ProductChannelExclusivityEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductChannelExclusivityEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductChannelExclusivityEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductChannelExclusivityEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductChannelExclusivityEnum {

                        /** ProductChannelExclusivity enum. */
                        enum ProductChannelExclusivity {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SINGLE_CHANNEL = 2,
                            MULTI_CHANNEL = 3
                        }
                    }

                    /** Properties of a ProductConditionEnum. */
                    interface IProductConditionEnum {
                    }

                    /** Represents a ProductConditionEnum. */
                    class ProductConditionEnum implements IProductConditionEnum {

                        /**
                         * Constructs a new ProductConditionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductConditionEnum);

                        /**
                         * Creates a new ProductConditionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductConditionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductConditionEnum): google.ads.googleads.v23.enums.ProductConditionEnum;

                        /**
                         * Encodes the specified ProductConditionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductConditionEnum.verify|verify} messages.
                         * @param message ProductConditionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductConditionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductConditionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductConditionEnum.verify|verify} messages.
                         * @param message ProductConditionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductConditionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductConditionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductConditionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductConditionEnum;

                        /**
                         * Decodes a ProductConditionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductConditionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductConditionEnum;

                        /**
                         * Verifies a ProductConditionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductConditionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductConditionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductConditionEnum;

                        /**
                         * Creates a plain object from a ProductConditionEnum message. Also converts values to other types if specified.
                         * @param message ProductConditionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductConditionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductConditionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductConditionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductConditionEnum {

                        /** ProductCondition enum. */
                        enum ProductCondition {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEW = 3,
                            REFURBISHED = 4,
                            USED = 5
                        }
                    }

                    /** Properties of a ProductCustomAttributeIndexEnum. */
                    interface IProductCustomAttributeIndexEnum {
                    }

                    /** Represents a ProductCustomAttributeIndexEnum. */
                    class ProductCustomAttributeIndexEnum implements IProductCustomAttributeIndexEnum {

                        /**
                         * Constructs a new ProductCustomAttributeIndexEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductCustomAttributeIndexEnum);

                        /**
                         * Creates a new ProductCustomAttributeIndexEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductCustomAttributeIndexEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductCustomAttributeIndexEnum): google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum;

                        /**
                         * Encodes the specified ProductCustomAttributeIndexEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum.verify|verify} messages.
                         * @param message ProductCustomAttributeIndexEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductCustomAttributeIndexEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCustomAttributeIndexEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum.verify|verify} messages.
                         * @param message ProductCustomAttributeIndexEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductCustomAttributeIndexEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCustomAttributeIndexEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductCustomAttributeIndexEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum;

                        /**
                         * Decodes a ProductCustomAttributeIndexEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductCustomAttributeIndexEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum;

                        /**
                         * Verifies a ProductCustomAttributeIndexEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductCustomAttributeIndexEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductCustomAttributeIndexEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum;

                        /**
                         * Creates a plain object from a ProductCustomAttributeIndexEnum message. Also converts values to other types if specified.
                         * @param message ProductCustomAttributeIndexEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductCustomAttributeIndexEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCustomAttributeIndexEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductCustomAttributeIndexEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductCustomAttributeIndexEnum {

                        /** ProductCustomAttributeIndex enum. */
                        enum ProductCustomAttributeIndex {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INDEX0 = 7,
                            INDEX1 = 8,
                            INDEX2 = 9,
                            INDEX3 = 10,
                            INDEX4 = 11
                        }
                    }

                    /** Properties of a ProductTypeLevelEnum. */
                    interface IProductTypeLevelEnum {
                    }

                    /** Represents a ProductTypeLevelEnum. */
                    class ProductTypeLevelEnum implements IProductTypeLevelEnum {

                        /**
                         * Constructs a new ProductTypeLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductTypeLevelEnum);

                        /**
                         * Creates a new ProductTypeLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductTypeLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductTypeLevelEnum): google.ads.googleads.v23.enums.ProductTypeLevelEnum;

                        /**
                         * Encodes the specified ProductTypeLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductTypeLevelEnum.verify|verify} messages.
                         * @param message ProductTypeLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductTypeLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductTypeLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductTypeLevelEnum.verify|verify} messages.
                         * @param message ProductTypeLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductTypeLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductTypeLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductTypeLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductTypeLevelEnum;

                        /**
                         * Decodes a ProductTypeLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductTypeLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductTypeLevelEnum;

                        /**
                         * Verifies a ProductTypeLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductTypeLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductTypeLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductTypeLevelEnum;

                        /**
                         * Creates a plain object from a ProductTypeLevelEnum message. Also converts values to other types if specified.
                         * @param message ProductTypeLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductTypeLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductTypeLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductTypeLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductTypeLevelEnum {

                        /** ProductTypeLevel enum. */
                        enum ProductTypeLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LEVEL1 = 7,
                            LEVEL2 = 8,
                            LEVEL3 = 9,
                            LEVEL4 = 10,
                            LEVEL5 = 11
                        }
                    }

                    /** Properties of a ProximityRadiusUnitsEnum. */
                    interface IProximityRadiusUnitsEnum {
                    }

                    /** Represents a ProximityRadiusUnitsEnum. */
                    class ProximityRadiusUnitsEnum implements IProximityRadiusUnitsEnum {

                        /**
                         * Constructs a new ProximityRadiusUnitsEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProximityRadiusUnitsEnum);

                        /**
                         * Creates a new ProximityRadiusUnitsEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProximityRadiusUnitsEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProximityRadiusUnitsEnum): google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum;

                        /**
                         * Encodes the specified ProximityRadiusUnitsEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum.verify|verify} messages.
                         * @param message ProximityRadiusUnitsEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProximityRadiusUnitsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProximityRadiusUnitsEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum.verify|verify} messages.
                         * @param message ProximityRadiusUnitsEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProximityRadiusUnitsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProximityRadiusUnitsEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProximityRadiusUnitsEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum;

                        /**
                         * Decodes a ProximityRadiusUnitsEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProximityRadiusUnitsEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum;

                        /**
                         * Verifies a ProximityRadiusUnitsEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProximityRadiusUnitsEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProximityRadiusUnitsEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum;

                        /**
                         * Creates a plain object from a ProximityRadiusUnitsEnum message. Also converts values to other types if specified.
                         * @param message ProximityRadiusUnitsEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProximityRadiusUnitsEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProximityRadiusUnitsEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProximityRadiusUnitsEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProximityRadiusUnitsEnum {

                        /** ProximityRadiusUnits enum. */
                        enum ProximityRadiusUnits {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MILES = 2,
                            KILOMETERS = 3
                        }
                    }

                    /** Properties of a WebpageConditionOperandEnum. */
                    interface IWebpageConditionOperandEnum {
                    }

                    /** Represents a WebpageConditionOperandEnum. */
                    class WebpageConditionOperandEnum implements IWebpageConditionOperandEnum {

                        /**
                         * Constructs a new WebpageConditionOperandEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IWebpageConditionOperandEnum);

                        /**
                         * Creates a new WebpageConditionOperandEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageConditionOperandEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IWebpageConditionOperandEnum): google.ads.googleads.v23.enums.WebpageConditionOperandEnum;

                        /**
                         * Encodes the specified WebpageConditionOperandEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.WebpageConditionOperandEnum.verify|verify} messages.
                         * @param message WebpageConditionOperandEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IWebpageConditionOperandEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageConditionOperandEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.WebpageConditionOperandEnum.verify|verify} messages.
                         * @param message WebpageConditionOperandEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IWebpageConditionOperandEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageConditionOperandEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WebpageConditionOperandEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.WebpageConditionOperandEnum;

                        /**
                         * Decodes a WebpageConditionOperandEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WebpageConditionOperandEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.WebpageConditionOperandEnum;

                        /**
                         * Verifies a WebpageConditionOperandEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageConditionOperandEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WebpageConditionOperandEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.WebpageConditionOperandEnum;

                        /**
                         * Creates a plain object from a WebpageConditionOperandEnum message. Also converts values to other types if specified.
                         * @param message WebpageConditionOperandEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.WebpageConditionOperandEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageConditionOperandEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WebpageConditionOperandEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace WebpageConditionOperandEnum {

                        /** WebpageConditionOperand enum. */
                        enum WebpageConditionOperand {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            URL = 2,
                            CATEGORY = 3,
                            PAGE_TITLE = 4,
                            PAGE_CONTENT = 5,
                            CUSTOM_LABEL = 6
                        }
                    }

                    /** Properties of a WebpageConditionOperatorEnum. */
                    interface IWebpageConditionOperatorEnum {
                    }

                    /** Represents a WebpageConditionOperatorEnum. */
                    class WebpageConditionOperatorEnum implements IWebpageConditionOperatorEnum {

                        /**
                         * Constructs a new WebpageConditionOperatorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IWebpageConditionOperatorEnum);

                        /**
                         * Creates a new WebpageConditionOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageConditionOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IWebpageConditionOperatorEnum): google.ads.googleads.v23.enums.WebpageConditionOperatorEnum;

                        /**
                         * Encodes the specified WebpageConditionOperatorEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.WebpageConditionOperatorEnum.verify|verify} messages.
                         * @param message WebpageConditionOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IWebpageConditionOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageConditionOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.WebpageConditionOperatorEnum.verify|verify} messages.
                         * @param message WebpageConditionOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IWebpageConditionOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageConditionOperatorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WebpageConditionOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.WebpageConditionOperatorEnum;

                        /**
                         * Decodes a WebpageConditionOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WebpageConditionOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.WebpageConditionOperatorEnum;

                        /**
                         * Verifies a WebpageConditionOperatorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageConditionOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WebpageConditionOperatorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.WebpageConditionOperatorEnum;

                        /**
                         * Creates a plain object from a WebpageConditionOperatorEnum message. Also converts values to other types if specified.
                         * @param message WebpageConditionOperatorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.WebpageConditionOperatorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageConditionOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WebpageConditionOperatorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace WebpageConditionOperatorEnum {

                        /** WebpageConditionOperator enum. */
                        enum WebpageConditionOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EQUALS = 2,
                            CONTAINS = 3
                        }
                    }

                    /** Properties of a BusinessMessageCallToActionTypeEnum. */
                    interface IBusinessMessageCallToActionTypeEnum {
                    }

                    /** Represents a BusinessMessageCallToActionTypeEnum. */
                    class BusinessMessageCallToActionTypeEnum implements IBusinessMessageCallToActionTypeEnum {

                        /**
                         * Constructs a new BusinessMessageCallToActionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBusinessMessageCallToActionTypeEnum);

                        /**
                         * Creates a new BusinessMessageCallToActionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessMessageCallToActionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBusinessMessageCallToActionTypeEnum): google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum;

                        /**
                         * Encodes the specified BusinessMessageCallToActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum.verify|verify} messages.
                         * @param message BusinessMessageCallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBusinessMessageCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessMessageCallToActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum.verify|verify} messages.
                         * @param message BusinessMessageCallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBusinessMessageCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BusinessMessageCallToActionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BusinessMessageCallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum;

                        /**
                         * Decodes a BusinessMessageCallToActionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BusinessMessageCallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum;

                        /**
                         * Verifies a BusinessMessageCallToActionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BusinessMessageCallToActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BusinessMessageCallToActionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum;

                        /**
                         * Creates a plain object from a BusinessMessageCallToActionTypeEnum message. Also converts values to other types if specified.
                         * @param message BusinessMessageCallToActionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BusinessMessageCallToActionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BusinessMessageCallToActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BusinessMessageCallToActionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BusinessMessageCallToActionTypeEnum {

                        /** BusinessMessageCallToActionType enum. */
                        enum BusinessMessageCallToActionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPLY_NOW = 2,
                            BOOK_NOW = 3,
                            CONTACT_US = 4,
                            GET_INFO = 5,
                            GET_OFFER = 6,
                            GET_QUOTE = 7,
                            GET_STARTED = 8,
                            LEARN_MORE = 9
                        }
                    }

                    /** Properties of a BusinessMessageProviderEnum. */
                    interface IBusinessMessageProviderEnum {
                    }

                    /** Represents a BusinessMessageProviderEnum. */
                    class BusinessMessageProviderEnum implements IBusinessMessageProviderEnum {

                        /**
                         * Constructs a new BusinessMessageProviderEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBusinessMessageProviderEnum);

                        /**
                         * Creates a new BusinessMessageProviderEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessMessageProviderEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBusinessMessageProviderEnum): google.ads.googleads.v23.enums.BusinessMessageProviderEnum;

                        /**
                         * Encodes the specified BusinessMessageProviderEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BusinessMessageProviderEnum.verify|verify} messages.
                         * @param message BusinessMessageProviderEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBusinessMessageProviderEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessMessageProviderEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BusinessMessageProviderEnum.verify|verify} messages.
                         * @param message BusinessMessageProviderEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBusinessMessageProviderEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BusinessMessageProviderEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BusinessMessageProviderEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BusinessMessageProviderEnum;

                        /**
                         * Decodes a BusinessMessageProviderEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BusinessMessageProviderEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BusinessMessageProviderEnum;

                        /**
                         * Verifies a BusinessMessageProviderEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BusinessMessageProviderEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BusinessMessageProviderEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BusinessMessageProviderEnum;

                        /**
                         * Creates a plain object from a BusinessMessageProviderEnum message. Also converts values to other types if specified.
                         * @param message BusinessMessageProviderEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BusinessMessageProviderEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BusinessMessageProviderEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BusinessMessageProviderEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BusinessMessageProviderEnum {

                        /** BusinessMessageProvider enum. */
                        enum BusinessMessageProvider {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WHATSAPP = 2,
                            FACEBOOK_MESSENGER = 3,
                            ZALO = 4
                        }
                    }

                    /** Properties of a CallConversionReportingStateEnum. */
                    interface ICallConversionReportingStateEnum {
                    }

                    /** Represents a CallConversionReportingStateEnum. */
                    class CallConversionReportingStateEnum implements ICallConversionReportingStateEnum {

                        /**
                         * Constructs a new CallConversionReportingStateEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICallConversionReportingStateEnum);

                        /**
                         * Creates a new CallConversionReportingStateEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallConversionReportingStateEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICallConversionReportingStateEnum): google.ads.googleads.v23.enums.CallConversionReportingStateEnum;

                        /**
                         * Encodes the specified CallConversionReportingStateEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CallConversionReportingStateEnum.verify|verify} messages.
                         * @param message CallConversionReportingStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICallConversionReportingStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallConversionReportingStateEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CallConversionReportingStateEnum.verify|verify} messages.
                         * @param message CallConversionReportingStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICallConversionReportingStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallConversionReportingStateEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallConversionReportingStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CallConversionReportingStateEnum;

                        /**
                         * Decodes a CallConversionReportingStateEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallConversionReportingStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CallConversionReportingStateEnum;

                        /**
                         * Verifies a CallConversionReportingStateEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallConversionReportingStateEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallConversionReportingStateEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CallConversionReportingStateEnum;

                        /**
                         * Creates a plain object from a CallConversionReportingStateEnum message. Also converts values to other types if specified.
                         * @param message CallConversionReportingStateEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CallConversionReportingStateEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallConversionReportingStateEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallConversionReportingStateEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CallConversionReportingStateEnum {

                        /** CallConversionReportingState enum. */
                        enum CallConversionReportingState {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DISABLED = 2,
                            USE_ACCOUNT_LEVEL_CALL_CONVERSION_ACTION = 3,
                            USE_RESOURCE_LEVEL_CALL_CONVERSION_ACTION = 4
                        }
                    }

                    /** Properties of a CallToActionTypeEnum. */
                    interface ICallToActionTypeEnum {
                    }

                    /** Represents a CallToActionTypeEnum. */
                    class CallToActionTypeEnum implements ICallToActionTypeEnum {

                        /**
                         * Constructs a new CallToActionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICallToActionTypeEnum);

                        /**
                         * Creates a new CallToActionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallToActionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICallToActionTypeEnum): google.ads.googleads.v23.enums.CallToActionTypeEnum;

                        /**
                         * Encodes the specified CallToActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CallToActionTypeEnum.verify|verify} messages.
                         * @param message CallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallToActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CallToActionTypeEnum.verify|verify} messages.
                         * @param message CallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallToActionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CallToActionTypeEnum;

                        /**
                         * Decodes a CallToActionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CallToActionTypeEnum;

                        /**
                         * Verifies a CallToActionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallToActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallToActionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CallToActionTypeEnum;

                        /**
                         * Creates a plain object from a CallToActionTypeEnum message. Also converts values to other types if specified.
                         * @param message CallToActionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CallToActionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallToActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallToActionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CallToActionTypeEnum {

                        /** CallToActionType enum. */
                        enum CallToActionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LEARN_MORE = 2,
                            GET_QUOTE = 3,
                            APPLY_NOW = 4,
                            SIGN_UP = 5,
                            CONTACT_US = 6,
                            SUBSCRIBE = 7,
                            DOWNLOAD = 8,
                            BOOK_NOW = 9,
                            SHOP_NOW = 10,
                            BUY_NOW = 11,
                            DONATE_NOW = 12,
                            ORDER_NOW = 13,
                            PLAY_NOW = 14,
                            SEE_MORE = 15,
                            START_NOW = 16,
                            VISIT_SITE = 17,
                            WATCH_NOW = 18
                        }
                    }

                    /** Properties of a LeadFormCallToActionTypeEnum. */
                    interface ILeadFormCallToActionTypeEnum {
                    }

                    /** Represents a LeadFormCallToActionTypeEnum. */
                    class LeadFormCallToActionTypeEnum implements ILeadFormCallToActionTypeEnum {

                        /**
                         * Constructs a new LeadFormCallToActionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILeadFormCallToActionTypeEnum);

                        /**
                         * Creates a new LeadFormCallToActionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormCallToActionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILeadFormCallToActionTypeEnum): google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum;

                        /**
                         * Encodes the specified LeadFormCallToActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum.verify|verify} messages.
                         * @param message LeadFormCallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILeadFormCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormCallToActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum.verify|verify} messages.
                         * @param message LeadFormCallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILeadFormCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormCallToActionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LeadFormCallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum;

                        /**
                         * Decodes a LeadFormCallToActionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LeadFormCallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum;

                        /**
                         * Verifies a LeadFormCallToActionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormCallToActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LeadFormCallToActionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum;

                        /**
                         * Creates a plain object from a LeadFormCallToActionTypeEnum message. Also converts values to other types if specified.
                         * @param message LeadFormCallToActionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LeadFormCallToActionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormCallToActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LeadFormCallToActionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LeadFormCallToActionTypeEnum {

                        /** LeadFormCallToActionType enum. */
                        enum LeadFormCallToActionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LEARN_MORE = 2,
                            GET_QUOTE = 3,
                            APPLY_NOW = 4,
                            SIGN_UP = 5,
                            CONTACT_US = 6,
                            SUBSCRIBE = 7,
                            DOWNLOAD = 8,
                            BOOK_NOW = 9,
                            GET_OFFER = 10,
                            REGISTER = 11,
                            GET_INFO = 12,
                            REQUEST_DEMO = 13,
                            JOIN_NOW = 14,
                            GET_STARTED = 15
                        }
                    }

                    /** Properties of a LeadFormDesiredIntentEnum. */
                    interface ILeadFormDesiredIntentEnum {
                    }

                    /** Represents a LeadFormDesiredIntentEnum. */
                    class LeadFormDesiredIntentEnum implements ILeadFormDesiredIntentEnum {

                        /**
                         * Constructs a new LeadFormDesiredIntentEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILeadFormDesiredIntentEnum);

                        /**
                         * Creates a new LeadFormDesiredIntentEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormDesiredIntentEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILeadFormDesiredIntentEnum): google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum;

                        /**
                         * Encodes the specified LeadFormDesiredIntentEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum.verify|verify} messages.
                         * @param message LeadFormDesiredIntentEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILeadFormDesiredIntentEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormDesiredIntentEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum.verify|verify} messages.
                         * @param message LeadFormDesiredIntentEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILeadFormDesiredIntentEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormDesiredIntentEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LeadFormDesiredIntentEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum;

                        /**
                         * Decodes a LeadFormDesiredIntentEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LeadFormDesiredIntentEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum;

                        /**
                         * Verifies a LeadFormDesiredIntentEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormDesiredIntentEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LeadFormDesiredIntentEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum;

                        /**
                         * Creates a plain object from a LeadFormDesiredIntentEnum message. Also converts values to other types if specified.
                         * @param message LeadFormDesiredIntentEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LeadFormDesiredIntentEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormDesiredIntentEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LeadFormDesiredIntentEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LeadFormDesiredIntentEnum {

                        /** LeadFormDesiredIntent enum. */
                        enum LeadFormDesiredIntent {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LOW_INTENT = 2,
                            HIGH_INTENT = 3
                        }
                    }

                    /** Properties of a LeadFormFieldUserInputTypeEnum. */
                    interface ILeadFormFieldUserInputTypeEnum {
                    }

                    /** Represents a LeadFormFieldUserInputTypeEnum. */
                    class LeadFormFieldUserInputTypeEnum implements ILeadFormFieldUserInputTypeEnum {

                        /**
                         * Constructs a new LeadFormFieldUserInputTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILeadFormFieldUserInputTypeEnum);

                        /**
                         * Creates a new LeadFormFieldUserInputTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormFieldUserInputTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILeadFormFieldUserInputTypeEnum): google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum;

                        /**
                         * Encodes the specified LeadFormFieldUserInputTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.verify|verify} messages.
                         * @param message LeadFormFieldUserInputTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILeadFormFieldUserInputTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormFieldUserInputTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.verify|verify} messages.
                         * @param message LeadFormFieldUserInputTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILeadFormFieldUserInputTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormFieldUserInputTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LeadFormFieldUserInputTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum;

                        /**
                         * Decodes a LeadFormFieldUserInputTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LeadFormFieldUserInputTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum;

                        /**
                         * Verifies a LeadFormFieldUserInputTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormFieldUserInputTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LeadFormFieldUserInputTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum;

                        /**
                         * Creates a plain object from a LeadFormFieldUserInputTypeEnum message. Also converts values to other types if specified.
                         * @param message LeadFormFieldUserInputTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormFieldUserInputTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LeadFormFieldUserInputTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LeadFormFieldUserInputTypeEnum {

                        /** LeadFormFieldUserInputType enum. */
                        enum LeadFormFieldUserInputType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FULL_NAME = 2,
                            EMAIL = 3,
                            PHONE_NUMBER = 4,
                            POSTAL_CODE = 5,
                            STREET_ADDRESS = 8,
                            CITY = 9,
                            REGION = 10,
                            COUNTRY = 11,
                            WORK_EMAIL = 12,
                            COMPANY_NAME = 13,
                            WORK_PHONE = 14,
                            JOB_TITLE = 15,
                            GOVERNMENT_ISSUED_ID_CPF_BR = 16,
                            GOVERNMENT_ISSUED_ID_DNI_AR = 17,
                            GOVERNMENT_ISSUED_ID_DNI_PE = 18,
                            GOVERNMENT_ISSUED_ID_RUT_CL = 19,
                            GOVERNMENT_ISSUED_ID_CC_CO = 20,
                            GOVERNMENT_ISSUED_ID_CI_EC = 21,
                            GOVERNMENT_ISSUED_ID_RFC_MX = 22,
                            FIRST_NAME = 23,
                            LAST_NAME = 24,
                            VEHICLE_MODEL = 1001,
                            VEHICLE_TYPE = 1002,
                            PREFERRED_DEALERSHIP = 1003,
                            VEHICLE_PURCHASE_TIMELINE = 1004,
                            VEHICLE_OWNERSHIP = 1005,
                            VEHICLE_PAYMENT_TYPE = 1009,
                            VEHICLE_CONDITION = 1010,
                            COMPANY_SIZE = 1006,
                            ANNUAL_SALES = 1007,
                            YEARS_IN_BUSINESS = 1008,
                            JOB_DEPARTMENT = 1011,
                            JOB_ROLE = 1012,
                            OVER_18_AGE = 1078,
                            OVER_19_AGE = 1079,
                            OVER_20_AGE = 1080,
                            OVER_21_AGE = 1081,
                            OVER_22_AGE = 1082,
                            OVER_23_AGE = 1083,
                            OVER_24_AGE = 1084,
                            OVER_25_AGE = 1085,
                            OVER_26_AGE = 1086,
                            OVER_27_AGE = 1087,
                            OVER_28_AGE = 1088,
                            OVER_29_AGE = 1089,
                            OVER_30_AGE = 1090,
                            OVER_31_AGE = 1091,
                            OVER_32_AGE = 1092,
                            OVER_33_AGE = 1093,
                            OVER_34_AGE = 1094,
                            OVER_35_AGE = 1095,
                            OVER_36_AGE = 1096,
                            OVER_37_AGE = 1097,
                            OVER_38_AGE = 1098,
                            OVER_39_AGE = 1099,
                            OVER_40_AGE = 1100,
                            OVER_41_AGE = 1101,
                            OVER_42_AGE = 1102,
                            OVER_43_AGE = 1103,
                            OVER_44_AGE = 1104,
                            OVER_45_AGE = 1105,
                            OVER_46_AGE = 1106,
                            OVER_47_AGE = 1107,
                            OVER_48_AGE = 1108,
                            OVER_49_AGE = 1109,
                            OVER_50_AGE = 1110,
                            OVER_51_AGE = 1111,
                            OVER_52_AGE = 1112,
                            OVER_53_AGE = 1113,
                            OVER_54_AGE = 1114,
                            OVER_55_AGE = 1115,
                            OVER_56_AGE = 1116,
                            OVER_57_AGE = 1117,
                            OVER_58_AGE = 1118,
                            OVER_59_AGE = 1119,
                            OVER_60_AGE = 1120,
                            OVER_61_AGE = 1121,
                            OVER_62_AGE = 1122,
                            OVER_63_AGE = 1123,
                            OVER_64_AGE = 1124,
                            OVER_65_AGE = 1125,
                            EDUCATION_PROGRAM = 1013,
                            EDUCATION_COURSE = 1014,
                            PRODUCT = 1016,
                            SERVICE = 1017,
                            OFFER = 1018,
                            CATEGORY = 1019,
                            PREFERRED_CONTACT_METHOD = 1020,
                            PREFERRED_LOCATION = 1021,
                            PREFERRED_CONTACT_TIME = 1022,
                            PURCHASE_TIMELINE = 1023,
                            YEARS_OF_EXPERIENCE = 1048,
                            JOB_INDUSTRY = 1049,
                            LEVEL_OF_EDUCATION = 1050,
                            PROPERTY_TYPE = 1024,
                            REALTOR_HELP_GOAL = 1025,
                            PROPERTY_COMMUNITY = 1026,
                            PRICE_RANGE = 1027,
                            NUMBER_OF_BEDROOMS = 1028,
                            FURNISHED_PROPERTY = 1029,
                            PETS_ALLOWED_PROPERTY = 1030,
                            NEXT_PLANNED_PURCHASE = 1031,
                            EVENT_SIGNUP_INTEREST = 1033,
                            PREFERRED_SHOPPING_PLACES = 1034,
                            FAVORITE_BRAND = 1035,
                            TRANSPORTATION_COMMERCIAL_LICENSE_TYPE = 1036,
                            EVENT_BOOKING_INTEREST = 1038,
                            DESTINATION_COUNTRY = 1039,
                            DESTINATION_CITY = 1040,
                            DEPARTURE_COUNTRY = 1041,
                            DEPARTURE_CITY = 1042,
                            DEPARTURE_DATE = 1043,
                            RETURN_DATE = 1044,
                            NUMBER_OF_TRAVELERS = 1045,
                            TRAVEL_BUDGET = 1046,
                            TRAVEL_ACCOMMODATION = 1047
                        }
                    }

                    /** Properties of a LeadFormPostSubmitCallToActionTypeEnum. */
                    interface ILeadFormPostSubmitCallToActionTypeEnum {
                    }

                    /** Represents a LeadFormPostSubmitCallToActionTypeEnum. */
                    class LeadFormPostSubmitCallToActionTypeEnum implements ILeadFormPostSubmitCallToActionTypeEnum {

                        /**
                         * Constructs a new LeadFormPostSubmitCallToActionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILeadFormPostSubmitCallToActionTypeEnum);

                        /**
                         * Creates a new LeadFormPostSubmitCallToActionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormPostSubmitCallToActionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILeadFormPostSubmitCallToActionTypeEnum): google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum;

                        /**
                         * Encodes the specified LeadFormPostSubmitCallToActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum.verify|verify} messages.
                         * @param message LeadFormPostSubmitCallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILeadFormPostSubmitCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormPostSubmitCallToActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum.verify|verify} messages.
                         * @param message LeadFormPostSubmitCallToActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILeadFormPostSubmitCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormPostSubmitCallToActionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LeadFormPostSubmitCallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum;

                        /**
                         * Decodes a LeadFormPostSubmitCallToActionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LeadFormPostSubmitCallToActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum;

                        /**
                         * Verifies a LeadFormPostSubmitCallToActionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormPostSubmitCallToActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LeadFormPostSubmitCallToActionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum;

                        /**
                         * Creates a plain object from a LeadFormPostSubmitCallToActionTypeEnum message. Also converts values to other types if specified.
                         * @param message LeadFormPostSubmitCallToActionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LeadFormPostSubmitCallToActionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormPostSubmitCallToActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LeadFormPostSubmitCallToActionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LeadFormPostSubmitCallToActionTypeEnum {

                        /** LeadFormPostSubmitCallToActionType enum. */
                        enum LeadFormPostSubmitCallToActionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VISIT_SITE = 2,
                            DOWNLOAD = 3,
                            LEARN_MORE = 4,
                            SHOP_NOW = 5
                        }
                    }

                    /** Properties of a MobileAppVendorEnum. */
                    interface IMobileAppVendorEnum {
                    }

                    /** Represents a MobileAppVendorEnum. */
                    class MobileAppVendorEnum implements IMobileAppVendorEnum {

                        /**
                         * Constructs a new MobileAppVendorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IMobileAppVendorEnum);

                        /**
                         * Creates a new MobileAppVendorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileAppVendorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IMobileAppVendorEnum): google.ads.googleads.v23.enums.MobileAppVendorEnum;

                        /**
                         * Encodes the specified MobileAppVendorEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.MobileAppVendorEnum.verify|verify} messages.
                         * @param message MobileAppVendorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IMobileAppVendorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileAppVendorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.MobileAppVendorEnum.verify|verify} messages.
                         * @param message MobileAppVendorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IMobileAppVendorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileAppVendorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MobileAppVendorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.MobileAppVendorEnum;

                        /**
                         * Decodes a MobileAppVendorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MobileAppVendorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.MobileAppVendorEnum;

                        /**
                         * Verifies a MobileAppVendorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileAppVendorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MobileAppVendorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.MobileAppVendorEnum;

                        /**
                         * Creates a plain object from a MobileAppVendorEnum message. Also converts values to other types if specified.
                         * @param message MobileAppVendorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.MobileAppVendorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileAppVendorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MobileAppVendorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MobileAppVendorEnum {

                        /** MobileAppVendor enum. */
                        enum MobileAppVendor {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPLE_APP_STORE = 2,
                            GOOGLE_APP_STORE = 3
                        }
                    }

                    /** Properties of a PriceExtensionPriceQualifierEnum. */
                    interface IPriceExtensionPriceQualifierEnum {
                    }

                    /** Represents a PriceExtensionPriceQualifierEnum. */
                    class PriceExtensionPriceQualifierEnum implements IPriceExtensionPriceQualifierEnum {

                        /**
                         * Constructs a new PriceExtensionPriceQualifierEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPriceExtensionPriceQualifierEnum);

                        /**
                         * Creates a new PriceExtensionPriceQualifierEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceExtensionPriceQualifierEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPriceExtensionPriceQualifierEnum): google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum;

                        /**
                         * Encodes the specified PriceExtensionPriceQualifierEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum.verify|verify} messages.
                         * @param message PriceExtensionPriceQualifierEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPriceExtensionPriceQualifierEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceExtensionPriceQualifierEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum.verify|verify} messages.
                         * @param message PriceExtensionPriceQualifierEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPriceExtensionPriceQualifierEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceExtensionPriceQualifierEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PriceExtensionPriceQualifierEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum;

                        /**
                         * Decodes a PriceExtensionPriceQualifierEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceExtensionPriceQualifierEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum;

                        /**
                         * Verifies a PriceExtensionPriceQualifierEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceExtensionPriceQualifierEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PriceExtensionPriceQualifierEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum;

                        /**
                         * Creates a plain object from a PriceExtensionPriceQualifierEnum message. Also converts values to other types if specified.
                         * @param message PriceExtensionPriceQualifierEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PriceExtensionPriceQualifierEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceExtensionPriceQualifierEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PriceExtensionPriceQualifierEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PriceExtensionPriceQualifierEnum {

                        /** PriceExtensionPriceQualifier enum. */
                        enum PriceExtensionPriceQualifier {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FROM = 2,
                            UP_TO = 3,
                            AVERAGE = 4
                        }
                    }

                    /** Properties of a PriceExtensionPriceUnitEnum. */
                    interface IPriceExtensionPriceUnitEnum {
                    }

                    /** Represents a PriceExtensionPriceUnitEnum. */
                    class PriceExtensionPriceUnitEnum implements IPriceExtensionPriceUnitEnum {

                        /**
                         * Constructs a new PriceExtensionPriceUnitEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPriceExtensionPriceUnitEnum);

                        /**
                         * Creates a new PriceExtensionPriceUnitEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceExtensionPriceUnitEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPriceExtensionPriceUnitEnum): google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum;

                        /**
                         * Encodes the specified PriceExtensionPriceUnitEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum.verify|verify} messages.
                         * @param message PriceExtensionPriceUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPriceExtensionPriceUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceExtensionPriceUnitEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum.verify|verify} messages.
                         * @param message PriceExtensionPriceUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPriceExtensionPriceUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceExtensionPriceUnitEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PriceExtensionPriceUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum;

                        /**
                         * Decodes a PriceExtensionPriceUnitEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceExtensionPriceUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum;

                        /**
                         * Verifies a PriceExtensionPriceUnitEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceExtensionPriceUnitEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PriceExtensionPriceUnitEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum;

                        /**
                         * Creates a plain object from a PriceExtensionPriceUnitEnum message. Also converts values to other types if specified.
                         * @param message PriceExtensionPriceUnitEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PriceExtensionPriceUnitEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceExtensionPriceUnitEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PriceExtensionPriceUnitEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PriceExtensionPriceUnitEnum {

                        /** PriceExtensionPriceUnit enum. */
                        enum PriceExtensionPriceUnit {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PER_HOUR = 2,
                            PER_DAY = 3,
                            PER_WEEK = 4,
                            PER_MONTH = 5,
                            PER_YEAR = 6,
                            PER_NIGHT = 7
                        }
                    }

                    /** Properties of a PriceExtensionTypeEnum. */
                    interface IPriceExtensionTypeEnum {
                    }

                    /** Represents a PriceExtensionTypeEnum. */
                    class PriceExtensionTypeEnum implements IPriceExtensionTypeEnum {

                        /**
                         * Constructs a new PriceExtensionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPriceExtensionTypeEnum);

                        /**
                         * Creates a new PriceExtensionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceExtensionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPriceExtensionTypeEnum): google.ads.googleads.v23.enums.PriceExtensionTypeEnum;

                        /**
                         * Encodes the specified PriceExtensionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PriceExtensionTypeEnum.verify|verify} messages.
                         * @param message PriceExtensionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPriceExtensionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceExtensionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PriceExtensionTypeEnum.verify|verify} messages.
                         * @param message PriceExtensionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPriceExtensionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceExtensionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PriceExtensionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PriceExtensionTypeEnum;

                        /**
                         * Decodes a PriceExtensionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceExtensionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PriceExtensionTypeEnum;

                        /**
                         * Verifies a PriceExtensionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceExtensionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PriceExtensionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PriceExtensionTypeEnum;

                        /**
                         * Creates a plain object from a PriceExtensionTypeEnum message. Also converts values to other types if specified.
                         * @param message PriceExtensionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PriceExtensionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceExtensionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PriceExtensionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PriceExtensionTypeEnum {

                        /** PriceExtensionType enum. */
                        enum PriceExtensionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BRANDS = 2,
                            EVENTS = 3,
                            LOCATIONS = 4,
                            NEIGHBORHOODS = 5,
                            PRODUCT_CATEGORIES = 6,
                            PRODUCT_TIERS = 7,
                            SERVICES = 8,
                            SERVICE_CATEGORIES = 9,
                            SERVICE_TIERS = 10
                        }
                    }

                    /** Properties of a PromotionBarcodeTypeEnum. */
                    interface IPromotionBarcodeTypeEnum {
                    }

                    /** Represents a PromotionBarcodeTypeEnum. */
                    class PromotionBarcodeTypeEnum implements IPromotionBarcodeTypeEnum {

                        /**
                         * Constructs a new PromotionBarcodeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPromotionBarcodeTypeEnum);

                        /**
                         * Creates a new PromotionBarcodeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionBarcodeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPromotionBarcodeTypeEnum): google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum;

                        /**
                         * Encodes the specified PromotionBarcodeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum.verify|verify} messages.
                         * @param message PromotionBarcodeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPromotionBarcodeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionBarcodeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum.verify|verify} messages.
                         * @param message PromotionBarcodeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPromotionBarcodeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionBarcodeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PromotionBarcodeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum;

                        /**
                         * Decodes a PromotionBarcodeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromotionBarcodeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum;

                        /**
                         * Verifies a PromotionBarcodeTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromotionBarcodeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PromotionBarcodeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum;

                        /**
                         * Creates a plain object from a PromotionBarcodeTypeEnum message. Also converts values to other types if specified.
                         * @param message PromotionBarcodeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PromotionBarcodeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromotionBarcodeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PromotionBarcodeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PromotionBarcodeTypeEnum {

                        /** PromotionBarcodeType enum. */
                        enum PromotionBarcodeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AZTEC = 2,
                            CODABAR = 3,
                            CODE39 = 4,
                            CODE128 = 5,
                            DATA_MATRIX = 6,
                            EAN8 = 7,
                            EAN13 = 8,
                            ITF = 9,
                            PDF417 = 10,
                            UPC_A = 11
                        }
                    }

                    /** Properties of a PromotionExtensionDiscountModifierEnum. */
                    interface IPromotionExtensionDiscountModifierEnum {
                    }

                    /** Represents a PromotionExtensionDiscountModifierEnum. */
                    class PromotionExtensionDiscountModifierEnum implements IPromotionExtensionDiscountModifierEnum {

                        /**
                         * Constructs a new PromotionExtensionDiscountModifierEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPromotionExtensionDiscountModifierEnum);

                        /**
                         * Creates a new PromotionExtensionDiscountModifierEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionExtensionDiscountModifierEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPromotionExtensionDiscountModifierEnum): google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum;

                        /**
                         * Encodes the specified PromotionExtensionDiscountModifierEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum.verify|verify} messages.
                         * @param message PromotionExtensionDiscountModifierEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPromotionExtensionDiscountModifierEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionExtensionDiscountModifierEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum.verify|verify} messages.
                         * @param message PromotionExtensionDiscountModifierEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPromotionExtensionDiscountModifierEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionExtensionDiscountModifierEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PromotionExtensionDiscountModifierEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum;

                        /**
                         * Decodes a PromotionExtensionDiscountModifierEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromotionExtensionDiscountModifierEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum;

                        /**
                         * Verifies a PromotionExtensionDiscountModifierEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromotionExtensionDiscountModifierEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PromotionExtensionDiscountModifierEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum;

                        /**
                         * Creates a plain object from a PromotionExtensionDiscountModifierEnum message. Also converts values to other types if specified.
                         * @param message PromotionExtensionDiscountModifierEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PromotionExtensionDiscountModifierEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromotionExtensionDiscountModifierEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PromotionExtensionDiscountModifierEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PromotionExtensionDiscountModifierEnum {

                        /** PromotionExtensionDiscountModifier enum. */
                        enum PromotionExtensionDiscountModifier {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UP_TO = 2
                        }
                    }

                    /** Properties of a PromotionExtensionOccasionEnum. */
                    interface IPromotionExtensionOccasionEnum {
                    }

                    /** Represents a PromotionExtensionOccasionEnum. */
                    class PromotionExtensionOccasionEnum implements IPromotionExtensionOccasionEnum {

                        /**
                         * Constructs a new PromotionExtensionOccasionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPromotionExtensionOccasionEnum);

                        /**
                         * Creates a new PromotionExtensionOccasionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionExtensionOccasionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPromotionExtensionOccasionEnum): google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum;

                        /**
                         * Encodes the specified PromotionExtensionOccasionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum.verify|verify} messages.
                         * @param message PromotionExtensionOccasionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPromotionExtensionOccasionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionExtensionOccasionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum.verify|verify} messages.
                         * @param message PromotionExtensionOccasionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPromotionExtensionOccasionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionExtensionOccasionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PromotionExtensionOccasionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum;

                        /**
                         * Decodes a PromotionExtensionOccasionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromotionExtensionOccasionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum;

                        /**
                         * Verifies a PromotionExtensionOccasionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromotionExtensionOccasionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PromotionExtensionOccasionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum;

                        /**
                         * Creates a plain object from a PromotionExtensionOccasionEnum message. Also converts values to other types if specified.
                         * @param message PromotionExtensionOccasionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PromotionExtensionOccasionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromotionExtensionOccasionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PromotionExtensionOccasionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PromotionExtensionOccasionEnum {

                        /** PromotionExtensionOccasion enum. */
                        enum PromotionExtensionOccasion {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEW_YEARS = 2,
                            CHINESE_NEW_YEAR = 3,
                            VALENTINES_DAY = 4,
                            EASTER = 5,
                            MOTHERS_DAY = 6,
                            FATHERS_DAY = 7,
                            LABOR_DAY = 8,
                            BACK_TO_SCHOOL = 9,
                            HALLOWEEN = 10,
                            BLACK_FRIDAY = 11,
                            CYBER_MONDAY = 12,
                            CHRISTMAS = 13,
                            BOXING_DAY = 14,
                            INDEPENDENCE_DAY = 15,
                            NATIONAL_DAY = 16,
                            END_OF_SEASON = 17,
                            WINTER_SALE = 18,
                            SUMMER_SALE = 19,
                            FALL_SALE = 20,
                            SPRING_SALE = 21,
                            RAMADAN = 22,
                            EID_AL_FITR = 23,
                            EID_AL_ADHA = 24,
                            SINGLES_DAY = 25,
                            WOMENS_DAY = 26,
                            HOLI = 27,
                            PARENTS_DAY = 28,
                            ST_NICHOLAS_DAY = 29,
                            CARNIVAL = 30,
                            EPIPHANY = 31,
                            ROSH_HASHANAH = 32,
                            PASSOVER = 33,
                            HANUKKAH = 34,
                            DIWALI = 35,
                            NAVRATRI = 36,
                            SONGKRAN = 37,
                            YEAR_END_GIFT = 38
                        }
                    }

                    /** Properties of an AudienceInsightsDimensionEnum. */
                    interface IAudienceInsightsDimensionEnum {
                    }

                    /** Represents an AudienceInsightsDimensionEnum. */
                    class AudienceInsightsDimensionEnum implements IAudienceInsightsDimensionEnum {

                        /**
                         * Constructs a new AudienceInsightsDimensionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAudienceInsightsDimensionEnum);

                        /**
                         * Creates a new AudienceInsightsDimensionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsDimensionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAudienceInsightsDimensionEnum): google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum;

                        /**
                         * Encodes the specified AudienceInsightsDimensionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.verify|verify} messages.
                         * @param message AudienceInsightsDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAudienceInsightsDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsDimensionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.verify|verify} messages.
                         * @param message AudienceInsightsDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAudienceInsightsDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsDimensionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum;

                        /**
                         * Decodes an AudienceInsightsDimensionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum;

                        /**
                         * Verifies an AudienceInsightsDimensionEnum message.
                         * @param message Plain 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 AudienceInsightsDimensionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsDimensionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum;

                        /**
                         * Creates a plain object from an AudienceInsightsDimensionEnum message. Also converts values to other types if specified.
                         * @param message AudienceInsightsDimensionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsDimensionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsDimensionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AudienceInsightsDimensionEnum {

                        /** AudienceInsightsDimension enum. */
                        enum AudienceInsightsDimension {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CATEGORY = 2,
                            KNOWLEDGE_GRAPH = 3,
                            GEO_TARGET_COUNTRY = 4,
                            SUB_COUNTRY_LOCATION = 5,
                            YOUTUBE_CHANNEL = 6,
                            AFFINITY_USER_INTEREST = 8,
                            IN_MARKET_USER_INTEREST = 9,
                            PARENTAL_STATUS = 10,
                            INCOME_RANGE = 11,
                            AGE_RANGE = 12,
                            GENDER = 13,
                            YOUTUBE_VIDEO = 14,
                            DEVICE = 15,
                            YOUTUBE_LINEUP = 16,
                            USER_LIST = 17,
                            LIFE_EVENT_USER_INTEREST = 18
                        }
                    }

                    /** Properties of an InsightsKnowledgeGraphEntityCapabilitiesEnum. */
                    interface IInsightsKnowledgeGraphEntityCapabilitiesEnum {
                    }

                    /** Represents an InsightsKnowledgeGraphEntityCapabilitiesEnum. */
                    class InsightsKnowledgeGraphEntityCapabilitiesEnum implements IInsightsKnowledgeGraphEntityCapabilitiesEnum {

                        /**
                         * Constructs a new InsightsKnowledgeGraphEntityCapabilitiesEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IInsightsKnowledgeGraphEntityCapabilitiesEnum);

                        /**
                         * Creates a new InsightsKnowledgeGraphEntityCapabilitiesEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsightsKnowledgeGraphEntityCapabilitiesEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IInsightsKnowledgeGraphEntityCapabilitiesEnum): google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum;

                        /**
                         * Encodes the specified InsightsKnowledgeGraphEntityCapabilitiesEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum.verify|verify} messages.
                         * @param message InsightsKnowledgeGraphEntityCapabilitiesEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IInsightsKnowledgeGraphEntityCapabilitiesEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsightsKnowledgeGraphEntityCapabilitiesEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum.verify|verify} messages.
                         * @param message InsightsKnowledgeGraphEntityCapabilitiesEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IInsightsKnowledgeGraphEntityCapabilitiesEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsightsKnowledgeGraphEntityCapabilitiesEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsightsKnowledgeGraphEntityCapabilitiesEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum;

                        /**
                         * Decodes an InsightsKnowledgeGraphEntityCapabilitiesEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsightsKnowledgeGraphEntityCapabilitiesEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum;

                        /**
                         * Verifies an InsightsKnowledgeGraphEntityCapabilitiesEnum message.
                         * @param message Plain 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 InsightsKnowledgeGraphEntityCapabilitiesEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsightsKnowledgeGraphEntityCapabilitiesEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum;

                        /**
                         * Creates a plain object from an InsightsKnowledgeGraphEntityCapabilitiesEnum message. Also converts values to other types if specified.
                         * @param message InsightsKnowledgeGraphEntityCapabilitiesEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsightsKnowledgeGraphEntityCapabilitiesEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsightsKnowledgeGraphEntityCapabilitiesEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace InsightsKnowledgeGraphEntityCapabilitiesEnum {

                        /** InsightsKnowledgeGraphEntityCapabilities enum. */
                        enum InsightsKnowledgeGraphEntityCapabilities {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONTENT_TRENDING_INSIGHTS = 2,
                            CREATOR_ATTRIBUTE = 3
                        }
                    }

                    /** Properties of a UserListTypeEnum. */
                    interface IUserListTypeEnum {
                    }

                    /** Represents a UserListTypeEnum. */
                    class UserListTypeEnum implements IUserListTypeEnum {

                        /**
                         * Constructs a new UserListTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListTypeEnum);

                        /**
                         * Creates a new UserListTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListTypeEnum): google.ads.googleads.v23.enums.UserListTypeEnum;

                        /**
                         * Encodes the specified UserListTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListTypeEnum.verify|verify} messages.
                         * @param message UserListTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListTypeEnum.verify|verify} messages.
                         * @param message UserListTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListTypeEnum;

                        /**
                         * Decodes a UserListTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListTypeEnum;

                        /**
                         * Verifies a UserListTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListTypeEnum;

                        /**
                         * Creates a plain object from a UserListTypeEnum message. Also converts values to other types if specified.
                         * @param message UserListTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListTypeEnum {

                        /** UserListType enum. */
                        enum UserListType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REMARKETING = 2,
                            LOGICAL = 3,
                            EXTERNAL_REMARKETING = 4,
                            RULE_BASED = 5,
                            SIMILAR = 6,
                            CRM_BASED = 7,
                            LOOKALIKE = 9
                        }
                    }

                    /** Properties of a YouTubeVideoPropertyEnum. */
                    interface IYouTubeVideoPropertyEnum {
                    }

                    /** Represents a YouTubeVideoPropertyEnum. */
                    class YouTubeVideoPropertyEnum implements IYouTubeVideoPropertyEnum {

                        /**
                         * Constructs a new YouTubeVideoPropertyEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IYouTubeVideoPropertyEnum);

                        /**
                         * Creates a new YouTubeVideoPropertyEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeVideoPropertyEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IYouTubeVideoPropertyEnum): google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum;

                        /**
                         * Encodes the specified YouTubeVideoPropertyEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum.verify|verify} messages.
                         * @param message YouTubeVideoPropertyEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IYouTubeVideoPropertyEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeVideoPropertyEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum.verify|verify} messages.
                         * @param message YouTubeVideoPropertyEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IYouTubeVideoPropertyEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeVideoPropertyEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeVideoPropertyEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum;

                        /**
                         * Decodes a YouTubeVideoPropertyEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeVideoPropertyEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum;

                        /**
                         * Verifies a YouTubeVideoPropertyEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeVideoPropertyEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeVideoPropertyEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum;

                        /**
                         * Creates a plain object from a YouTubeVideoPropertyEnum message. Also converts values to other types if specified.
                         * @param message YouTubeVideoPropertyEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.YouTubeVideoPropertyEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeVideoPropertyEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeVideoPropertyEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace YouTubeVideoPropertyEnum {

                        /** YouTubeVideoProperty enum. */
                        enum YouTubeVideoProperty {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LIVE_STREAM = 2,
                            SHORTS = 3
                        }
                    }

                    /** Properties of a FixedCpmGoalEnum. */
                    interface IFixedCpmGoalEnum {
                    }

                    /** Represents a FixedCpmGoalEnum. */
                    class FixedCpmGoalEnum implements IFixedCpmGoalEnum {

                        /**
                         * Constructs a new FixedCpmGoalEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IFixedCpmGoalEnum);

                        /**
                         * Creates a new FixedCpmGoalEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FixedCpmGoalEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IFixedCpmGoalEnum): google.ads.googleads.v23.enums.FixedCpmGoalEnum;

                        /**
                         * Encodes the specified FixedCpmGoalEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.FixedCpmGoalEnum.verify|verify} messages.
                         * @param message FixedCpmGoalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IFixedCpmGoalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FixedCpmGoalEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.FixedCpmGoalEnum.verify|verify} messages.
                         * @param message FixedCpmGoalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IFixedCpmGoalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FixedCpmGoalEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FixedCpmGoalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.FixedCpmGoalEnum;

                        /**
                         * Decodes a FixedCpmGoalEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FixedCpmGoalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.FixedCpmGoalEnum;

                        /**
                         * Verifies a FixedCpmGoalEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FixedCpmGoalEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FixedCpmGoalEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.FixedCpmGoalEnum;

                        /**
                         * Creates a plain object from a FixedCpmGoalEnum message. Also converts values to other types if specified.
                         * @param message FixedCpmGoalEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.FixedCpmGoalEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FixedCpmGoalEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FixedCpmGoalEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FixedCpmGoalEnum {

                        /** FixedCpmGoal enum. */
                        enum FixedCpmGoal {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REACH = 2,
                            TARGET_FREQUENCY = 3
                        }
                    }

                    /** Properties of a FixedCpmTargetFrequencyTimeUnitEnum. */
                    interface IFixedCpmTargetFrequencyTimeUnitEnum {
                    }

                    /** Represents a FixedCpmTargetFrequencyTimeUnitEnum. */
                    class FixedCpmTargetFrequencyTimeUnitEnum implements IFixedCpmTargetFrequencyTimeUnitEnum {

                        /**
                         * Constructs a new FixedCpmTargetFrequencyTimeUnitEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IFixedCpmTargetFrequencyTimeUnitEnum);

                        /**
                         * Creates a new FixedCpmTargetFrequencyTimeUnitEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FixedCpmTargetFrequencyTimeUnitEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IFixedCpmTargetFrequencyTimeUnitEnum): google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum;

                        /**
                         * Encodes the specified FixedCpmTargetFrequencyTimeUnitEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum.verify|verify} messages.
                         * @param message FixedCpmTargetFrequencyTimeUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IFixedCpmTargetFrequencyTimeUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FixedCpmTargetFrequencyTimeUnitEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum.verify|verify} messages.
                         * @param message FixedCpmTargetFrequencyTimeUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IFixedCpmTargetFrequencyTimeUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FixedCpmTargetFrequencyTimeUnitEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FixedCpmTargetFrequencyTimeUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum;

                        /**
                         * Decodes a FixedCpmTargetFrequencyTimeUnitEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FixedCpmTargetFrequencyTimeUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum;

                        /**
                         * Verifies a FixedCpmTargetFrequencyTimeUnitEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FixedCpmTargetFrequencyTimeUnitEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FixedCpmTargetFrequencyTimeUnitEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum;

                        /**
                         * Creates a plain object from a FixedCpmTargetFrequencyTimeUnitEnum message. Also converts values to other types if specified.
                         * @param message FixedCpmTargetFrequencyTimeUnitEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.FixedCpmTargetFrequencyTimeUnitEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FixedCpmTargetFrequencyTimeUnitEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FixedCpmTargetFrequencyTimeUnitEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FixedCpmTargetFrequencyTimeUnitEnum {

                        /** FixedCpmTargetFrequencyTimeUnit enum. */
                        enum FixedCpmTargetFrequencyTimeUnit {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MONTHLY = 2
                        }
                    }

                    /** Properties of a TargetFrequencyTimeUnitEnum. */
                    interface ITargetFrequencyTimeUnitEnum {
                    }

                    /** Represents a TargetFrequencyTimeUnitEnum. */
                    class TargetFrequencyTimeUnitEnum implements ITargetFrequencyTimeUnitEnum {

                        /**
                         * Constructs a new TargetFrequencyTimeUnitEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ITargetFrequencyTimeUnitEnum);

                        /**
                         * Creates a new TargetFrequencyTimeUnitEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetFrequencyTimeUnitEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ITargetFrequencyTimeUnitEnum): google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum;

                        /**
                         * Encodes the specified TargetFrequencyTimeUnitEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.verify|verify} messages.
                         * @param message TargetFrequencyTimeUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ITargetFrequencyTimeUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetFrequencyTimeUnitEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.verify|verify} messages.
                         * @param message TargetFrequencyTimeUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ITargetFrequencyTimeUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetFrequencyTimeUnitEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetFrequencyTimeUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum;

                        /**
                         * Decodes a TargetFrequencyTimeUnitEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetFrequencyTimeUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum;

                        /**
                         * Verifies a TargetFrequencyTimeUnitEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetFrequencyTimeUnitEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetFrequencyTimeUnitEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum;

                        /**
                         * Creates a plain object from a TargetFrequencyTimeUnitEnum message. Also converts values to other types if specified.
                         * @param message TargetFrequencyTimeUnitEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetFrequencyTimeUnitEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetFrequencyTimeUnitEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TargetFrequencyTimeUnitEnum {

                        /** TargetFrequencyTimeUnit enum. */
                        enum TargetFrequencyTimeUnit {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WEEKLY = 2,
                            MONTHLY = 3
                        }
                    }

                    /** Properties of a TargetImpressionShareLocationEnum. */
                    interface ITargetImpressionShareLocationEnum {
                    }

                    /** Represents a TargetImpressionShareLocationEnum. */
                    class TargetImpressionShareLocationEnum implements ITargetImpressionShareLocationEnum {

                        /**
                         * Constructs a new TargetImpressionShareLocationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ITargetImpressionShareLocationEnum);

                        /**
                         * Creates a new TargetImpressionShareLocationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetImpressionShareLocationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ITargetImpressionShareLocationEnum): google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum;

                        /**
                         * Encodes the specified TargetImpressionShareLocationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.verify|verify} messages.
                         * @param message TargetImpressionShareLocationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ITargetImpressionShareLocationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShareLocationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.verify|verify} messages.
                         * @param message TargetImpressionShareLocationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ITargetImpressionShareLocationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShareLocationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetImpressionShareLocationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum;

                        /**
                         * Decodes a TargetImpressionShareLocationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetImpressionShareLocationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum;

                        /**
                         * Verifies a TargetImpressionShareLocationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShareLocationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetImpressionShareLocationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum;

                        /**
                         * Creates a plain object from a TargetImpressionShareLocationEnum message. Also converts values to other types if specified.
                         * @param message TargetImpressionShareLocationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShareLocationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetImpressionShareLocationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TargetImpressionShareLocationEnum {

                        /** TargetImpressionShareLocation enum. */
                        enum TargetImpressionShareLocation {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ANYWHERE_ON_PAGE = 2,
                            TOP_OF_PAGE = 3,
                            ABSOLUTE_TOP_OF_PAGE = 4
                        }
                    }

                    /** Properties of a CustomerLifecycleOptimizationModeEnum. */
                    interface ICustomerLifecycleOptimizationModeEnum {
                    }

                    /** Represents a CustomerLifecycleOptimizationModeEnum. */
                    class CustomerLifecycleOptimizationModeEnum implements ICustomerLifecycleOptimizationModeEnum {

                        /**
                         * Constructs a new CustomerLifecycleOptimizationModeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomerLifecycleOptimizationModeEnum);

                        /**
                         * Creates a new CustomerLifecycleOptimizationModeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLifecycleOptimizationModeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomerLifecycleOptimizationModeEnum): google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum;

                        /**
                         * Encodes the specified CustomerLifecycleOptimizationModeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum.verify|verify} messages.
                         * @param message CustomerLifecycleOptimizationModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomerLifecycleOptimizationModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLifecycleOptimizationModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum.verify|verify} messages.
                         * @param message CustomerLifecycleOptimizationModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomerLifecycleOptimizationModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLifecycleOptimizationModeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerLifecycleOptimizationModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum;

                        /**
                         * Decodes a CustomerLifecycleOptimizationModeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerLifecycleOptimizationModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum;

                        /**
                         * Verifies a CustomerLifecycleOptimizationModeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLifecycleOptimizationModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerLifecycleOptimizationModeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum;

                        /**
                         * Creates a plain object from a CustomerLifecycleOptimizationModeEnum message. Also converts values to other types if specified.
                         * @param message CustomerLifecycleOptimizationModeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomerLifecycleOptimizationModeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLifecycleOptimizationModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerLifecycleOptimizationModeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerLifecycleOptimizationModeEnum {

                        /** CustomerLifecycleOptimizationMode enum. */
                        enum CustomerLifecycleOptimizationMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TARGET_ALL = 2,
                            TARGET_SPECIFIC = 3
                        }
                    }

                    /** Properties of a ConsentStatusEnum. */
                    interface IConsentStatusEnum {
                    }

                    /** Represents a ConsentStatusEnum. */
                    class ConsentStatusEnum implements IConsentStatusEnum {

                        /**
                         * Constructs a new ConsentStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConsentStatusEnum);

                        /**
                         * Creates a new ConsentStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConsentStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConsentStatusEnum): google.ads.googleads.v23.enums.ConsentStatusEnum;

                        /**
                         * Encodes the specified ConsentStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConsentStatusEnum.verify|verify} messages.
                         * @param message ConsentStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConsentStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConsentStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConsentStatusEnum.verify|verify} messages.
                         * @param message ConsentStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConsentStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConsentStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConsentStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConsentStatusEnum;

                        /**
                         * Decodes a ConsentStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConsentStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConsentStatusEnum;

                        /**
                         * Verifies a ConsentStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConsentStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConsentStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConsentStatusEnum;

                        /**
                         * Creates a plain object from a ConsentStatusEnum message. Also converts values to other types if specified.
                         * @param message ConsentStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConsentStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConsentStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConsentStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConsentStatusEnum {

                        /** ConsentStatus enum. */
                        enum ConsentStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GRANTED = 2,
                            DENIED = 3
                        }
                    }

                    /** Properties of an AdvertisingChannelSubTypeEnum. */
                    interface IAdvertisingChannelSubTypeEnum {
                    }

                    /** Represents an AdvertisingChannelSubTypeEnum. */
                    class AdvertisingChannelSubTypeEnum implements IAdvertisingChannelSubTypeEnum {

                        /**
                         * Constructs a new AdvertisingChannelSubTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdvertisingChannelSubTypeEnum);

                        /**
                         * Creates a new AdvertisingChannelSubTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdvertisingChannelSubTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdvertisingChannelSubTypeEnum): google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum;

                        /**
                         * Encodes the specified AdvertisingChannelSubTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.verify|verify} messages.
                         * @param message AdvertisingChannelSubTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdvertisingChannelSubTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdvertisingChannelSubTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.verify|verify} messages.
                         * @param message AdvertisingChannelSubTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdvertisingChannelSubTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdvertisingChannelSubTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdvertisingChannelSubTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum;

                        /**
                         * Decodes an AdvertisingChannelSubTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdvertisingChannelSubTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum;

                        /**
                         * Verifies an AdvertisingChannelSubTypeEnum message.
                         * @param message Plain 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 AdvertisingChannelSubTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdvertisingChannelSubTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum;

                        /**
                         * Creates a plain object from an AdvertisingChannelSubTypeEnum message. Also converts values to other types if specified.
                         * @param message AdvertisingChannelSubTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdvertisingChannelSubTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdvertisingChannelSubTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdvertisingChannelSubTypeEnum {

                        /** AdvertisingChannelSubType enum. */
                        enum AdvertisingChannelSubType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEARCH_MOBILE_APP = 2,
                            DISPLAY_MOBILE_APP = 3,
                            SEARCH_EXPRESS = 4,
                            DISPLAY_EXPRESS = 5,
                            SHOPPING_SMART_ADS = 6,
                            DISPLAY_GMAIL_AD = 7,
                            DISPLAY_SMART_CAMPAIGN = 8,
                            VIDEO_ACTION = 10,
                            VIDEO_NON_SKIPPABLE = 11,
                            APP_CAMPAIGN = 12,
                            APP_CAMPAIGN_FOR_ENGAGEMENT = 13,
                            LOCAL_CAMPAIGN = 14,
                            SHOPPING_COMPARISON_LISTING_ADS = 15,
                            SMART_CAMPAIGN = 16,
                            VIDEO_SEQUENCE = 17,
                            APP_CAMPAIGN_FOR_PRE_REGISTRATION = 18,
                            VIDEO_REACH_TARGET_FREQUENCY = 19,
                            TRAVEL_ACTIVITIES = 20,
                            YOUTUBE_AUDIO = 22
                        }
                    }

                    /** Properties of an AdvertisingChannelTypeEnum. */
                    interface IAdvertisingChannelTypeEnum {
                    }

                    /** Represents an AdvertisingChannelTypeEnum. */
                    class AdvertisingChannelTypeEnum implements IAdvertisingChannelTypeEnum {

                        /**
                         * Constructs a new AdvertisingChannelTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdvertisingChannelTypeEnum);

                        /**
                         * Creates a new AdvertisingChannelTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdvertisingChannelTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdvertisingChannelTypeEnum): google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum;

                        /**
                         * Encodes the specified AdvertisingChannelTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.verify|verify} messages.
                         * @param message AdvertisingChannelTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdvertisingChannelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdvertisingChannelTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.verify|verify} messages.
                         * @param message AdvertisingChannelTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdvertisingChannelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdvertisingChannelTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdvertisingChannelTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum;

                        /**
                         * Decodes an AdvertisingChannelTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdvertisingChannelTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum;

                        /**
                         * Verifies an AdvertisingChannelTypeEnum message.
                         * @param message Plain 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 AdvertisingChannelTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdvertisingChannelTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum;

                        /**
                         * Creates a plain object from an AdvertisingChannelTypeEnum message. Also converts values to other types if specified.
                         * @param message AdvertisingChannelTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdvertisingChannelTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdvertisingChannelTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdvertisingChannelTypeEnum {

                        /** AdvertisingChannelType enum. */
                        enum AdvertisingChannelType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEARCH = 2,
                            DISPLAY = 3,
                            SHOPPING = 4,
                            HOTEL = 5,
                            VIDEO = 6,
                            MULTI_CHANNEL = 7,
                            LOCAL = 8,
                            SMART = 9,
                            PERFORMANCE_MAX = 10,
                            LOCAL_SERVICES = 11,
                            TRAVEL = 13,
                            DEMAND_GEN = 14
                        }
                    }

                    /** Properties of a CriterionCategoryChannelAvailabilityModeEnum. */
                    interface ICriterionCategoryChannelAvailabilityModeEnum {
                    }

                    /** Represents a CriterionCategoryChannelAvailabilityModeEnum. */
                    class CriterionCategoryChannelAvailabilityModeEnum implements ICriterionCategoryChannelAvailabilityModeEnum {

                        /**
                         * Constructs a new CriterionCategoryChannelAvailabilityModeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICriterionCategoryChannelAvailabilityModeEnum);

                        /**
                         * Creates a new CriterionCategoryChannelAvailabilityModeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionCategoryChannelAvailabilityModeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICriterionCategoryChannelAvailabilityModeEnum): google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailabilityModeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum.verify|verify} messages.
                         * @param message CriterionCategoryChannelAvailabilityModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICriterionCategoryChannelAvailabilityModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailabilityModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum.verify|verify} messages.
                         * @param message CriterionCategoryChannelAvailabilityModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICriterionCategoryChannelAvailabilityModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryChannelAvailabilityModeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionCategoryChannelAvailabilityModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum;

                        /**
                         * Decodes a CriterionCategoryChannelAvailabilityModeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionCategoryChannelAvailabilityModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum;

                        /**
                         * Verifies a CriterionCategoryChannelAvailabilityModeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryChannelAvailabilityModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionCategoryChannelAvailabilityModeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum;

                        /**
                         * Creates a plain object from a CriterionCategoryChannelAvailabilityModeEnum message. Also converts values to other types if specified.
                         * @param message CriterionCategoryChannelAvailabilityModeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CriterionCategoryChannelAvailabilityModeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryChannelAvailabilityModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionCategoryChannelAvailabilityModeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CriterionCategoryChannelAvailabilityModeEnum {

                        /** CriterionCategoryChannelAvailabilityMode enum. */
                        enum CriterionCategoryChannelAvailabilityMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ALL_CHANNELS = 2,
                            CHANNEL_TYPE_AND_ALL_SUBTYPES = 3,
                            CHANNEL_TYPE_AND_SUBSET_SUBTYPES = 4
                        }
                    }

                    /** Properties of a CriterionCategoryLocaleAvailabilityModeEnum. */
                    interface ICriterionCategoryLocaleAvailabilityModeEnum {
                    }

                    /** Represents a CriterionCategoryLocaleAvailabilityModeEnum. */
                    class CriterionCategoryLocaleAvailabilityModeEnum implements ICriterionCategoryLocaleAvailabilityModeEnum {

                        /**
                         * Constructs a new CriterionCategoryLocaleAvailabilityModeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICriterionCategoryLocaleAvailabilityModeEnum);

                        /**
                         * Creates a new CriterionCategoryLocaleAvailabilityModeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionCategoryLocaleAvailabilityModeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICriterionCategoryLocaleAvailabilityModeEnum): google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailabilityModeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum.verify|verify} messages.
                         * @param message CriterionCategoryLocaleAvailabilityModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICriterionCategoryLocaleAvailabilityModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailabilityModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum.verify|verify} messages.
                         * @param message CriterionCategoryLocaleAvailabilityModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICriterionCategoryLocaleAvailabilityModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryLocaleAvailabilityModeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionCategoryLocaleAvailabilityModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum;

                        /**
                         * Decodes a CriterionCategoryLocaleAvailabilityModeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionCategoryLocaleAvailabilityModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum;

                        /**
                         * Verifies a CriterionCategoryLocaleAvailabilityModeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryLocaleAvailabilityModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionCategoryLocaleAvailabilityModeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum;

                        /**
                         * Creates a plain object from a CriterionCategoryLocaleAvailabilityModeEnum message. Also converts values to other types if specified.
                         * @param message CriterionCategoryLocaleAvailabilityModeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CriterionCategoryLocaleAvailabilityModeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryLocaleAvailabilityModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionCategoryLocaleAvailabilityModeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CriterionCategoryLocaleAvailabilityModeEnum {

                        /** CriterionCategoryLocaleAvailabilityMode enum. */
                        enum CriterionCategoryLocaleAvailabilityMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ALL_LOCALES = 2,
                            COUNTRY_AND_ALL_LANGUAGES = 3,
                            LANGUAGE_AND_ALL_COUNTRIES = 4,
                            COUNTRY_AND_LANGUAGE = 5
                        }
                    }

                    /** Properties of a CustomizerAttributeTypeEnum. */
                    interface ICustomizerAttributeTypeEnum {
                    }

                    /** Represents a CustomizerAttributeTypeEnum. */
                    class CustomizerAttributeTypeEnum implements ICustomizerAttributeTypeEnum {

                        /**
                         * Constructs a new CustomizerAttributeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomizerAttributeTypeEnum);

                        /**
                         * Creates a new CustomizerAttributeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomizerAttributeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomizerAttributeTypeEnum): google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum;

                        /**
                         * Encodes the specified CustomizerAttributeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.verify|verify} messages.
                         * @param message CustomizerAttributeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomizerAttributeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomizerAttributeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.verify|verify} messages.
                         * @param message CustomizerAttributeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomizerAttributeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomizerAttributeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomizerAttributeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum;

                        /**
                         * Decodes a CustomizerAttributeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomizerAttributeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum;

                        /**
                         * Verifies a CustomizerAttributeTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomizerAttributeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomizerAttributeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum;

                        /**
                         * Creates a plain object from a CustomizerAttributeTypeEnum message. Also converts values to other types if specified.
                         * @param message CustomizerAttributeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomizerAttributeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomizerAttributeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomizerAttributeTypeEnum {

                        /** CustomizerAttributeType enum. */
                        enum CustomizerAttributeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TEXT = 2,
                            NUMBER = 3,
                            PRICE = 4,
                            PERCENT = 5
                        }
                    }

                    /** Properties of a MonthOfYearEnum. */
                    interface IMonthOfYearEnum {
                    }

                    /** Represents a MonthOfYearEnum. */
                    class MonthOfYearEnum implements IMonthOfYearEnum {

                        /**
                         * Constructs a new MonthOfYearEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IMonthOfYearEnum);

                        /**
                         * Creates a new MonthOfYearEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MonthOfYearEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IMonthOfYearEnum): google.ads.googleads.v23.enums.MonthOfYearEnum;

                        /**
                         * Encodes the specified MonthOfYearEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.MonthOfYearEnum.verify|verify} messages.
                         * @param message MonthOfYearEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IMonthOfYearEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MonthOfYearEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.MonthOfYearEnum.verify|verify} messages.
                         * @param message MonthOfYearEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IMonthOfYearEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MonthOfYearEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MonthOfYearEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.MonthOfYearEnum;

                        /**
                         * Decodes a MonthOfYearEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MonthOfYearEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.MonthOfYearEnum;

                        /**
                         * Verifies a MonthOfYearEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MonthOfYearEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MonthOfYearEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.MonthOfYearEnum;

                        /**
                         * Creates a plain object from a MonthOfYearEnum message. Also converts values to other types if specified.
                         * @param message MonthOfYearEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.MonthOfYearEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MonthOfYearEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MonthOfYearEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MonthOfYearEnum {

                        /** MonthOfYear enum. */
                        enum MonthOfYear {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            JANUARY = 2,
                            FEBRUARY = 3,
                            MARCH = 4,
                            APRIL = 5,
                            MAY = 6,
                            JUNE = 7,
                            JULY = 8,
                            AUGUST = 9,
                            SEPTEMBER = 10,
                            OCTOBER = 11,
                            NOVEMBER = 12,
                            DECEMBER = 13
                        }
                    }

                    /** Properties of an AppUrlOperatingSystemTypeEnum. */
                    interface IAppUrlOperatingSystemTypeEnum {
                    }

                    /** Represents an AppUrlOperatingSystemTypeEnum. */
                    class AppUrlOperatingSystemTypeEnum implements IAppUrlOperatingSystemTypeEnum {

                        /**
                         * Constructs a new AppUrlOperatingSystemTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAppUrlOperatingSystemTypeEnum);

                        /**
                         * Creates a new AppUrlOperatingSystemTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppUrlOperatingSystemTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAppUrlOperatingSystemTypeEnum): google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum;

                        /**
                         * Encodes the specified AppUrlOperatingSystemTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum.verify|verify} messages.
                         * @param message AppUrlOperatingSystemTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAppUrlOperatingSystemTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppUrlOperatingSystemTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum.verify|verify} messages.
                         * @param message AppUrlOperatingSystemTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAppUrlOperatingSystemTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppUrlOperatingSystemTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppUrlOperatingSystemTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum;

                        /**
                         * Decodes an AppUrlOperatingSystemTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppUrlOperatingSystemTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum;

                        /**
                         * Verifies an AppUrlOperatingSystemTypeEnum message.
                         * @param message Plain 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 AppUrlOperatingSystemTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppUrlOperatingSystemTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum;

                        /**
                         * Creates a plain object from an AppUrlOperatingSystemTypeEnum message. Also converts values to other types if specified.
                         * @param message AppUrlOperatingSystemTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AppUrlOperatingSystemTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppUrlOperatingSystemTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppUrlOperatingSystemTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AppUrlOperatingSystemTypeEnum {

                        /** AppUrlOperatingSystemType enum. */
                        enum AppUrlOperatingSystemType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IOS = 2,
                            ANDROID = 3
                        }
                    }

                    /** Properties of a FrequencyCapEventTypeEnum. */
                    interface IFrequencyCapEventTypeEnum {
                    }

                    /** Represents a FrequencyCapEventTypeEnum. */
                    class FrequencyCapEventTypeEnum implements IFrequencyCapEventTypeEnum {

                        /**
                         * Constructs a new FrequencyCapEventTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IFrequencyCapEventTypeEnum);

                        /**
                         * Creates a new FrequencyCapEventTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCapEventTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IFrequencyCapEventTypeEnum): google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum;

                        /**
                         * Encodes the specified FrequencyCapEventTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum.verify|verify} messages.
                         * @param message FrequencyCapEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IFrequencyCapEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapEventTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum.verify|verify} messages.
                         * @param message FrequencyCapEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IFrequencyCapEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapEventTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequencyCapEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum;

                        /**
                         * Decodes a FrequencyCapEventTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequencyCapEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum;

                        /**
                         * Verifies a FrequencyCapEventTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapEventTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequencyCapEventTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum;

                        /**
                         * Creates a plain object from a FrequencyCapEventTypeEnum message. Also converts values to other types if specified.
                         * @param message FrequencyCapEventTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.FrequencyCapEventTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapEventTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequencyCapEventTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FrequencyCapEventTypeEnum {

                        /** FrequencyCapEventType enum. */
                        enum FrequencyCapEventType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IMPRESSION = 2,
                            VIDEO_VIEW = 3
                        }
                    }

                    /** Properties of a FrequencyCapLevelEnum. */
                    interface IFrequencyCapLevelEnum {
                    }

                    /** Represents a FrequencyCapLevelEnum. */
                    class FrequencyCapLevelEnum implements IFrequencyCapLevelEnum {

                        /**
                         * Constructs a new FrequencyCapLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IFrequencyCapLevelEnum);

                        /**
                         * Creates a new FrequencyCapLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCapLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IFrequencyCapLevelEnum): google.ads.googleads.v23.enums.FrequencyCapLevelEnum;

                        /**
                         * Encodes the specified FrequencyCapLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.FrequencyCapLevelEnum.verify|verify} messages.
                         * @param message FrequencyCapLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IFrequencyCapLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.FrequencyCapLevelEnum.verify|verify} messages.
                         * @param message FrequencyCapLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IFrequencyCapLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequencyCapLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.FrequencyCapLevelEnum;

                        /**
                         * Decodes a FrequencyCapLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequencyCapLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.FrequencyCapLevelEnum;

                        /**
                         * Verifies a FrequencyCapLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequencyCapLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.FrequencyCapLevelEnum;

                        /**
                         * Creates a plain object from a FrequencyCapLevelEnum message. Also converts values to other types if specified.
                         * @param message FrequencyCapLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.FrequencyCapLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequencyCapLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FrequencyCapLevelEnum {

                        /** FrequencyCapLevel enum. */
                        enum FrequencyCapLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_GROUP_AD = 2,
                            AD_GROUP = 3,
                            CAMPAIGN = 4
                        }
                    }

                    /** Properties of a FrequencyCapTimeUnitEnum. */
                    interface IFrequencyCapTimeUnitEnum {
                    }

                    /** Represents a FrequencyCapTimeUnitEnum. */
                    class FrequencyCapTimeUnitEnum implements IFrequencyCapTimeUnitEnum {

                        /**
                         * Constructs a new FrequencyCapTimeUnitEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IFrequencyCapTimeUnitEnum);

                        /**
                         * Creates a new FrequencyCapTimeUnitEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCapTimeUnitEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IFrequencyCapTimeUnitEnum): google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum;

                        /**
                         * Encodes the specified FrequencyCapTimeUnitEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.verify|verify} messages.
                         * @param message FrequencyCapTimeUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IFrequencyCapTimeUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapTimeUnitEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.verify|verify} messages.
                         * @param message FrequencyCapTimeUnitEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IFrequencyCapTimeUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapTimeUnitEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequencyCapTimeUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum;

                        /**
                         * Decodes a FrequencyCapTimeUnitEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequencyCapTimeUnitEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum;

                        /**
                         * Verifies a FrequencyCapTimeUnitEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapTimeUnitEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequencyCapTimeUnitEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum;

                        /**
                         * Creates a plain object from a FrequencyCapTimeUnitEnum message. Also converts values to other types if specified.
                         * @param message FrequencyCapTimeUnitEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapTimeUnitEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequencyCapTimeUnitEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FrequencyCapTimeUnitEnum {

                        /** FrequencyCapTimeUnit enum. */
                        enum FrequencyCapTimeUnit {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DAY = 2,
                            WEEK = 3,
                            MONTH = 4
                        }
                    }

                    /** Properties of a KeywordPlanAggregateMetricTypeEnum. */
                    interface IKeywordPlanAggregateMetricTypeEnum {
                    }

                    /** Represents a KeywordPlanAggregateMetricTypeEnum. */
                    class KeywordPlanAggregateMetricTypeEnum implements IKeywordPlanAggregateMetricTypeEnum {

                        /**
                         * Constructs a new KeywordPlanAggregateMetricTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IKeywordPlanAggregateMetricTypeEnum);

                        /**
                         * Creates a new KeywordPlanAggregateMetricTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAggregateMetricTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IKeywordPlanAggregateMetricTypeEnum): google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum.verify|verify} messages.
                         * @param message KeywordPlanAggregateMetricTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IKeywordPlanAggregateMetricTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum.verify|verify} messages.
                         * @param message KeywordPlanAggregateMetricTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IKeywordPlanAggregateMetricTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAggregateMetricTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAggregateMetricTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum;

                        /**
                         * Decodes a KeywordPlanAggregateMetricTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAggregateMetricTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum;

                        /**
                         * Verifies a KeywordPlanAggregateMetricTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAggregateMetricTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAggregateMetricTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum;

                        /**
                         * Creates a plain object from a KeywordPlanAggregateMetricTypeEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanAggregateMetricTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.KeywordPlanAggregateMetricTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAggregateMetricTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAggregateMetricTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanAggregateMetricTypeEnum {

                        /** KeywordPlanAggregateMetricType enum. */
                        enum KeywordPlanAggregateMetricType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DEVICE = 2
                        }
                    }

                    /** Properties of a KeywordPlanCompetitionLevelEnum. */
                    interface IKeywordPlanCompetitionLevelEnum {
                    }

                    /** Represents a KeywordPlanCompetitionLevelEnum. */
                    class KeywordPlanCompetitionLevelEnum implements IKeywordPlanCompetitionLevelEnum {

                        /**
                         * Constructs a new KeywordPlanCompetitionLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IKeywordPlanCompetitionLevelEnum);

                        /**
                         * Creates a new KeywordPlanCompetitionLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCompetitionLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IKeywordPlanCompetitionLevelEnum): google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum;

                        /**
                         * Encodes the specified KeywordPlanCompetitionLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum.verify|verify} messages.
                         * @param message KeywordPlanCompetitionLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IKeywordPlanCompetitionLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCompetitionLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum.verify|verify} messages.
                         * @param message KeywordPlanCompetitionLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IKeywordPlanCompetitionLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCompetitionLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanCompetitionLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum;

                        /**
                         * Decodes a KeywordPlanCompetitionLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCompetitionLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum;

                        /**
                         * Verifies a KeywordPlanCompetitionLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCompetitionLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanCompetitionLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum;

                        /**
                         * Creates a plain object from a KeywordPlanCompetitionLevelEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanCompetitionLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.KeywordPlanCompetitionLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCompetitionLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanCompetitionLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanCompetitionLevelEnum {

                        /** KeywordPlanCompetitionLevel enum. */
                        enum KeywordPlanCompetitionLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LOW = 2,
                            MEDIUM = 3,
                            HIGH = 4
                        }
                    }

                    /** Properties of a KeywordPlanConceptGroupTypeEnum. */
                    interface IKeywordPlanConceptGroupTypeEnum {
                    }

                    /** Represents a KeywordPlanConceptGroupTypeEnum. */
                    class KeywordPlanConceptGroupTypeEnum implements IKeywordPlanConceptGroupTypeEnum {

                        /**
                         * Constructs a new KeywordPlanConceptGroupTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IKeywordPlanConceptGroupTypeEnum);

                        /**
                         * Creates a new KeywordPlanConceptGroupTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanConceptGroupTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IKeywordPlanConceptGroupTypeEnum): google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum;

                        /**
                         * Encodes the specified KeywordPlanConceptGroupTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum.verify|verify} messages.
                         * @param message KeywordPlanConceptGroupTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IKeywordPlanConceptGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanConceptGroupTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum.verify|verify} messages.
                         * @param message KeywordPlanConceptGroupTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IKeywordPlanConceptGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanConceptGroupTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanConceptGroupTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum;

                        /**
                         * Decodes a KeywordPlanConceptGroupTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanConceptGroupTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum;

                        /**
                         * Verifies a KeywordPlanConceptGroupTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanConceptGroupTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanConceptGroupTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum;

                        /**
                         * Creates a plain object from a KeywordPlanConceptGroupTypeEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanConceptGroupTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.KeywordPlanConceptGroupTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanConceptGroupTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanConceptGroupTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanConceptGroupTypeEnum {

                        /** KeywordPlanConceptGroupType enum. */
                        enum KeywordPlanConceptGroupType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BRAND = 2,
                            OTHER_BRANDS = 3,
                            NON_BRAND = 4
                        }
                    }

                    /** Properties of an ExperimentMetricEnum. */
                    interface IExperimentMetricEnum {
                    }

                    /** Represents an ExperimentMetricEnum. */
                    class ExperimentMetricEnum implements IExperimentMetricEnum {

                        /**
                         * Constructs a new ExperimentMetricEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IExperimentMetricEnum);

                        /**
                         * Creates a new ExperimentMetricEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentMetricEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IExperimentMetricEnum): google.ads.googleads.v23.enums.ExperimentMetricEnum;

                        /**
                         * Encodes the specified ExperimentMetricEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentMetricEnum.verify|verify} messages.
                         * @param message ExperimentMetricEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IExperimentMetricEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentMetricEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentMetricEnum.verify|verify} messages.
                         * @param message ExperimentMetricEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IExperimentMetricEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentMetricEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentMetricEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ExperimentMetricEnum;

                        /**
                         * Decodes an ExperimentMetricEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentMetricEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ExperimentMetricEnum;

                        /**
                         * Verifies an ExperimentMetricEnum message.
                         * @param message Plain 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 ExperimentMetricEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentMetricEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ExperimentMetricEnum;

                        /**
                         * Creates a plain object from an ExperimentMetricEnum message. Also converts values to other types if specified.
                         * @param message ExperimentMetricEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ExperimentMetricEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentMetricEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentMetricEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExperimentMetricEnum {

                        /** ExperimentMetric enum. */
                        enum ExperimentMetric {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CLICKS = 2,
                            IMPRESSIONS = 3,
                            COST = 4,
                            CONVERSIONS_PER_INTERACTION_RATE = 5,
                            COST_PER_CONVERSION = 6,
                            CONVERSIONS_VALUE_PER_COST = 7,
                            AVERAGE_CPC = 8,
                            CTR = 9,
                            INCREMENTAL_CONVERSIONS = 10,
                            COMPLETED_VIDEO_VIEWS = 11,
                            CUSTOM_ALGORITHMS = 12,
                            CONVERSIONS = 13,
                            CONVERSION_VALUE = 14
                        }
                    }

                    /** Properties of an ExperimentMetricDirectionEnum. */
                    interface IExperimentMetricDirectionEnum {
                    }

                    /** Represents an ExperimentMetricDirectionEnum. */
                    class ExperimentMetricDirectionEnum implements IExperimentMetricDirectionEnum {

                        /**
                         * Constructs a new ExperimentMetricDirectionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IExperimentMetricDirectionEnum);

                        /**
                         * Creates a new ExperimentMetricDirectionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentMetricDirectionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IExperimentMetricDirectionEnum): google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum;

                        /**
                         * Encodes the specified ExperimentMetricDirectionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum.verify|verify} messages.
                         * @param message ExperimentMetricDirectionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IExperimentMetricDirectionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentMetricDirectionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum.verify|verify} messages.
                         * @param message ExperimentMetricDirectionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IExperimentMetricDirectionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentMetricDirectionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentMetricDirectionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum;

                        /**
                         * Decodes an ExperimentMetricDirectionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentMetricDirectionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum;

                        /**
                         * Verifies an ExperimentMetricDirectionEnum message.
                         * @param message Plain 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 ExperimentMetricDirectionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentMetricDirectionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum;

                        /**
                         * Creates a plain object from an ExperimentMetricDirectionEnum message. Also converts values to other types if specified.
                         * @param message ExperimentMetricDirectionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ExperimentMetricDirectionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentMetricDirectionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentMetricDirectionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExperimentMetricDirectionEnum {

                        /** ExperimentMetricDirection enum. */
                        enum ExperimentMetricDirection {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_CHANGE = 2,
                            INCREASE = 3,
                            DECREASE = 4,
                            NO_CHANGE_OR_INCREASE = 5,
                            NO_CHANGE_OR_DECREASE = 6
                        }
                    }

                    /** Properties of an InteractionEventTypeEnum. */
                    interface IInteractionEventTypeEnum {
                    }

                    /** Represents an InteractionEventTypeEnum. */
                    class InteractionEventTypeEnum implements IInteractionEventTypeEnum {

                        /**
                         * Constructs a new InteractionEventTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IInteractionEventTypeEnum);

                        /**
                         * Creates a new InteractionEventTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InteractionEventTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IInteractionEventTypeEnum): google.ads.googleads.v23.enums.InteractionEventTypeEnum;

                        /**
                         * Encodes the specified InteractionEventTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.InteractionEventTypeEnum.verify|verify} messages.
                         * @param message InteractionEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IInteractionEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InteractionEventTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.InteractionEventTypeEnum.verify|verify} messages.
                         * @param message InteractionEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IInteractionEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InteractionEventTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InteractionEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.InteractionEventTypeEnum;

                        /**
                         * Decodes an InteractionEventTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InteractionEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.InteractionEventTypeEnum;

                        /**
                         * Verifies an InteractionEventTypeEnum message.
                         * @param message Plain 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 InteractionEventTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InteractionEventTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.InteractionEventTypeEnum;

                        /**
                         * Creates a plain object from an InteractionEventTypeEnum message. Also converts values to other types if specified.
                         * @param message InteractionEventTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.InteractionEventTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InteractionEventTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InteractionEventTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace InteractionEventTypeEnum {

                        /** InteractionEventType enum. */
                        enum InteractionEventType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CLICK = 2,
                            ENGAGEMENT = 3,
                            VIDEO_VIEW = 4,
                            NONE = 5
                        }
                    }

                    /** Properties of a QualityScoreBucketEnum. */
                    interface IQualityScoreBucketEnum {
                    }

                    /** Represents a QualityScoreBucketEnum. */
                    class QualityScoreBucketEnum implements IQualityScoreBucketEnum {

                        /**
                         * Constructs a new QualityScoreBucketEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IQualityScoreBucketEnum);

                        /**
                         * Creates a new QualityScoreBucketEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QualityScoreBucketEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IQualityScoreBucketEnum): google.ads.googleads.v23.enums.QualityScoreBucketEnum;

                        /**
                         * Encodes the specified QualityScoreBucketEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.QualityScoreBucketEnum.verify|verify} messages.
                         * @param message QualityScoreBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IQualityScoreBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QualityScoreBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.QualityScoreBucketEnum.verify|verify} messages.
                         * @param message QualityScoreBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IQualityScoreBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QualityScoreBucketEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QualityScoreBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.QualityScoreBucketEnum;

                        /**
                         * Decodes a QualityScoreBucketEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QualityScoreBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.QualityScoreBucketEnum;

                        /**
                         * Verifies a QualityScoreBucketEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QualityScoreBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QualityScoreBucketEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.QualityScoreBucketEnum;

                        /**
                         * Creates a plain object from a QualityScoreBucketEnum message. Also converts values to other types if specified.
                         * @param message QualityScoreBucketEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.QualityScoreBucketEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QualityScoreBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QualityScoreBucketEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace QualityScoreBucketEnum {

                        /** QualityScoreBucket enum. */
                        enum QualityScoreBucket {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BELOW_AVERAGE = 2,
                            AVERAGE = 3,
                            ABOVE_AVERAGE = 4
                        }
                    }

                    /** Properties of a UserIdentifierSourceEnum. */
                    interface IUserIdentifierSourceEnum {
                    }

                    /** Represents a UserIdentifierSourceEnum. */
                    class UserIdentifierSourceEnum implements IUserIdentifierSourceEnum {

                        /**
                         * Constructs a new UserIdentifierSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserIdentifierSourceEnum);

                        /**
                         * Creates a new UserIdentifierSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserIdentifierSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserIdentifierSourceEnum): google.ads.googleads.v23.enums.UserIdentifierSourceEnum;

                        /**
                         * Encodes the specified UserIdentifierSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserIdentifierSourceEnum.verify|verify} messages.
                         * @param message UserIdentifierSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserIdentifierSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserIdentifierSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserIdentifierSourceEnum.verify|verify} messages.
                         * @param message UserIdentifierSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserIdentifierSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserIdentifierSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserIdentifierSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserIdentifierSourceEnum;

                        /**
                         * Decodes a UserIdentifierSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserIdentifierSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserIdentifierSourceEnum;

                        /**
                         * Verifies a UserIdentifierSourceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserIdentifierSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserIdentifierSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserIdentifierSourceEnum;

                        /**
                         * Creates a plain object from a UserIdentifierSourceEnum message. Also converts values to other types if specified.
                         * @param message UserIdentifierSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserIdentifierSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserIdentifierSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserIdentifierSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserIdentifierSourceEnum {

                        /** UserIdentifierSource enum. */
                        enum UserIdentifierSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FIRST_PARTY = 2,
                            THIRD_PARTY = 3
                        }
                    }

                    /** Properties of an AdDestinationTypeEnum. */
                    interface IAdDestinationTypeEnum {
                    }

                    /** Represents an AdDestinationTypeEnum. */
                    class AdDestinationTypeEnum implements IAdDestinationTypeEnum {

                        /**
                         * Constructs a new AdDestinationTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdDestinationTypeEnum);

                        /**
                         * Creates a new AdDestinationTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdDestinationTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdDestinationTypeEnum): google.ads.googleads.v23.enums.AdDestinationTypeEnum;

                        /**
                         * Encodes the specified AdDestinationTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdDestinationTypeEnum.verify|verify} messages.
                         * @param message AdDestinationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdDestinationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdDestinationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdDestinationTypeEnum.verify|verify} messages.
                         * @param message AdDestinationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdDestinationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdDestinationTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdDestinationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdDestinationTypeEnum;

                        /**
                         * Decodes an AdDestinationTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdDestinationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdDestinationTypeEnum;

                        /**
                         * Verifies an AdDestinationTypeEnum message.
                         * @param message Plain 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 AdDestinationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdDestinationTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdDestinationTypeEnum;

                        /**
                         * Creates a plain object from an AdDestinationTypeEnum message. Also converts values to other types if specified.
                         * @param message AdDestinationTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdDestinationTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdDestinationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdDestinationTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdDestinationTypeEnum {

                        /** AdDestinationType enum. */
                        enum AdDestinationType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_APPLICABLE = 2,
                            WEBSITE = 3,
                            APP_DEEP_LINK = 4,
                            APP_STORE = 5,
                            PHONE_CALL = 6,
                            MAP_DIRECTIONS = 7,
                            LOCATION_LISTING = 8,
                            MESSAGE = 9,
                            LEAD_FORM = 10,
                            YOUTUBE = 11,
                            UNMODELED_FOR_CONVERSIONS = 12
                        }
                    }

                    /** Properties of an AdFormatTypeEnum. */
                    interface IAdFormatTypeEnum {
                    }

                    /** Represents an AdFormatTypeEnum. */
                    class AdFormatTypeEnum implements IAdFormatTypeEnum {

                        /**
                         * Constructs a new AdFormatTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdFormatTypeEnum);

                        /**
                         * Creates a new AdFormatTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdFormatTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdFormatTypeEnum): google.ads.googleads.v23.enums.AdFormatTypeEnum;

                        /**
                         * Encodes the specified AdFormatTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdFormatTypeEnum.verify|verify} messages.
                         * @param message AdFormatTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdFormatTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdFormatTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdFormatTypeEnum.verify|verify} messages.
                         * @param message AdFormatTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdFormatTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdFormatTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdFormatTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdFormatTypeEnum;

                        /**
                         * Decodes an AdFormatTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdFormatTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdFormatTypeEnum;

                        /**
                         * Verifies an AdFormatTypeEnum message.
                         * @param message Plain 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 AdFormatTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdFormatTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdFormatTypeEnum;

                        /**
                         * Creates a plain object from an AdFormatTypeEnum message. Also converts values to other types if specified.
                         * @param message AdFormatTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdFormatTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdFormatTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdFormatTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdFormatTypeEnum {

                        /** AdFormatType enum. */
                        enum AdFormatType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OTHER = 2,
                            UNSEGMENTED = 3,
                            INSTREAM_SKIPPABLE = 4,
                            INSTREAM_NON_SKIPPABLE = 5,
                            INFEED = 6,
                            BUMPER = 7,
                            OUTSTREAM = 8,
                            MASTHEAD = 9,
                            AUDIO = 10,
                            SHORTS = 11,
                            PAUSE = 12,
                            VERTICAL_ADS_PROMOTION = 13,
                            VERTICAL_ADS_BOOKING_LINK = 14,
                            TEXT = 15
                        }
                    }

                    /** Properties of an AdNetworkTypeEnum. */
                    interface IAdNetworkTypeEnum {
                    }

                    /** Represents an AdNetworkTypeEnum. */
                    class AdNetworkTypeEnum implements IAdNetworkTypeEnum {

                        /**
                         * Constructs a new AdNetworkTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdNetworkTypeEnum);

                        /**
                         * Creates a new AdNetworkTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdNetworkTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdNetworkTypeEnum): google.ads.googleads.v23.enums.AdNetworkTypeEnum;

                        /**
                         * Encodes the specified AdNetworkTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdNetworkTypeEnum.verify|verify} messages.
                         * @param message AdNetworkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdNetworkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdNetworkTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdNetworkTypeEnum.verify|verify} messages.
                         * @param message AdNetworkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdNetworkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdNetworkTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdNetworkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdNetworkTypeEnum;

                        /**
                         * Decodes an AdNetworkTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdNetworkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdNetworkTypeEnum;

                        /**
                         * Verifies an AdNetworkTypeEnum message.
                         * @param message Plain 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 AdNetworkTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdNetworkTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdNetworkTypeEnum;

                        /**
                         * Creates a plain object from an AdNetworkTypeEnum message. Also converts values to other types if specified.
                         * @param message AdNetworkTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdNetworkTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdNetworkTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdNetworkTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdNetworkTypeEnum {

                        /** AdNetworkType enum. */
                        enum AdNetworkType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEARCH = 2,
                            SEARCH_PARTNERS = 3,
                            CONTENT = 4,
                            MIXED = 7,
                            YOUTUBE = 8,
                            GOOGLE_TV = 9,
                            GOOGLE_OWNED_CHANNELS = 10,
                            GMAIL = 11,
                            DISCOVER = 12,
                            MAPS = 13
                        }
                    }

                    /** Properties of an AdSubNetworkTypeEnum. */
                    interface IAdSubNetworkTypeEnum {
                    }

                    /** Represents an AdSubNetworkTypeEnum. */
                    class AdSubNetworkTypeEnum implements IAdSubNetworkTypeEnum {

                        /**
                         * Constructs a new AdSubNetworkTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdSubNetworkTypeEnum);

                        /**
                         * Creates a new AdSubNetworkTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdSubNetworkTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdSubNetworkTypeEnum): google.ads.googleads.v23.enums.AdSubNetworkTypeEnum;

                        /**
                         * Encodes the specified AdSubNetworkTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdSubNetworkTypeEnum.verify|verify} messages.
                         * @param message AdSubNetworkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdSubNetworkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdSubNetworkTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdSubNetworkTypeEnum.verify|verify} messages.
                         * @param message AdSubNetworkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdSubNetworkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdSubNetworkTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdSubNetworkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdSubNetworkTypeEnum;

                        /**
                         * Decodes an AdSubNetworkTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdSubNetworkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdSubNetworkTypeEnum;

                        /**
                         * Verifies an AdSubNetworkTypeEnum message.
                         * @param message Plain 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 AdSubNetworkTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdSubNetworkTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdSubNetworkTypeEnum;

                        /**
                         * Creates a plain object from an AdSubNetworkTypeEnum message. Also converts values to other types if specified.
                         * @param message AdSubNetworkTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdSubNetworkTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdSubNetworkTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdSubNetworkTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdSubNetworkTypeEnum {

                        /** AdSubNetworkType enum. */
                        enum AdSubNetworkType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNSEGMENTED = 2,
                            YOUTUBE_INSTREAM = 3,
                            YOUTUBE_INFEED = 4,
                            YOUTUBE_SHORTS = 5
                        }
                    }

                    /** Properties of a BudgetCampaignAssociationStatusEnum. */
                    interface IBudgetCampaignAssociationStatusEnum {
                    }

                    /** Represents a BudgetCampaignAssociationStatusEnum. */
                    class BudgetCampaignAssociationStatusEnum implements IBudgetCampaignAssociationStatusEnum {

                        /**
                         * Constructs a new BudgetCampaignAssociationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBudgetCampaignAssociationStatusEnum);

                        /**
                         * Creates a new BudgetCampaignAssociationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetCampaignAssociationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBudgetCampaignAssociationStatusEnum): google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum.verify|verify} messages.
                         * @param message BudgetCampaignAssociationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBudgetCampaignAssociationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum.verify|verify} messages.
                         * @param message BudgetCampaignAssociationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBudgetCampaignAssociationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetCampaignAssociationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetCampaignAssociationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum;

                        /**
                         * Decodes a BudgetCampaignAssociationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetCampaignAssociationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum;

                        /**
                         * Verifies a BudgetCampaignAssociationStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetCampaignAssociationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetCampaignAssociationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum;

                        /**
                         * Creates a plain object from a BudgetCampaignAssociationStatusEnum message. Also converts values to other types if specified.
                         * @param message BudgetCampaignAssociationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BudgetCampaignAssociationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetCampaignAssociationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetCampaignAssociationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BudgetCampaignAssociationStatusEnum {

                        /** BudgetCampaignAssociationStatus enum. */
                        enum BudgetCampaignAssociationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a ClickTypeEnum. */
                    interface IClickTypeEnum {
                    }

                    /** Represents a ClickTypeEnum. */
                    class ClickTypeEnum implements IClickTypeEnum {

                        /**
                         * Constructs a new ClickTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IClickTypeEnum);

                        /**
                         * Creates a new ClickTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IClickTypeEnum): google.ads.googleads.v23.enums.ClickTypeEnum;

                        /**
                         * Encodes the specified ClickTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ClickTypeEnum.verify|verify} messages.
                         * @param message ClickTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IClickTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ClickTypeEnum.verify|verify} messages.
                         * @param message ClickTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IClickTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ClickTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ClickTypeEnum;

                        /**
                         * Decodes a ClickTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ClickTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ClickTypeEnum;

                        /**
                         * Verifies a ClickTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ClickTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ClickTypeEnum;

                        /**
                         * Creates a plain object from a ClickTypeEnum message. Also converts values to other types if specified.
                         * @param message ClickTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ClickTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ClickTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ClickTypeEnum {

                        /** ClickType enum. */
                        enum ClickType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APP_DEEPLINK = 2,
                            BREADCRUMBS = 3,
                            BROADBAND_PLAN = 4,
                            CALL_TRACKING = 5,
                            CALLS = 6,
                            CLICK_ON_ENGAGEMENT_AD = 7,
                            GET_DIRECTIONS = 8,
                            LOCATION_EXPANSION = 9,
                            LOCATION_FORMAT_CALL = 10,
                            LOCATION_FORMAT_DIRECTIONS = 11,
                            LOCATION_FORMAT_IMAGE = 12,
                            LOCATION_FORMAT_LANDING_PAGE = 13,
                            LOCATION_FORMAT_MAP = 14,
                            LOCATION_FORMAT_STORE_INFO = 15,
                            LOCATION_FORMAT_TEXT = 16,
                            MOBILE_CALL_TRACKING = 17,
                            OFFER_PRINTS = 18,
                            OTHER = 19,
                            PRODUCT_EXTENSION_CLICKS = 20,
                            PRODUCT_LISTING_AD_CLICKS = 21,
                            SITELINKS = 22,
                            STORE_LOCATOR = 23,
                            URL_CLICKS = 25,
                            VIDEO_APP_STORE_CLICKS = 26,
                            VIDEO_CALL_TO_ACTION_CLICKS = 27,
                            VIDEO_CARD_ACTION_HEADLINE_CLICKS = 28,
                            VIDEO_END_CAP_CLICKS = 29,
                            VIDEO_WEBSITE_CLICKS = 30,
                            VISUAL_SITELINKS = 31,
                            WIRELESS_PLAN = 32,
                            PRODUCT_LISTING_AD_LOCAL = 33,
                            PRODUCT_LISTING_AD_MULTICHANNEL_LOCAL = 34,
                            PRODUCT_LISTING_AD_MULTICHANNEL_ONLINE = 35,
                            PRODUCT_LISTING_ADS_COUPON = 36,
                            PRODUCT_LISTING_AD_TRANSACTABLE = 37,
                            PRODUCT_AD_APP_DEEPLINK = 38,
                            SHOWCASE_AD_CATEGORY_LINK = 39,
                            SHOWCASE_AD_LOCAL_STOREFRONT_LINK = 40,
                            SHOWCASE_AD_ONLINE_PRODUCT_LINK = 42,
                            SHOWCASE_AD_LOCAL_PRODUCT_LINK = 43,
                            PROMOTION_EXTENSION = 44,
                            SWIPEABLE_GALLERY_AD_HEADLINE = 45,
                            SWIPEABLE_GALLERY_AD_SWIPES = 46,
                            SWIPEABLE_GALLERY_AD_SEE_MORE = 47,
                            SWIPEABLE_GALLERY_AD_SITELINK_ONE = 48,
                            SWIPEABLE_GALLERY_AD_SITELINK_TWO = 49,
                            SWIPEABLE_GALLERY_AD_SITELINK_THREE = 50,
                            SWIPEABLE_GALLERY_AD_SITELINK_FOUR = 51,
                            SWIPEABLE_GALLERY_AD_SITELINK_FIVE = 52,
                            HOTEL_PRICE = 53,
                            PRICE_EXTENSION = 54,
                            HOTEL_BOOK_ON_GOOGLE_ROOM_SELECTION = 55,
                            SHOPPING_COMPARISON_LISTING = 56,
                            CROSS_NETWORK = 57,
                            AD_IMAGE = 58,
                            TRAVEL_ASSETS = 59,
                            VEHICLE_ASSETS = 60,
                            PRODUCT_ASSETS = 61,
                            VIDEO_CHANNEL_CLICK = 62,
                            VIDEO_RELATED_VIDEOS_CLICK = 63,
                            CLICK_TO_MESSAGE_THIRD_PARTY_CLICK = 64,
                            CLICK_TO_MESSAGE_LANDING_PAGE_CLICK = 65
                        }
                    }

                    /** Properties of a ConversionActionCategoryEnum. */
                    interface IConversionActionCategoryEnum {
                    }

                    /** Represents a ConversionActionCategoryEnum. */
                    class ConversionActionCategoryEnum implements IConversionActionCategoryEnum {

                        /**
                         * Constructs a new ConversionActionCategoryEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionActionCategoryEnum);

                        /**
                         * Creates a new ConversionActionCategoryEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionActionCategoryEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionActionCategoryEnum): google.ads.googleads.v23.enums.ConversionActionCategoryEnum;

                        /**
                         * Encodes the specified ConversionActionCategoryEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionCategoryEnum.verify|verify} messages.
                         * @param message ConversionActionCategoryEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionActionCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionCategoryEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionCategoryEnum.verify|verify} messages.
                         * @param message ConversionActionCategoryEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionActionCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionCategoryEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionActionCategoryEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionActionCategoryEnum;

                        /**
                         * Decodes a ConversionActionCategoryEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionActionCategoryEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionActionCategoryEnum;

                        /**
                         * Verifies a ConversionActionCategoryEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionCategoryEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionActionCategoryEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionActionCategoryEnum;

                        /**
                         * Creates a plain object from a ConversionActionCategoryEnum message. Also converts values to other types if specified.
                         * @param message ConversionActionCategoryEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionActionCategoryEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionCategoryEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionActionCategoryEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionActionCategoryEnum {

                        /** ConversionActionCategory enum. */
                        enum ConversionActionCategory {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DEFAULT = 2,
                            PAGE_VIEW = 3,
                            PURCHASE = 4,
                            SIGNUP = 5,
                            DOWNLOAD = 7,
                            ADD_TO_CART = 8,
                            BEGIN_CHECKOUT = 9,
                            SUBSCRIBE_PAID = 10,
                            PHONE_CALL_LEAD = 11,
                            IMPORTED_LEAD = 12,
                            SUBMIT_LEAD_FORM = 13,
                            BOOK_APPOINTMENT = 14,
                            REQUEST_QUOTE = 15,
                            GET_DIRECTIONS = 16,
                            OUTBOUND_CLICK = 17,
                            CONTACT = 18,
                            ENGAGEMENT = 19,
                            STORE_VISIT = 20,
                            STORE_SALE = 21,
                            QUALIFIED_LEAD = 22,
                            CONVERTED_LEAD = 23
                        }
                    }

                    /** Properties of a ConversionAttributionEventTypeEnum. */
                    interface IConversionAttributionEventTypeEnum {
                    }

                    /** Represents a ConversionAttributionEventTypeEnum. */
                    class ConversionAttributionEventTypeEnum implements IConversionAttributionEventTypeEnum {

                        /**
                         * Constructs a new ConversionAttributionEventTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionAttributionEventTypeEnum);

                        /**
                         * Creates a new ConversionAttributionEventTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAttributionEventTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionAttributionEventTypeEnum): google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum;

                        /**
                         * Encodes the specified ConversionAttributionEventTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum.verify|verify} messages.
                         * @param message ConversionAttributionEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionAttributionEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAttributionEventTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum.verify|verify} messages.
                         * @param message ConversionAttributionEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionAttributionEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAttributionEventTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionAttributionEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum;

                        /**
                         * Decodes a ConversionAttributionEventTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionAttributionEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum;

                        /**
                         * Verifies a ConversionAttributionEventTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAttributionEventTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionAttributionEventTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum;

                        /**
                         * Creates a plain object from a ConversionAttributionEventTypeEnum message. Also converts values to other types if specified.
                         * @param message ConversionAttributionEventTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionAttributionEventTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAttributionEventTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionAttributionEventTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionAttributionEventTypeEnum {

                        /** ConversionAttributionEventType enum. */
                        enum ConversionAttributionEventType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IMPRESSION = 2,
                            INTERACTION = 3,
                            ENGAGED_VIEW = 4
                        }
                    }

                    /** Properties of a ConversionLagBucketEnum. */
                    interface IConversionLagBucketEnum {
                    }

                    /** Represents a ConversionLagBucketEnum. */
                    class ConversionLagBucketEnum implements IConversionLagBucketEnum {

                        /**
                         * Constructs a new ConversionLagBucketEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionLagBucketEnum);

                        /**
                         * Creates a new ConversionLagBucketEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionLagBucketEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionLagBucketEnum): google.ads.googleads.v23.enums.ConversionLagBucketEnum;

                        /**
                         * Encodes the specified ConversionLagBucketEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionLagBucketEnum.verify|verify} messages.
                         * @param message ConversionLagBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionLagBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionLagBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionLagBucketEnum.verify|verify} messages.
                         * @param message ConversionLagBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionLagBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionLagBucketEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionLagBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionLagBucketEnum;

                        /**
                         * Decodes a ConversionLagBucketEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionLagBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionLagBucketEnum;

                        /**
                         * Verifies a ConversionLagBucketEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionLagBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionLagBucketEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionLagBucketEnum;

                        /**
                         * Creates a plain object from a ConversionLagBucketEnum message. Also converts values to other types if specified.
                         * @param message ConversionLagBucketEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionLagBucketEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionLagBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionLagBucketEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionLagBucketEnum {

                        /** ConversionLagBucket enum. */
                        enum ConversionLagBucket {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LESS_THAN_ONE_DAY = 2,
                            ONE_TO_TWO_DAYS = 3,
                            TWO_TO_THREE_DAYS = 4,
                            THREE_TO_FOUR_DAYS = 5,
                            FOUR_TO_FIVE_DAYS = 6,
                            FIVE_TO_SIX_DAYS = 7,
                            SIX_TO_SEVEN_DAYS = 8,
                            SEVEN_TO_EIGHT_DAYS = 9,
                            EIGHT_TO_NINE_DAYS = 10,
                            NINE_TO_TEN_DAYS = 11,
                            TEN_TO_ELEVEN_DAYS = 12,
                            ELEVEN_TO_TWELVE_DAYS = 13,
                            TWELVE_TO_THIRTEEN_DAYS = 14,
                            THIRTEEN_TO_FOURTEEN_DAYS = 15,
                            FOURTEEN_TO_TWENTY_ONE_DAYS = 16,
                            TWENTY_ONE_TO_THIRTY_DAYS = 17,
                            THIRTY_TO_FORTY_FIVE_DAYS = 18,
                            FORTY_FIVE_TO_SIXTY_DAYS = 19,
                            SIXTY_TO_NINETY_DAYS = 20
                        }
                    }

                    /** Properties of a ConversionOrAdjustmentLagBucketEnum. */
                    interface IConversionOrAdjustmentLagBucketEnum {
                    }

                    /** Represents a ConversionOrAdjustmentLagBucketEnum. */
                    class ConversionOrAdjustmentLagBucketEnum implements IConversionOrAdjustmentLagBucketEnum {

                        /**
                         * Constructs a new ConversionOrAdjustmentLagBucketEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionOrAdjustmentLagBucketEnum);

                        /**
                         * Creates a new ConversionOrAdjustmentLagBucketEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionOrAdjustmentLagBucketEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionOrAdjustmentLagBucketEnum): google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum;

                        /**
                         * Encodes the specified ConversionOrAdjustmentLagBucketEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum.verify|verify} messages.
                         * @param message ConversionOrAdjustmentLagBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionOrAdjustmentLagBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionOrAdjustmentLagBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum.verify|verify} messages.
                         * @param message ConversionOrAdjustmentLagBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionOrAdjustmentLagBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionOrAdjustmentLagBucketEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionOrAdjustmentLagBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum;

                        /**
                         * Decodes a ConversionOrAdjustmentLagBucketEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionOrAdjustmentLagBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum;

                        /**
                         * Verifies a ConversionOrAdjustmentLagBucketEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionOrAdjustmentLagBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionOrAdjustmentLagBucketEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum;

                        /**
                         * Creates a plain object from a ConversionOrAdjustmentLagBucketEnum message. Also converts values to other types if specified.
                         * @param message ConversionOrAdjustmentLagBucketEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionOrAdjustmentLagBucketEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionOrAdjustmentLagBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionOrAdjustmentLagBucketEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionOrAdjustmentLagBucketEnum {

                        /** ConversionOrAdjustmentLagBucket enum. */
                        enum ConversionOrAdjustmentLagBucket {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONVERSION_LESS_THAN_ONE_DAY = 2,
                            CONVERSION_ONE_TO_TWO_DAYS = 3,
                            CONVERSION_TWO_TO_THREE_DAYS = 4,
                            CONVERSION_THREE_TO_FOUR_DAYS = 5,
                            CONVERSION_FOUR_TO_FIVE_DAYS = 6,
                            CONVERSION_FIVE_TO_SIX_DAYS = 7,
                            CONVERSION_SIX_TO_SEVEN_DAYS = 8,
                            CONVERSION_SEVEN_TO_EIGHT_DAYS = 9,
                            CONVERSION_EIGHT_TO_NINE_DAYS = 10,
                            CONVERSION_NINE_TO_TEN_DAYS = 11,
                            CONVERSION_TEN_TO_ELEVEN_DAYS = 12,
                            CONVERSION_ELEVEN_TO_TWELVE_DAYS = 13,
                            CONVERSION_TWELVE_TO_THIRTEEN_DAYS = 14,
                            CONVERSION_THIRTEEN_TO_FOURTEEN_DAYS = 15,
                            CONVERSION_FOURTEEN_TO_TWENTY_ONE_DAYS = 16,
                            CONVERSION_TWENTY_ONE_TO_THIRTY_DAYS = 17,
                            CONVERSION_THIRTY_TO_FORTY_FIVE_DAYS = 18,
                            CONVERSION_FORTY_FIVE_TO_SIXTY_DAYS = 19,
                            CONVERSION_SIXTY_TO_NINETY_DAYS = 20,
                            ADJUSTMENT_LESS_THAN_ONE_DAY = 21,
                            ADJUSTMENT_ONE_TO_TWO_DAYS = 22,
                            ADJUSTMENT_TWO_TO_THREE_DAYS = 23,
                            ADJUSTMENT_THREE_TO_FOUR_DAYS = 24,
                            ADJUSTMENT_FOUR_TO_FIVE_DAYS = 25,
                            ADJUSTMENT_FIVE_TO_SIX_DAYS = 26,
                            ADJUSTMENT_SIX_TO_SEVEN_DAYS = 27,
                            ADJUSTMENT_SEVEN_TO_EIGHT_DAYS = 28,
                            ADJUSTMENT_EIGHT_TO_NINE_DAYS = 29,
                            ADJUSTMENT_NINE_TO_TEN_DAYS = 30,
                            ADJUSTMENT_TEN_TO_ELEVEN_DAYS = 31,
                            ADJUSTMENT_ELEVEN_TO_TWELVE_DAYS = 32,
                            ADJUSTMENT_TWELVE_TO_THIRTEEN_DAYS = 33,
                            ADJUSTMENT_THIRTEEN_TO_FOURTEEN_DAYS = 34,
                            ADJUSTMENT_FOURTEEN_TO_TWENTY_ONE_DAYS = 35,
                            ADJUSTMENT_TWENTY_ONE_TO_THIRTY_DAYS = 36,
                            ADJUSTMENT_THIRTY_TO_FORTY_FIVE_DAYS = 37,
                            ADJUSTMENT_FORTY_FIVE_TO_SIXTY_DAYS = 38,
                            ADJUSTMENT_SIXTY_TO_NINETY_DAYS = 39,
                            ADJUSTMENT_NINETY_TO_ONE_HUNDRED_AND_FORTY_FIVE_DAYS = 40,
                            CONVERSION_UNKNOWN = 41,
                            ADJUSTMENT_UNKNOWN = 42
                        }
                    }

                    /** Properties of a ConversionValueRulePrimaryDimensionEnum. */
                    interface IConversionValueRulePrimaryDimensionEnum {
                    }

                    /** Represents a ConversionValueRulePrimaryDimensionEnum. */
                    class ConversionValueRulePrimaryDimensionEnum implements IConversionValueRulePrimaryDimensionEnum {

                        /**
                         * Constructs a new ConversionValueRulePrimaryDimensionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionValueRulePrimaryDimensionEnum);

                        /**
                         * Creates a new ConversionValueRulePrimaryDimensionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRulePrimaryDimensionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionValueRulePrimaryDimensionEnum): google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum;

                        /**
                         * Encodes the specified ConversionValueRulePrimaryDimensionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum.verify|verify} messages.
                         * @param message ConversionValueRulePrimaryDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionValueRulePrimaryDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRulePrimaryDimensionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum.verify|verify} messages.
                         * @param message ConversionValueRulePrimaryDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionValueRulePrimaryDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRulePrimaryDimensionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRulePrimaryDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum;

                        /**
                         * Decodes a ConversionValueRulePrimaryDimensionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRulePrimaryDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum;

                        /**
                         * Verifies a ConversionValueRulePrimaryDimensionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRulePrimaryDimensionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRulePrimaryDimensionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum;

                        /**
                         * Creates a plain object from a ConversionValueRulePrimaryDimensionEnum message. Also converts values to other types if specified.
                         * @param message ConversionValueRulePrimaryDimensionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionValueRulePrimaryDimensionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRulePrimaryDimensionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRulePrimaryDimensionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionValueRulePrimaryDimensionEnum {

                        /** ConversionValueRulePrimaryDimension enum. */
                        enum ConversionValueRulePrimaryDimension {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_RULE_APPLIED = 2,
                            ORIGINAL = 3,
                            NEW_VS_RETURNING_USER = 4,
                            GEO_LOCATION = 5,
                            DEVICE = 6,
                            AUDIENCE = 7,
                            MULTIPLE = 8,
                            ITINERARY = 9
                        }
                    }

                    /** Properties of a ConvertingUserPriorEngagementTypeAndLtvBucketEnum. */
                    interface IConvertingUserPriorEngagementTypeAndLtvBucketEnum {
                    }

                    /** Represents a ConvertingUserPriorEngagementTypeAndLtvBucketEnum. */
                    class ConvertingUserPriorEngagementTypeAndLtvBucketEnum implements IConvertingUserPriorEngagementTypeAndLtvBucketEnum {

                        /**
                         * Constructs a new ConvertingUserPriorEngagementTypeAndLtvBucketEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConvertingUserPriorEngagementTypeAndLtvBucketEnum);

                        /**
                         * Creates a new ConvertingUserPriorEngagementTypeAndLtvBucketEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConvertingUserPriorEngagementTypeAndLtvBucketEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConvertingUserPriorEngagementTypeAndLtvBucketEnum): google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum;

                        /**
                         * Encodes the specified ConvertingUserPriorEngagementTypeAndLtvBucketEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum.verify|verify} messages.
                         * @param message ConvertingUserPriorEngagementTypeAndLtvBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConvertingUserPriorEngagementTypeAndLtvBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConvertingUserPriorEngagementTypeAndLtvBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum.verify|verify} messages.
                         * @param message ConvertingUserPriorEngagementTypeAndLtvBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConvertingUserPriorEngagementTypeAndLtvBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConvertingUserPriorEngagementTypeAndLtvBucketEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConvertingUserPriorEngagementTypeAndLtvBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum;

                        /**
                         * Decodes a ConvertingUserPriorEngagementTypeAndLtvBucketEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConvertingUserPriorEngagementTypeAndLtvBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum;

                        /**
                         * Verifies a ConvertingUserPriorEngagementTypeAndLtvBucketEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConvertingUserPriorEngagementTypeAndLtvBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConvertingUserPriorEngagementTypeAndLtvBucketEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum;

                        /**
                         * Creates a plain object from a ConvertingUserPriorEngagementTypeAndLtvBucketEnum message. Also converts values to other types if specified.
                         * @param message ConvertingUserPriorEngagementTypeAndLtvBucketEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConvertingUserPriorEngagementTypeAndLtvBucketEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConvertingUserPriorEngagementTypeAndLtvBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConvertingUserPriorEngagementTypeAndLtvBucketEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConvertingUserPriorEngagementTypeAndLtvBucketEnum {

                        /** ConvertingUserPriorEngagementTypeAndLtvBucket enum. */
                        enum ConvertingUserPriorEngagementTypeAndLtvBucket {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEW = 2,
                            RETURNING = 3,
                            NEW_AND_HIGH_LTV = 4
                        }
                    }

                    /** Properties of an ExternalConversionSourceEnum. */
                    interface IExternalConversionSourceEnum {
                    }

                    /** Represents an ExternalConversionSourceEnum. */
                    class ExternalConversionSourceEnum implements IExternalConversionSourceEnum {

                        /**
                         * Constructs a new ExternalConversionSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IExternalConversionSourceEnum);

                        /**
                         * Creates a new ExternalConversionSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExternalConversionSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IExternalConversionSourceEnum): google.ads.googleads.v23.enums.ExternalConversionSourceEnum;

                        /**
                         * Encodes the specified ExternalConversionSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ExternalConversionSourceEnum.verify|verify} messages.
                         * @param message ExternalConversionSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IExternalConversionSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExternalConversionSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ExternalConversionSourceEnum.verify|verify} messages.
                         * @param message ExternalConversionSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IExternalConversionSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExternalConversionSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExternalConversionSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ExternalConversionSourceEnum;

                        /**
                         * Decodes an ExternalConversionSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExternalConversionSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ExternalConversionSourceEnum;

                        /**
                         * Verifies an ExternalConversionSourceEnum message.
                         * @param message Plain 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 ExternalConversionSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExternalConversionSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ExternalConversionSourceEnum;

                        /**
                         * Creates a plain object from an ExternalConversionSourceEnum message. Also converts values to other types if specified.
                         * @param message ExternalConversionSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ExternalConversionSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExternalConversionSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExternalConversionSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExternalConversionSourceEnum {

                        /** ExternalConversionSource enum. */
                        enum ExternalConversionSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WEBPAGE = 2,
                            ANALYTICS = 3,
                            UPLOAD = 4,
                            AD_CALL_METRICS = 5,
                            WEBSITE_CALL_METRICS = 6,
                            STORE_VISITS = 7,
                            ANDROID_IN_APP = 8,
                            IOS_IN_APP = 9,
                            IOS_FIRST_OPEN = 10,
                            APP_UNSPECIFIED = 11,
                            ANDROID_FIRST_OPEN = 12,
                            UPLOAD_CALLS = 13,
                            FIREBASE = 14,
                            CLICK_TO_CALL = 15,
                            SALESFORCE = 16,
                            STORE_SALES_CRM = 17,
                            STORE_SALES_PAYMENT_NETWORK = 18,
                            GOOGLE_PLAY = 19,
                            THIRD_PARTY_APP_ANALYTICS = 20,
                            GOOGLE_ATTRIBUTION = 21,
                            STORE_SALES_DIRECT_UPLOAD = 23,
                            STORE_SALES = 24,
                            SEARCH_ADS_360 = 25,
                            GOOGLE_HOSTED = 27,
                            FLOODLIGHT = 29,
                            ANALYTICS_SEARCH_ADS_360 = 31,
                            FIREBASE_SEARCH_ADS_360 = 33,
                            DISPLAY_AND_VIDEO_360_FLOODLIGHT = 34
                        }
                    }

                    /** Properties of a HotelPriceBucketEnum. */
                    interface IHotelPriceBucketEnum {
                    }

                    /** Represents a HotelPriceBucketEnum. */
                    class HotelPriceBucketEnum implements IHotelPriceBucketEnum {

                        /**
                         * Constructs a new HotelPriceBucketEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IHotelPriceBucketEnum);

                        /**
                         * Creates a new HotelPriceBucketEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelPriceBucketEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IHotelPriceBucketEnum): google.ads.googleads.v23.enums.HotelPriceBucketEnum;

                        /**
                         * Encodes the specified HotelPriceBucketEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.HotelPriceBucketEnum.verify|verify} messages.
                         * @param message HotelPriceBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IHotelPriceBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelPriceBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.HotelPriceBucketEnum.verify|verify} messages.
                         * @param message HotelPriceBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IHotelPriceBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelPriceBucketEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelPriceBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.HotelPriceBucketEnum;

                        /**
                         * Decodes a HotelPriceBucketEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelPriceBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.HotelPriceBucketEnum;

                        /**
                         * Verifies a HotelPriceBucketEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelPriceBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelPriceBucketEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.HotelPriceBucketEnum;

                        /**
                         * Creates a plain object from a HotelPriceBucketEnum message. Also converts values to other types if specified.
                         * @param message HotelPriceBucketEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.HotelPriceBucketEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelPriceBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelPriceBucketEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace HotelPriceBucketEnum {

                        /** HotelPriceBucket enum. */
                        enum HotelPriceBucket {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LOWEST_UNIQUE = 2,
                            LOWEST_TIED = 3,
                            NOT_LOWEST = 4,
                            ONLY_PARTNER_SHOWN = 5
                        }
                    }

                    /** Properties of a HotelRateTypeEnum. */
                    interface IHotelRateTypeEnum {
                    }

                    /** Represents a HotelRateTypeEnum. */
                    class HotelRateTypeEnum implements IHotelRateTypeEnum {

                        /**
                         * Constructs a new HotelRateTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IHotelRateTypeEnum);

                        /**
                         * Creates a new HotelRateTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelRateTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IHotelRateTypeEnum): google.ads.googleads.v23.enums.HotelRateTypeEnum;

                        /**
                         * Encodes the specified HotelRateTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.HotelRateTypeEnum.verify|verify} messages.
                         * @param message HotelRateTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IHotelRateTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelRateTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.HotelRateTypeEnum.verify|verify} messages.
                         * @param message HotelRateTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IHotelRateTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelRateTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelRateTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.HotelRateTypeEnum;

                        /**
                         * Decodes a HotelRateTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelRateTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.HotelRateTypeEnum;

                        /**
                         * Verifies a HotelRateTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelRateTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelRateTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.HotelRateTypeEnum;

                        /**
                         * Creates a plain object from a HotelRateTypeEnum message. Also converts values to other types if specified.
                         * @param message HotelRateTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.HotelRateTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelRateTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelRateTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace HotelRateTypeEnum {

                        /** HotelRateType enum. */
                        enum HotelRateType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNAVAILABLE = 2,
                            PUBLIC_RATE = 3,
                            QUALIFIED_RATE = 4,
                            PRIVATE_RATE = 5
                        }
                    }

                    /** Properties of a LandingPageSourceEnum. */
                    interface ILandingPageSourceEnum {
                    }

                    /** Represents a LandingPageSourceEnum. */
                    class LandingPageSourceEnum implements ILandingPageSourceEnum {

                        /**
                         * Constructs a new LandingPageSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILandingPageSourceEnum);

                        /**
                         * Creates a new LandingPageSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LandingPageSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILandingPageSourceEnum): google.ads.googleads.v23.enums.LandingPageSourceEnum;

                        /**
                         * Encodes the specified LandingPageSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LandingPageSourceEnum.verify|verify} messages.
                         * @param message LandingPageSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILandingPageSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LandingPageSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LandingPageSourceEnum.verify|verify} messages.
                         * @param message LandingPageSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILandingPageSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LandingPageSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LandingPageSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LandingPageSourceEnum;

                        /**
                         * Decodes a LandingPageSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LandingPageSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LandingPageSourceEnum;

                        /**
                         * Verifies a LandingPageSourceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LandingPageSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LandingPageSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LandingPageSourceEnum;

                        /**
                         * Creates a plain object from a LandingPageSourceEnum message. Also converts values to other types if specified.
                         * @param message LandingPageSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LandingPageSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LandingPageSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LandingPageSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LandingPageSourceEnum {

                        /** LandingPageSource enum. */
                        enum LandingPageSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADVERTISER = 2,
                            AUTOMATIC = 3
                        }
                    }

                    /** Properties of a MatchTypeEnum. */
                    interface IMatchTypeEnum {
                    }

                    /** Represents a MatchTypeEnum. */
                    class MatchTypeEnum implements IMatchTypeEnum {

                        /**
                         * Constructs a new MatchTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IMatchTypeEnum);

                        /**
                         * Creates a new MatchTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MatchTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IMatchTypeEnum): google.ads.googleads.v23.enums.MatchTypeEnum;

                        /**
                         * Encodes the specified MatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.MatchTypeEnum.verify|verify} messages.
                         * @param message MatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.MatchTypeEnum.verify|verify} messages.
                         * @param message MatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MatchTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.MatchTypeEnum;

                        /**
                         * Decodes a MatchTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.MatchTypeEnum;

                        /**
                         * Verifies a MatchTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MatchTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.MatchTypeEnum;

                        /**
                         * Creates a plain object from a MatchTypeEnum message. Also converts values to other types if specified.
                         * @param message MatchTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.MatchTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MatchTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MatchTypeEnum {

                        /** MatchType enum. */
                        enum MatchType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BROAD = 2,
                            EXACT = 3,
                            PHRASE = 4,
                            AI_MAX = 5
                        }
                    }

                    /** Properties of a RecommendationTypeEnum. */
                    interface IRecommendationTypeEnum {
                    }

                    /** Represents a RecommendationTypeEnum. */
                    class RecommendationTypeEnum implements IRecommendationTypeEnum {

                        /**
                         * Constructs a new RecommendationTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IRecommendationTypeEnum);

                        /**
                         * Creates a new RecommendationTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecommendationTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IRecommendationTypeEnum): google.ads.googleads.v23.enums.RecommendationTypeEnum;

                        /**
                         * Encodes the specified RecommendationTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.RecommendationTypeEnum.verify|verify} messages.
                         * @param message RecommendationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IRecommendationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.RecommendationTypeEnum.verify|verify} messages.
                         * @param message RecommendationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IRecommendationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecommendationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.RecommendationTypeEnum;

                        /**
                         * Decodes a RecommendationTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecommendationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.RecommendationTypeEnum;

                        /**
                         * Verifies a RecommendationTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecommendationTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.RecommendationTypeEnum;

                        /**
                         * Creates a plain object from a RecommendationTypeEnum message. Also converts values to other types if specified.
                         * @param message RecommendationTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.RecommendationTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecommendationTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RecommendationTypeEnum {

                        /** RecommendationType enum. */
                        enum RecommendationType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_BUDGET = 2,
                            KEYWORD = 3,
                            TEXT_AD = 4,
                            TARGET_CPA_OPT_IN = 5,
                            MAXIMIZE_CONVERSIONS_OPT_IN = 6,
                            ENHANCED_CPC_OPT_IN = 7,
                            SEARCH_PARTNERS_OPT_IN = 8,
                            MAXIMIZE_CLICKS_OPT_IN = 9,
                            OPTIMIZE_AD_ROTATION = 10,
                            KEYWORD_MATCH_TYPE = 14,
                            MOVE_UNUSED_BUDGET = 15,
                            FORECASTING_CAMPAIGN_BUDGET = 16,
                            TARGET_ROAS_OPT_IN = 17,
                            RESPONSIVE_SEARCH_AD = 18,
                            MARGINAL_ROI_CAMPAIGN_BUDGET = 19,
                            USE_BROAD_MATCH_KEYWORD = 20,
                            RESPONSIVE_SEARCH_AD_ASSET = 21,
                            UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX = 22,
                            RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH = 23,
                            DISPLAY_EXPANSION_OPT_IN = 24,
                            UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX = 25,
                            RAISE_TARGET_CPA_BID_TOO_LOW = 26,
                            FORECASTING_SET_TARGET_ROAS = 27,
                            CALLOUT_ASSET = 28,
                            SITELINK_ASSET = 29,
                            CALL_ASSET = 30,
                            SHOPPING_ADD_AGE_GROUP = 31,
                            SHOPPING_ADD_COLOR = 32,
                            SHOPPING_ADD_GENDER = 33,
                            SHOPPING_ADD_GTIN = 34,
                            SHOPPING_ADD_MORE_IDENTIFIERS = 35,
                            SHOPPING_ADD_SIZE = 36,
                            SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN = 37,
                            SHOPPING_FIX_DISAPPROVED_PRODUCTS = 38,
                            SHOPPING_TARGET_ALL_OFFERS = 39,
                            SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT = 40,
                            SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING = 41,
                            SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX = 42,
                            DYNAMIC_IMAGE_EXTENSION_OPT_IN = 43,
                            RAISE_TARGET_CPA = 44,
                            LOWER_TARGET_ROAS = 45,
                            PERFORMANCE_MAX_OPT_IN = 46,
                            IMPROVE_PERFORMANCE_MAX_AD_STRENGTH = 47,
                            MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX = 48,
                            FORECASTING_SET_TARGET_CPA = 49,
                            SET_TARGET_CPA = 50,
                            SET_TARGET_ROAS = 51,
                            MAXIMIZE_CONVERSION_VALUE_OPT_IN = 52,
                            IMPROVE_GOOGLE_TAG_COVERAGE = 53,
                            PERFORMANCE_MAX_FINAL_URL_OPT_IN = 54,
                            REFRESH_CUSTOMER_MATCH_LIST = 55,
                            CUSTOM_AUDIENCE_OPT_IN = 56,
                            LEAD_FORM_ASSET = 57,
                            IMPROVE_DEMAND_GEN_AD_STRENGTH = 58
                        }
                    }

                    /** Properties of a SearchEngineResultsPageTypeEnum. */
                    interface ISearchEngineResultsPageTypeEnum {
                    }

                    /** Represents a SearchEngineResultsPageTypeEnum. */
                    class SearchEngineResultsPageTypeEnum implements ISearchEngineResultsPageTypeEnum {

                        /**
                         * Constructs a new SearchEngineResultsPageTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISearchEngineResultsPageTypeEnum);

                        /**
                         * Creates a new SearchEngineResultsPageTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchEngineResultsPageTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISearchEngineResultsPageTypeEnum): google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum;

                        /**
                         * Encodes the specified SearchEngineResultsPageTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum.verify|verify} messages.
                         * @param message SearchEngineResultsPageTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISearchEngineResultsPageTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchEngineResultsPageTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum.verify|verify} messages.
                         * @param message SearchEngineResultsPageTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISearchEngineResultsPageTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchEngineResultsPageTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchEngineResultsPageTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum;

                        /**
                         * Decodes a SearchEngineResultsPageTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchEngineResultsPageTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum;

                        /**
                         * Verifies a SearchEngineResultsPageTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchEngineResultsPageTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchEngineResultsPageTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum;

                        /**
                         * Creates a plain object from a SearchEngineResultsPageTypeEnum message. Also converts values to other types if specified.
                         * @param message SearchEngineResultsPageTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SearchEngineResultsPageTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchEngineResultsPageTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchEngineResultsPageTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SearchEngineResultsPageTypeEnum {

                        /** SearchEngineResultsPageType enum. */
                        enum SearchEngineResultsPageType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADS_ONLY = 2,
                            ORGANIC_ONLY = 3,
                            ADS_AND_ORGANIC = 4
                        }
                    }

                    /** Properties of a SearchTermMatchSourceEnum. */
                    interface ISearchTermMatchSourceEnum {
                    }

                    /** Represents a SearchTermMatchSourceEnum. */
                    class SearchTermMatchSourceEnum implements ISearchTermMatchSourceEnum {

                        /**
                         * Constructs a new SearchTermMatchSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISearchTermMatchSourceEnum);

                        /**
                         * Creates a new SearchTermMatchSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchTermMatchSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISearchTermMatchSourceEnum): google.ads.googleads.v23.enums.SearchTermMatchSourceEnum;

                        /**
                         * Encodes the specified SearchTermMatchSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SearchTermMatchSourceEnum.verify|verify} messages.
                         * @param message SearchTermMatchSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISearchTermMatchSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermMatchSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SearchTermMatchSourceEnum.verify|verify} messages.
                         * @param message SearchTermMatchSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISearchTermMatchSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermMatchSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchTermMatchSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SearchTermMatchSourceEnum;

                        /**
                         * Decodes a SearchTermMatchSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchTermMatchSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SearchTermMatchSourceEnum;

                        /**
                         * Verifies a SearchTermMatchSourceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermMatchSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchTermMatchSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SearchTermMatchSourceEnum;

                        /**
                         * Creates a plain object from a SearchTermMatchSourceEnum message. Also converts values to other types if specified.
                         * @param message SearchTermMatchSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SearchTermMatchSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermMatchSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchTermMatchSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SearchTermMatchSourceEnum {

                        /** SearchTermMatchSource enum. */
                        enum SearchTermMatchSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADVERTISER_PROVIDED_KEYWORD = 2,
                            AI_MAX_KEYWORDLESS = 3,
                            AI_MAX_BROAD_MATCH = 4,
                            DYNAMIC_SEARCH_ADS = 5,
                            PERFORMANCE_MAX = 6
                        }
                    }

                    /** Properties of a SearchTermMatchTypeEnum. */
                    interface ISearchTermMatchTypeEnum {
                    }

                    /** Represents a SearchTermMatchTypeEnum. */
                    class SearchTermMatchTypeEnum implements ISearchTermMatchTypeEnum {

                        /**
                         * Constructs a new SearchTermMatchTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISearchTermMatchTypeEnum);

                        /**
                         * Creates a new SearchTermMatchTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchTermMatchTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISearchTermMatchTypeEnum): google.ads.googleads.v23.enums.SearchTermMatchTypeEnum;

                        /**
                         * Encodes the specified SearchTermMatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SearchTermMatchTypeEnum.verify|verify} messages.
                         * @param message SearchTermMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISearchTermMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermMatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SearchTermMatchTypeEnum.verify|verify} messages.
                         * @param message SearchTermMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISearchTermMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermMatchTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchTermMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SearchTermMatchTypeEnum;

                        /**
                         * Decodes a SearchTermMatchTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchTermMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SearchTermMatchTypeEnum;

                        /**
                         * Verifies a SearchTermMatchTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermMatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchTermMatchTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SearchTermMatchTypeEnum;

                        /**
                         * Creates a plain object from a SearchTermMatchTypeEnum message. Also converts values to other types if specified.
                         * @param message SearchTermMatchTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SearchTermMatchTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermMatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchTermMatchTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SearchTermMatchTypeEnum {

                        /** SearchTermMatchType enum. */
                        enum SearchTermMatchType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BROAD = 2,
                            EXACT = 3,
                            PHRASE = 4,
                            NEAR_EXACT = 5,
                            NEAR_PHRASE = 6,
                            AI_MAX = 7,
                            PERFORMANCE_MAX = 8
                        }
                    }

                    /** Properties of a SearchTermTargetingStatusEnum. */
                    interface ISearchTermTargetingStatusEnum {
                    }

                    /** Represents a SearchTermTargetingStatusEnum. */
                    class SearchTermTargetingStatusEnum implements ISearchTermTargetingStatusEnum {

                        /**
                         * Constructs a new SearchTermTargetingStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISearchTermTargetingStatusEnum);

                        /**
                         * Creates a new SearchTermTargetingStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchTermTargetingStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISearchTermTargetingStatusEnum): google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum;

                        /**
                         * Encodes the specified SearchTermTargetingStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.verify|verify} messages.
                         * @param message SearchTermTargetingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISearchTermTargetingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermTargetingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.verify|verify} messages.
                         * @param message SearchTermTargetingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISearchTermTargetingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermTargetingStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchTermTargetingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum;

                        /**
                         * Decodes a SearchTermTargetingStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchTermTargetingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum;

                        /**
                         * Verifies a SearchTermTargetingStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermTargetingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchTermTargetingStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum;

                        /**
                         * Creates a plain object from a SearchTermTargetingStatusEnum message. Also converts values to other types if specified.
                         * @param message SearchTermTargetingStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermTargetingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchTermTargetingStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SearchTermTargetingStatusEnum {

                        /** SearchTermTargetingStatus enum. */
                        enum SearchTermTargetingStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADDED = 2,
                            EXCLUDED = 3,
                            ADDED_EXCLUDED = 4,
                            NONE = 5
                        }
                    }

                    /** Properties of a SkAdNetworkAdEventTypeEnum. */
                    interface ISkAdNetworkAdEventTypeEnum {
                    }

                    /** Represents a SkAdNetworkAdEventTypeEnum. */
                    class SkAdNetworkAdEventTypeEnum implements ISkAdNetworkAdEventTypeEnum {

                        /**
                         * Constructs a new SkAdNetworkAdEventTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISkAdNetworkAdEventTypeEnum);

                        /**
                         * Creates a new SkAdNetworkAdEventTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SkAdNetworkAdEventTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISkAdNetworkAdEventTypeEnum): google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum;

                        /**
                         * Encodes the specified SkAdNetworkAdEventTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum.verify|verify} messages.
                         * @param message SkAdNetworkAdEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISkAdNetworkAdEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SkAdNetworkAdEventTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum.verify|verify} messages.
                         * @param message SkAdNetworkAdEventTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISkAdNetworkAdEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SkAdNetworkAdEventTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SkAdNetworkAdEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum;

                        /**
                         * Decodes a SkAdNetworkAdEventTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SkAdNetworkAdEventTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum;

                        /**
                         * Verifies a SkAdNetworkAdEventTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SkAdNetworkAdEventTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SkAdNetworkAdEventTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum;

                        /**
                         * Creates a plain object from a SkAdNetworkAdEventTypeEnum message. Also converts values to other types if specified.
                         * @param message SkAdNetworkAdEventTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SkAdNetworkAdEventTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SkAdNetworkAdEventTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SkAdNetworkAdEventTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SkAdNetworkAdEventTypeEnum {

                        /** SkAdNetworkAdEventType enum. */
                        enum SkAdNetworkAdEventType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNAVAILABLE = 2,
                            INTERACTION = 3,
                            VIEW = 4
                        }
                    }

                    /** Properties of a SkAdNetworkAttributionCreditEnum. */
                    interface ISkAdNetworkAttributionCreditEnum {
                    }

                    /** Represents a SkAdNetworkAttributionCreditEnum. */
                    class SkAdNetworkAttributionCreditEnum implements ISkAdNetworkAttributionCreditEnum {

                        /**
                         * Constructs a new SkAdNetworkAttributionCreditEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISkAdNetworkAttributionCreditEnum);

                        /**
                         * Creates a new SkAdNetworkAttributionCreditEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SkAdNetworkAttributionCreditEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISkAdNetworkAttributionCreditEnum): google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum;

                        /**
                         * Encodes the specified SkAdNetworkAttributionCreditEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum.verify|verify} messages.
                         * @param message SkAdNetworkAttributionCreditEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISkAdNetworkAttributionCreditEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SkAdNetworkAttributionCreditEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum.verify|verify} messages.
                         * @param message SkAdNetworkAttributionCreditEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISkAdNetworkAttributionCreditEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SkAdNetworkAttributionCreditEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SkAdNetworkAttributionCreditEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum;

                        /**
                         * Decodes a SkAdNetworkAttributionCreditEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SkAdNetworkAttributionCreditEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum;

                        /**
                         * Verifies a SkAdNetworkAttributionCreditEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SkAdNetworkAttributionCreditEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SkAdNetworkAttributionCreditEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum;

                        /**
                         * Creates a plain object from a SkAdNetworkAttributionCreditEnum message. Also converts values to other types if specified.
                         * @param message SkAdNetworkAttributionCreditEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SkAdNetworkAttributionCreditEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SkAdNetworkAttributionCreditEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SkAdNetworkAttributionCreditEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SkAdNetworkAttributionCreditEnum {

                        /** SkAdNetworkAttributionCredit enum. */
                        enum SkAdNetworkAttributionCredit {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNAVAILABLE = 2,
                            WON = 3,
                            CONTRIBUTED = 4
                        }
                    }

                    /** Properties of a SkAdNetworkCoarseConversionValueEnum. */
                    interface ISkAdNetworkCoarseConversionValueEnum {
                    }

                    /** Represents a SkAdNetworkCoarseConversionValueEnum. */
                    class SkAdNetworkCoarseConversionValueEnum implements ISkAdNetworkCoarseConversionValueEnum {

                        /**
                         * Constructs a new SkAdNetworkCoarseConversionValueEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISkAdNetworkCoarseConversionValueEnum);

                        /**
                         * Creates a new SkAdNetworkCoarseConversionValueEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SkAdNetworkCoarseConversionValueEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISkAdNetworkCoarseConversionValueEnum): google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum;

                        /**
                         * Encodes the specified SkAdNetworkCoarseConversionValueEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.verify|verify} messages.
                         * @param message SkAdNetworkCoarseConversionValueEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISkAdNetworkCoarseConversionValueEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SkAdNetworkCoarseConversionValueEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.verify|verify} messages.
                         * @param message SkAdNetworkCoarseConversionValueEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISkAdNetworkCoarseConversionValueEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SkAdNetworkCoarseConversionValueEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SkAdNetworkCoarseConversionValueEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum;

                        /**
                         * Decodes a SkAdNetworkCoarseConversionValueEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SkAdNetworkCoarseConversionValueEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum;

                        /**
                         * Verifies a SkAdNetworkCoarseConversionValueEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SkAdNetworkCoarseConversionValueEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SkAdNetworkCoarseConversionValueEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum;

                        /**
                         * Creates a plain object from a SkAdNetworkCoarseConversionValueEnum message. Also converts values to other types if specified.
                         * @param message SkAdNetworkCoarseConversionValueEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SkAdNetworkCoarseConversionValueEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SkAdNetworkCoarseConversionValueEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SkAdNetworkCoarseConversionValueEnum {

                        /** SkAdNetworkCoarseConversionValue enum. */
                        enum SkAdNetworkCoarseConversionValue {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNAVAILABLE = 2,
                            LOW = 3,
                            MEDIUM = 4,
                            HIGH = 5,
                            NONE = 6
                        }
                    }

                    /** Properties of a SkAdNetworkSourceTypeEnum. */
                    interface ISkAdNetworkSourceTypeEnum {
                    }

                    /** Represents a SkAdNetworkSourceTypeEnum. */
                    class SkAdNetworkSourceTypeEnum implements ISkAdNetworkSourceTypeEnum {

                        /**
                         * Constructs a new SkAdNetworkSourceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISkAdNetworkSourceTypeEnum);

                        /**
                         * Creates a new SkAdNetworkSourceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SkAdNetworkSourceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISkAdNetworkSourceTypeEnum): google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum;

                        /**
                         * Encodes the specified SkAdNetworkSourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum.verify|verify} messages.
                         * @param message SkAdNetworkSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISkAdNetworkSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SkAdNetworkSourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum.verify|verify} messages.
                         * @param message SkAdNetworkSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISkAdNetworkSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SkAdNetworkSourceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SkAdNetworkSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum;

                        /**
                         * Decodes a SkAdNetworkSourceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SkAdNetworkSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum;

                        /**
                         * Verifies a SkAdNetworkSourceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SkAdNetworkSourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SkAdNetworkSourceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum;

                        /**
                         * Creates a plain object from a SkAdNetworkSourceTypeEnum message. Also converts values to other types if specified.
                         * @param message SkAdNetworkSourceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SkAdNetworkSourceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SkAdNetworkSourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SkAdNetworkSourceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SkAdNetworkSourceTypeEnum {

                        /** SkAdNetworkSourceType enum. */
                        enum SkAdNetworkSourceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNAVAILABLE = 2,
                            WEBSITE = 3,
                            MOBILE_APPLICATION = 4
                        }
                    }

                    /** Properties of a SkAdNetworkUserTypeEnum. */
                    interface ISkAdNetworkUserTypeEnum {
                    }

                    /** Represents a SkAdNetworkUserTypeEnum. */
                    class SkAdNetworkUserTypeEnum implements ISkAdNetworkUserTypeEnum {

                        /**
                         * Constructs a new SkAdNetworkUserTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISkAdNetworkUserTypeEnum);

                        /**
                         * Creates a new SkAdNetworkUserTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SkAdNetworkUserTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISkAdNetworkUserTypeEnum): google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum;

                        /**
                         * Encodes the specified SkAdNetworkUserTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum.verify|verify} messages.
                         * @param message SkAdNetworkUserTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISkAdNetworkUserTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SkAdNetworkUserTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum.verify|verify} messages.
                         * @param message SkAdNetworkUserTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISkAdNetworkUserTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SkAdNetworkUserTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SkAdNetworkUserTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum;

                        /**
                         * Decodes a SkAdNetworkUserTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SkAdNetworkUserTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum;

                        /**
                         * Verifies a SkAdNetworkUserTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SkAdNetworkUserTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SkAdNetworkUserTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum;

                        /**
                         * Creates a plain object from a SkAdNetworkUserTypeEnum message. Also converts values to other types if specified.
                         * @param message SkAdNetworkUserTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SkAdNetworkUserTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SkAdNetworkUserTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SkAdNetworkUserTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SkAdNetworkUserTypeEnum {

                        /** SkAdNetworkUserType enum. */
                        enum SkAdNetworkUserType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNAVAILABLE = 2,
                            NEW_INSTALLER = 3,
                            REINSTALLER = 4
                        }
                    }

                    /** Properties of a SlotEnum. */
                    interface ISlotEnum {
                    }

                    /** Represents a SlotEnum. */
                    class SlotEnum implements ISlotEnum {

                        /**
                         * Constructs a new SlotEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISlotEnum);

                        /**
                         * Creates a new SlotEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SlotEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISlotEnum): google.ads.googleads.v23.enums.SlotEnum;

                        /**
                         * Encodes the specified SlotEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SlotEnum.verify|verify} messages.
                         * @param message SlotEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISlotEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SlotEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SlotEnum.verify|verify} messages.
                         * @param message SlotEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISlotEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SlotEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SlotEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SlotEnum;

                        /**
                         * Decodes a SlotEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SlotEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SlotEnum;

                        /**
                         * Verifies a SlotEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SlotEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SlotEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SlotEnum;

                        /**
                         * Creates a plain object from a SlotEnum message. Also converts values to other types if specified.
                         * @param message SlotEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SlotEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SlotEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SlotEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SlotEnum {

                        /** Slot enum. */
                        enum Slot {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEARCH_SIDE = 2,
                            SEARCH_TOP = 3,
                            SEARCH_OTHER = 4,
                            CONTENT = 5,
                            SEARCH_PARTNER_TOP = 6,
                            SEARCH_PARTNER_OTHER = 7,
                            MIXED = 8
                        }
                    }

                    /** Properties of a VerticalAdsItemVerticalTypeEnum. */
                    interface IVerticalAdsItemVerticalTypeEnum {
                    }

                    /** Represents a VerticalAdsItemVerticalTypeEnum. */
                    class VerticalAdsItemVerticalTypeEnum implements IVerticalAdsItemVerticalTypeEnum {

                        /**
                         * Constructs a new VerticalAdsItemVerticalTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IVerticalAdsItemVerticalTypeEnum);

                        /**
                         * Creates a new VerticalAdsItemVerticalTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VerticalAdsItemVerticalTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IVerticalAdsItemVerticalTypeEnum): google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum;

                        /**
                         * Encodes the specified VerticalAdsItemVerticalTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.verify|verify} messages.
                         * @param message VerticalAdsItemVerticalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IVerticalAdsItemVerticalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VerticalAdsItemVerticalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.verify|verify} messages.
                         * @param message VerticalAdsItemVerticalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IVerticalAdsItemVerticalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VerticalAdsItemVerticalTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VerticalAdsItemVerticalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum;

                        /**
                         * Decodes a VerticalAdsItemVerticalTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VerticalAdsItemVerticalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum;

                        /**
                         * Verifies a VerticalAdsItemVerticalTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VerticalAdsItemVerticalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VerticalAdsItemVerticalTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum;

                        /**
                         * Creates a plain object from a VerticalAdsItemVerticalTypeEnum message. Also converts values to other types if specified.
                         * @param message VerticalAdsItemVerticalTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VerticalAdsItemVerticalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VerticalAdsItemVerticalTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VerticalAdsItemVerticalTypeEnum {

                        /** VerticalAdsItemVerticalType enum. */
                        enum VerticalAdsItemVerticalType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HOTELS = 2,
                            VACATION_RENTALS = 3,
                            RENTAL_CARS = 4,
                            EVENTS = 5,
                            THINGS_TO_DO = 6,
                            FLIGHTS = 7
                        }
                    }

                    /** Properties of a TrackingCodePageFormatEnum. */
                    interface ITrackingCodePageFormatEnum {
                    }

                    /** Represents a TrackingCodePageFormatEnum. */
                    class TrackingCodePageFormatEnum implements ITrackingCodePageFormatEnum {

                        /**
                         * Constructs a new TrackingCodePageFormatEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ITrackingCodePageFormatEnum);

                        /**
                         * Creates a new TrackingCodePageFormatEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TrackingCodePageFormatEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ITrackingCodePageFormatEnum): google.ads.googleads.v23.enums.TrackingCodePageFormatEnum;

                        /**
                         * Encodes the specified TrackingCodePageFormatEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.TrackingCodePageFormatEnum.verify|verify} messages.
                         * @param message TrackingCodePageFormatEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ITrackingCodePageFormatEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TrackingCodePageFormatEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.TrackingCodePageFormatEnum.verify|verify} messages.
                         * @param message TrackingCodePageFormatEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ITrackingCodePageFormatEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TrackingCodePageFormatEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TrackingCodePageFormatEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.TrackingCodePageFormatEnum;

                        /**
                         * Decodes a TrackingCodePageFormatEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TrackingCodePageFormatEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.TrackingCodePageFormatEnum;

                        /**
                         * Verifies a TrackingCodePageFormatEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TrackingCodePageFormatEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TrackingCodePageFormatEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.TrackingCodePageFormatEnum;

                        /**
                         * Creates a plain object from a TrackingCodePageFormatEnum message. Also converts values to other types if specified.
                         * @param message TrackingCodePageFormatEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.TrackingCodePageFormatEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TrackingCodePageFormatEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TrackingCodePageFormatEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TrackingCodePageFormatEnum {

                        /** TrackingCodePageFormat enum. */
                        enum TrackingCodePageFormat {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HTML = 2,
                            AMP = 3
                        }
                    }

                    /** Properties of a TrackingCodeTypeEnum. */
                    interface ITrackingCodeTypeEnum {
                    }

                    /** Represents a TrackingCodeTypeEnum. */
                    class TrackingCodeTypeEnum implements ITrackingCodeTypeEnum {

                        /**
                         * Constructs a new TrackingCodeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ITrackingCodeTypeEnum);

                        /**
                         * Creates a new TrackingCodeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TrackingCodeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ITrackingCodeTypeEnum): google.ads.googleads.v23.enums.TrackingCodeTypeEnum;

                        /**
                         * Encodes the specified TrackingCodeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.TrackingCodeTypeEnum.verify|verify} messages.
                         * @param message TrackingCodeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ITrackingCodeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TrackingCodeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.TrackingCodeTypeEnum.verify|verify} messages.
                         * @param message TrackingCodeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ITrackingCodeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TrackingCodeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TrackingCodeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.TrackingCodeTypeEnum;

                        /**
                         * Decodes a TrackingCodeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TrackingCodeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.TrackingCodeTypeEnum;

                        /**
                         * Verifies a TrackingCodeTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TrackingCodeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TrackingCodeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.TrackingCodeTypeEnum;

                        /**
                         * Creates a plain object from a TrackingCodeTypeEnum message. Also converts values to other types if specified.
                         * @param message TrackingCodeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.TrackingCodeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TrackingCodeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TrackingCodeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TrackingCodeTypeEnum {

                        /** TrackingCodeType enum. */
                        enum TrackingCodeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WEBPAGE = 2,
                            WEBPAGE_ONCLICK = 3,
                            CLICK_TO_CALL = 4,
                            WEBSITE_CALL = 5
                        }
                    }

                    /** Properties of a TargetingDimensionEnum. */
                    interface ITargetingDimensionEnum {
                    }

                    /** Represents a TargetingDimensionEnum. */
                    class TargetingDimensionEnum implements ITargetingDimensionEnum {

                        /**
                         * Constructs a new TargetingDimensionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ITargetingDimensionEnum);

                        /**
                         * Creates a new TargetingDimensionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetingDimensionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ITargetingDimensionEnum): google.ads.googleads.v23.enums.TargetingDimensionEnum;

                        /**
                         * Encodes the specified TargetingDimensionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.TargetingDimensionEnum.verify|verify} messages.
                         * @param message TargetingDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ITargetingDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetingDimensionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.TargetingDimensionEnum.verify|verify} messages.
                         * @param message TargetingDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ITargetingDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetingDimensionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetingDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.TargetingDimensionEnum;

                        /**
                         * Decodes a TargetingDimensionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetingDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.TargetingDimensionEnum;

                        /**
                         * Verifies a TargetingDimensionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetingDimensionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetingDimensionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.TargetingDimensionEnum;

                        /**
                         * Creates a plain object from a TargetingDimensionEnum message. Also converts values to other types if specified.
                         * @param message TargetingDimensionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.TargetingDimensionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetingDimensionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetingDimensionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TargetingDimensionEnum {

                        /** TargetingDimension enum. */
                        enum TargetingDimension {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            KEYWORD = 2,
                            AUDIENCE = 3,
                            TOPIC = 4,
                            GENDER = 5,
                            AGE_RANGE = 6,
                            PLACEMENT = 7,
                            PARENTAL_STATUS = 8,
                            INCOME_RANGE = 9
                        }
                    }

                    /** Properties of a ThirdPartyBrandLiftIntegrationPartnerEnum. */
                    interface IThirdPartyBrandLiftIntegrationPartnerEnum {
                    }

                    /** Represents a ThirdPartyBrandLiftIntegrationPartnerEnum. */
                    class ThirdPartyBrandLiftIntegrationPartnerEnum implements IThirdPartyBrandLiftIntegrationPartnerEnum {

                        /**
                         * Constructs a new ThirdPartyBrandLiftIntegrationPartnerEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IThirdPartyBrandLiftIntegrationPartnerEnum);

                        /**
                         * Creates a new ThirdPartyBrandLiftIntegrationPartnerEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyBrandLiftIntegrationPartnerEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IThirdPartyBrandLiftIntegrationPartnerEnum): google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum;

                        /**
                         * Encodes the specified ThirdPartyBrandLiftIntegrationPartnerEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyBrandLiftIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IThirdPartyBrandLiftIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyBrandLiftIntegrationPartnerEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyBrandLiftIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IThirdPartyBrandLiftIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyBrandLiftIntegrationPartnerEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyBrandLiftIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum;

                        /**
                         * Decodes a ThirdPartyBrandLiftIntegrationPartnerEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyBrandLiftIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum;

                        /**
                         * Verifies a ThirdPartyBrandLiftIntegrationPartnerEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyBrandLiftIntegrationPartnerEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyBrandLiftIntegrationPartnerEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum;

                        /**
                         * Creates a plain object from a ThirdPartyBrandLiftIntegrationPartnerEnum message. Also converts values to other types if specified.
                         * @param message ThirdPartyBrandLiftIntegrationPartnerEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ThirdPartyBrandLiftIntegrationPartnerEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyBrandLiftIntegrationPartnerEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyBrandLiftIntegrationPartnerEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ThirdPartyBrandLiftIntegrationPartnerEnum {

                        /** ThirdPartyBrandLiftIntegrationPartner enum. */
                        enum ThirdPartyBrandLiftIntegrationPartner {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            KANTAR_MILLWARD_BROWN = 2,
                            DYNATA = 3,
                            INTAGE = 4,
                            MACROMILL = 5
                        }
                    }

                    /** Properties of a ThirdPartyBrandSafetyIntegrationPartnerEnum. */
                    interface IThirdPartyBrandSafetyIntegrationPartnerEnum {
                    }

                    /** Represents a ThirdPartyBrandSafetyIntegrationPartnerEnum. */
                    class ThirdPartyBrandSafetyIntegrationPartnerEnum implements IThirdPartyBrandSafetyIntegrationPartnerEnum {

                        /**
                         * Constructs a new ThirdPartyBrandSafetyIntegrationPartnerEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IThirdPartyBrandSafetyIntegrationPartnerEnum);

                        /**
                         * Creates a new ThirdPartyBrandSafetyIntegrationPartnerEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyBrandSafetyIntegrationPartnerEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IThirdPartyBrandSafetyIntegrationPartnerEnum): google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum;

                        /**
                         * Encodes the specified ThirdPartyBrandSafetyIntegrationPartnerEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyBrandSafetyIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IThirdPartyBrandSafetyIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyBrandSafetyIntegrationPartnerEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyBrandSafetyIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IThirdPartyBrandSafetyIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyBrandSafetyIntegrationPartnerEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyBrandSafetyIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum;

                        /**
                         * Decodes a ThirdPartyBrandSafetyIntegrationPartnerEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyBrandSafetyIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum;

                        /**
                         * Verifies a ThirdPartyBrandSafetyIntegrationPartnerEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyBrandSafetyIntegrationPartnerEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyBrandSafetyIntegrationPartnerEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum;

                        /**
                         * Creates a plain object from a ThirdPartyBrandSafetyIntegrationPartnerEnum message. Also converts values to other types if specified.
                         * @param message ThirdPartyBrandSafetyIntegrationPartnerEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ThirdPartyBrandSafetyIntegrationPartnerEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyBrandSafetyIntegrationPartnerEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyBrandSafetyIntegrationPartnerEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ThirdPartyBrandSafetyIntegrationPartnerEnum {

                        /** ThirdPartyBrandSafetyIntegrationPartner enum. */
                        enum ThirdPartyBrandSafetyIntegrationPartner {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DOUBLE_VERIFY = 2,
                            INTEGRAL_AD_SCIENCE = 3,
                            ZEFR = 4
                        }
                    }

                    /** Properties of a ThirdPartyReachIntegrationPartnerEnum. */
                    interface IThirdPartyReachIntegrationPartnerEnum {
                    }

                    /** Represents a ThirdPartyReachIntegrationPartnerEnum. */
                    class ThirdPartyReachIntegrationPartnerEnum implements IThirdPartyReachIntegrationPartnerEnum {

                        /**
                         * Constructs a new ThirdPartyReachIntegrationPartnerEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IThirdPartyReachIntegrationPartnerEnum);

                        /**
                         * Creates a new ThirdPartyReachIntegrationPartnerEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyReachIntegrationPartnerEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IThirdPartyReachIntegrationPartnerEnum): google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum;

                        /**
                         * Encodes the specified ThirdPartyReachIntegrationPartnerEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyReachIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IThirdPartyReachIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyReachIntegrationPartnerEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyReachIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IThirdPartyReachIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyReachIntegrationPartnerEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyReachIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum;

                        /**
                         * Decodes a ThirdPartyReachIntegrationPartnerEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyReachIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum;

                        /**
                         * Verifies a ThirdPartyReachIntegrationPartnerEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyReachIntegrationPartnerEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyReachIntegrationPartnerEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum;

                        /**
                         * Creates a plain object from a ThirdPartyReachIntegrationPartnerEnum message. Also converts values to other types if specified.
                         * @param message ThirdPartyReachIntegrationPartnerEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ThirdPartyReachIntegrationPartnerEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyReachIntegrationPartnerEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyReachIntegrationPartnerEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ThirdPartyReachIntegrationPartnerEnum {

                        /** ThirdPartyReachIntegrationPartner enum. */
                        enum ThirdPartyReachIntegrationPartner {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NIELSEN = 2,
                            COMSCORE = 3,
                            KANTAR_MILLWARD_BROWN = 4,
                            VIDEO_RESEARCH = 5,
                            GEMIUS = 6,
                            MEDIA_SCOPE = 7,
                            AUDIENCE_PROJECT = 8,
                            VIDEO_AMP = 9,
                            ISPOT_TV = 10
                        }
                    }

                    /** Properties of a ThirdPartyViewabilityIntegrationPartnerEnum. */
                    interface IThirdPartyViewabilityIntegrationPartnerEnum {
                    }

                    /** Represents a ThirdPartyViewabilityIntegrationPartnerEnum. */
                    class ThirdPartyViewabilityIntegrationPartnerEnum implements IThirdPartyViewabilityIntegrationPartnerEnum {

                        /**
                         * Constructs a new ThirdPartyViewabilityIntegrationPartnerEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IThirdPartyViewabilityIntegrationPartnerEnum);

                        /**
                         * Creates a new ThirdPartyViewabilityIntegrationPartnerEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyViewabilityIntegrationPartnerEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IThirdPartyViewabilityIntegrationPartnerEnum): google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum;

                        /**
                         * Encodes the specified ThirdPartyViewabilityIntegrationPartnerEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyViewabilityIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IThirdPartyViewabilityIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyViewabilityIntegrationPartnerEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum.verify|verify} messages.
                         * @param message ThirdPartyViewabilityIntegrationPartnerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IThirdPartyViewabilityIntegrationPartnerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyViewabilityIntegrationPartnerEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyViewabilityIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum;

                        /**
                         * Decodes a ThirdPartyViewabilityIntegrationPartnerEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyViewabilityIntegrationPartnerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum;

                        /**
                         * Verifies a ThirdPartyViewabilityIntegrationPartnerEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyViewabilityIntegrationPartnerEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyViewabilityIntegrationPartnerEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum;

                        /**
                         * Creates a plain object from a ThirdPartyViewabilityIntegrationPartnerEnum message. Also converts values to other types if specified.
                         * @param message ThirdPartyViewabilityIntegrationPartnerEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ThirdPartyViewabilityIntegrationPartnerEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyViewabilityIntegrationPartnerEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyViewabilityIntegrationPartnerEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ThirdPartyViewabilityIntegrationPartnerEnum {

                        /** ThirdPartyViewabilityIntegrationPartner enum. */
                        enum ThirdPartyViewabilityIntegrationPartner {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DOUBLE_VERIFY = 2,
                            INTEGRAL_AD_SCIENCE = 3
                        }
                    }

                    /** Properties of a CustomerMatchUploadKeyTypeEnum. */
                    interface ICustomerMatchUploadKeyTypeEnum {
                    }

                    /** Represents a CustomerMatchUploadKeyTypeEnum. */
                    class CustomerMatchUploadKeyTypeEnum implements ICustomerMatchUploadKeyTypeEnum {

                        /**
                         * Constructs a new CustomerMatchUploadKeyTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomerMatchUploadKeyTypeEnum);

                        /**
                         * Creates a new CustomerMatchUploadKeyTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerMatchUploadKeyTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomerMatchUploadKeyTypeEnum): google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum;

                        /**
                         * Encodes the specified CustomerMatchUploadKeyTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum.verify|verify} messages.
                         * @param message CustomerMatchUploadKeyTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomerMatchUploadKeyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerMatchUploadKeyTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum.verify|verify} messages.
                         * @param message CustomerMatchUploadKeyTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomerMatchUploadKeyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerMatchUploadKeyTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerMatchUploadKeyTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum;

                        /**
                         * Decodes a CustomerMatchUploadKeyTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerMatchUploadKeyTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum;

                        /**
                         * Verifies a CustomerMatchUploadKeyTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerMatchUploadKeyTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerMatchUploadKeyTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum;

                        /**
                         * Creates a plain object from a CustomerMatchUploadKeyTypeEnum message. Also converts values to other types if specified.
                         * @param message CustomerMatchUploadKeyTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomerMatchUploadKeyTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerMatchUploadKeyTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerMatchUploadKeyTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerMatchUploadKeyTypeEnum {

                        /** CustomerMatchUploadKeyType enum. */
                        enum CustomerMatchUploadKeyType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONTACT_INFO = 2,
                            CRM_ID = 3,
                            MOBILE_ADVERTISING_ID = 4
                        }
                    }

                    /** Properties of a LookalikeExpansionLevelEnum. */
                    interface ILookalikeExpansionLevelEnum {
                    }

                    /** Represents a LookalikeExpansionLevelEnum. */
                    class LookalikeExpansionLevelEnum implements ILookalikeExpansionLevelEnum {

                        /**
                         * Constructs a new LookalikeExpansionLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILookalikeExpansionLevelEnum);

                        /**
                         * Creates a new LookalikeExpansionLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LookalikeExpansionLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILookalikeExpansionLevelEnum): google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum;

                        /**
                         * Encodes the specified LookalikeExpansionLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum.verify|verify} messages.
                         * @param message LookalikeExpansionLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILookalikeExpansionLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LookalikeExpansionLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum.verify|verify} messages.
                         * @param message LookalikeExpansionLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILookalikeExpansionLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LookalikeExpansionLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LookalikeExpansionLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum;

                        /**
                         * Decodes a LookalikeExpansionLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LookalikeExpansionLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum;

                        /**
                         * Verifies a LookalikeExpansionLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LookalikeExpansionLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LookalikeExpansionLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum;

                        /**
                         * Creates a plain object from a LookalikeExpansionLevelEnum message. Also converts values to other types if specified.
                         * @param message LookalikeExpansionLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LookalikeExpansionLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LookalikeExpansionLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LookalikeExpansionLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LookalikeExpansionLevelEnum {

                        /** LookalikeExpansionLevel enum. */
                        enum LookalikeExpansionLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NARROW = 2,
                            BALANCED = 3,
                            BROAD = 4
                        }
                    }

                    /** Properties of a UserListCrmDataSourceTypeEnum. */
                    interface IUserListCrmDataSourceTypeEnum {
                    }

                    /** Represents a UserListCrmDataSourceTypeEnum. */
                    class UserListCrmDataSourceTypeEnum implements IUserListCrmDataSourceTypeEnum {

                        /**
                         * Constructs a new UserListCrmDataSourceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListCrmDataSourceTypeEnum);

                        /**
                         * Creates a new UserListCrmDataSourceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListCrmDataSourceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListCrmDataSourceTypeEnum): google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum;

                        /**
                         * Encodes the specified UserListCrmDataSourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.verify|verify} messages.
                         * @param message UserListCrmDataSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListCrmDataSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListCrmDataSourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.verify|verify} messages.
                         * @param message UserListCrmDataSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListCrmDataSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListCrmDataSourceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListCrmDataSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum;

                        /**
                         * Decodes a UserListCrmDataSourceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListCrmDataSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum;

                        /**
                         * Verifies a UserListCrmDataSourceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListCrmDataSourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListCrmDataSourceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum;

                        /**
                         * Creates a plain object from a UserListCrmDataSourceTypeEnum message. Also converts values to other types if specified.
                         * @param message UserListCrmDataSourceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListCrmDataSourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListCrmDataSourceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListCrmDataSourceTypeEnum {

                        /** UserListCrmDataSourceType enum. */
                        enum UserListCrmDataSourceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FIRST_PARTY = 2,
                            THIRD_PARTY_CREDIT_BUREAU = 3,
                            THIRD_PARTY_VOTER_FILE = 4,
                            THIRD_PARTY_PARTNER_DATA = 5
                        }
                    }

                    /** Properties of a UserListDateRuleItemOperatorEnum. */
                    interface IUserListDateRuleItemOperatorEnum {
                    }

                    /** Represents a UserListDateRuleItemOperatorEnum. */
                    class UserListDateRuleItemOperatorEnum implements IUserListDateRuleItemOperatorEnum {

                        /**
                         * Constructs a new UserListDateRuleItemOperatorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListDateRuleItemOperatorEnum);

                        /**
                         * Creates a new UserListDateRuleItemOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListDateRuleItemOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListDateRuleItemOperatorEnum): google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum;

                        /**
                         * Encodes the specified UserListDateRuleItemOperatorEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum.verify|verify} messages.
                         * @param message UserListDateRuleItemOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListDateRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListDateRuleItemOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum.verify|verify} messages.
                         * @param message UserListDateRuleItemOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListDateRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListDateRuleItemOperatorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListDateRuleItemOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum;

                        /**
                         * Decodes a UserListDateRuleItemOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListDateRuleItemOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum;

                        /**
                         * Verifies a UserListDateRuleItemOperatorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListDateRuleItemOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListDateRuleItemOperatorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum;

                        /**
                         * Creates a plain object from a UserListDateRuleItemOperatorEnum message. Also converts values to other types if specified.
                         * @param message UserListDateRuleItemOperatorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListDateRuleItemOperatorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListDateRuleItemOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListDateRuleItemOperatorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListDateRuleItemOperatorEnum {

                        /** UserListDateRuleItemOperator enum. */
                        enum UserListDateRuleItemOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EQUALS = 2,
                            NOT_EQUALS = 3,
                            BEFORE = 4,
                            AFTER = 5
                        }
                    }

                    /** Properties of a UserListFlexibleRuleOperatorEnum. */
                    interface IUserListFlexibleRuleOperatorEnum {
                    }

                    /** Represents a UserListFlexibleRuleOperatorEnum. */
                    class UserListFlexibleRuleOperatorEnum implements IUserListFlexibleRuleOperatorEnum {

                        /**
                         * Constructs a new UserListFlexibleRuleOperatorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListFlexibleRuleOperatorEnum);

                        /**
                         * Creates a new UserListFlexibleRuleOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListFlexibleRuleOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListFlexibleRuleOperatorEnum): google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum;

                        /**
                         * Encodes the specified UserListFlexibleRuleOperatorEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum.verify|verify} messages.
                         * @param message UserListFlexibleRuleOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListFlexibleRuleOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListFlexibleRuleOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum.verify|verify} messages.
                         * @param message UserListFlexibleRuleOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListFlexibleRuleOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListFlexibleRuleOperatorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListFlexibleRuleOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum;

                        /**
                         * Decodes a UserListFlexibleRuleOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListFlexibleRuleOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum;

                        /**
                         * Verifies a UserListFlexibleRuleOperatorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListFlexibleRuleOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListFlexibleRuleOperatorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum;

                        /**
                         * Creates a plain object from a UserListFlexibleRuleOperatorEnum message. Also converts values to other types if specified.
                         * @param message UserListFlexibleRuleOperatorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListFlexibleRuleOperatorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListFlexibleRuleOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListFlexibleRuleOperatorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListFlexibleRuleOperatorEnum {

                        /** UserListFlexibleRuleOperator enum. */
                        enum UserListFlexibleRuleOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AND = 2,
                            OR = 3
                        }
                    }

                    /** Properties of a UserListLogicalRuleOperatorEnum. */
                    interface IUserListLogicalRuleOperatorEnum {
                    }

                    /** Represents a UserListLogicalRuleOperatorEnum. */
                    class UserListLogicalRuleOperatorEnum implements IUserListLogicalRuleOperatorEnum {

                        /**
                         * Constructs a new UserListLogicalRuleOperatorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListLogicalRuleOperatorEnum);

                        /**
                         * Creates a new UserListLogicalRuleOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListLogicalRuleOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListLogicalRuleOperatorEnum): google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum;

                        /**
                         * Encodes the specified UserListLogicalRuleOperatorEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum.verify|verify} messages.
                         * @param message UserListLogicalRuleOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListLogicalRuleOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListLogicalRuleOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum.verify|verify} messages.
                         * @param message UserListLogicalRuleOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListLogicalRuleOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListLogicalRuleOperatorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListLogicalRuleOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum;

                        /**
                         * Decodes a UserListLogicalRuleOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListLogicalRuleOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum;

                        /**
                         * Verifies a UserListLogicalRuleOperatorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListLogicalRuleOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListLogicalRuleOperatorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum;

                        /**
                         * Creates a plain object from a UserListLogicalRuleOperatorEnum message. Also converts values to other types if specified.
                         * @param message UserListLogicalRuleOperatorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListLogicalRuleOperatorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListLogicalRuleOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListLogicalRuleOperatorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListLogicalRuleOperatorEnum {

                        /** UserListLogicalRuleOperator enum. */
                        enum UserListLogicalRuleOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ALL = 2,
                            ANY = 3,
                            NONE = 4
                        }
                    }

                    /** Properties of a UserListNumberRuleItemOperatorEnum. */
                    interface IUserListNumberRuleItemOperatorEnum {
                    }

                    /** Represents a UserListNumberRuleItemOperatorEnum. */
                    class UserListNumberRuleItemOperatorEnum implements IUserListNumberRuleItemOperatorEnum {

                        /**
                         * Constructs a new UserListNumberRuleItemOperatorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListNumberRuleItemOperatorEnum);

                        /**
                         * Creates a new UserListNumberRuleItemOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListNumberRuleItemOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListNumberRuleItemOperatorEnum): google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum;

                        /**
                         * Encodes the specified UserListNumberRuleItemOperatorEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum.verify|verify} messages.
                         * @param message UserListNumberRuleItemOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListNumberRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListNumberRuleItemOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum.verify|verify} messages.
                         * @param message UserListNumberRuleItemOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListNumberRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListNumberRuleItemOperatorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListNumberRuleItemOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum;

                        /**
                         * Decodes a UserListNumberRuleItemOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListNumberRuleItemOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum;

                        /**
                         * Verifies a UserListNumberRuleItemOperatorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListNumberRuleItemOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListNumberRuleItemOperatorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum;

                        /**
                         * Creates a plain object from a UserListNumberRuleItemOperatorEnum message. Also converts values to other types if specified.
                         * @param message UserListNumberRuleItemOperatorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListNumberRuleItemOperatorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListNumberRuleItemOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListNumberRuleItemOperatorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListNumberRuleItemOperatorEnum {

                        /** UserListNumberRuleItemOperator enum. */
                        enum UserListNumberRuleItemOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GREATER_THAN = 2,
                            GREATER_THAN_OR_EQUAL = 3,
                            EQUALS = 4,
                            NOT_EQUALS = 5,
                            LESS_THAN = 6,
                            LESS_THAN_OR_EQUAL = 7
                        }
                    }

                    /** Properties of a UserListPrepopulationStatusEnum. */
                    interface IUserListPrepopulationStatusEnum {
                    }

                    /** Represents a UserListPrepopulationStatusEnum. */
                    class UserListPrepopulationStatusEnum implements IUserListPrepopulationStatusEnum {

                        /**
                         * Constructs a new UserListPrepopulationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListPrepopulationStatusEnum);

                        /**
                         * Creates a new UserListPrepopulationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListPrepopulationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListPrepopulationStatusEnum): google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum;

                        /**
                         * Encodes the specified UserListPrepopulationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum.verify|verify} messages.
                         * @param message UserListPrepopulationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListPrepopulationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListPrepopulationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum.verify|verify} messages.
                         * @param message UserListPrepopulationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListPrepopulationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListPrepopulationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListPrepopulationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum;

                        /**
                         * Decodes a UserListPrepopulationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListPrepopulationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum;

                        /**
                         * Verifies a UserListPrepopulationStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListPrepopulationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListPrepopulationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum;

                        /**
                         * Creates a plain object from a UserListPrepopulationStatusEnum message. Also converts values to other types if specified.
                         * @param message UserListPrepopulationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListPrepopulationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListPrepopulationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListPrepopulationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListPrepopulationStatusEnum {

                        /** UserListPrepopulationStatus enum. */
                        enum UserListPrepopulationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REQUESTED = 2,
                            FINISHED = 3,
                            FAILED = 4
                        }
                    }

                    /** Properties of a UserListRuleTypeEnum. */
                    interface IUserListRuleTypeEnum {
                    }

                    /** Represents a UserListRuleTypeEnum. */
                    class UserListRuleTypeEnum implements IUserListRuleTypeEnum {

                        /**
                         * Constructs a new UserListRuleTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListRuleTypeEnum);

                        /**
                         * Creates a new UserListRuleTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListRuleTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListRuleTypeEnum): google.ads.googleads.v23.enums.UserListRuleTypeEnum;

                        /**
                         * Encodes the specified UserListRuleTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListRuleTypeEnum.verify|verify} messages.
                         * @param message UserListRuleTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListRuleTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListRuleTypeEnum.verify|verify} messages.
                         * @param message UserListRuleTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListRuleTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListRuleTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListRuleTypeEnum;

                        /**
                         * Decodes a UserListRuleTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListRuleTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListRuleTypeEnum;

                        /**
                         * Verifies a UserListRuleTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListRuleTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListRuleTypeEnum;

                        /**
                         * Creates a plain object from a UserListRuleTypeEnum message. Also converts values to other types if specified.
                         * @param message UserListRuleTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListRuleTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListRuleTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListRuleTypeEnum {

                        /** UserListRuleType enum. */
                        enum UserListRuleType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AND_OF_ORS = 2,
                            OR_OF_ANDS = 3
                        }
                    }

                    /** Properties of a UserListStringRuleItemOperatorEnum. */
                    interface IUserListStringRuleItemOperatorEnum {
                    }

                    /** Represents a UserListStringRuleItemOperatorEnum. */
                    class UserListStringRuleItemOperatorEnum implements IUserListStringRuleItemOperatorEnum {

                        /**
                         * Constructs a new UserListStringRuleItemOperatorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListStringRuleItemOperatorEnum);

                        /**
                         * Creates a new UserListStringRuleItemOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListStringRuleItemOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListStringRuleItemOperatorEnum): google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum;

                        /**
                         * Encodes the specified UserListStringRuleItemOperatorEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum.verify|verify} messages.
                         * @param message UserListStringRuleItemOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListStringRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListStringRuleItemOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum.verify|verify} messages.
                         * @param message UserListStringRuleItemOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListStringRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListStringRuleItemOperatorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListStringRuleItemOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum;

                        /**
                         * Decodes a UserListStringRuleItemOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListStringRuleItemOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum;

                        /**
                         * Verifies a UserListStringRuleItemOperatorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListStringRuleItemOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListStringRuleItemOperatorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum;

                        /**
                         * Creates a plain object from a UserListStringRuleItemOperatorEnum message. Also converts values to other types if specified.
                         * @param message UserListStringRuleItemOperatorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListStringRuleItemOperatorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListStringRuleItemOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListStringRuleItemOperatorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListStringRuleItemOperatorEnum {

                        /** UserListStringRuleItemOperator enum. */
                        enum UserListStringRuleItemOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONTAINS = 2,
                            EQUALS = 3,
                            STARTS_WITH = 4,
                            ENDS_WITH = 5,
                            NOT_EQUALS = 6,
                            NOT_CONTAINS = 7,
                            NOT_STARTS_WITH = 8,
                            NOT_ENDS_WITH = 9
                        }
                    }

                    /** Properties of an AccessInvitationStatusEnum. */
                    interface IAccessInvitationStatusEnum {
                    }

                    /** Represents an AccessInvitationStatusEnum. */
                    class AccessInvitationStatusEnum implements IAccessInvitationStatusEnum {

                        /**
                         * Constructs a new AccessInvitationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAccessInvitationStatusEnum);

                        /**
                         * Creates a new AccessInvitationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccessInvitationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAccessInvitationStatusEnum): google.ads.googleads.v23.enums.AccessInvitationStatusEnum;

                        /**
                         * Encodes the specified AccessInvitationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AccessInvitationStatusEnum.verify|verify} messages.
                         * @param message AccessInvitationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAccessInvitationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessInvitationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AccessInvitationStatusEnum.verify|verify} messages.
                         * @param message AccessInvitationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAccessInvitationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessInvitationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccessInvitationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AccessInvitationStatusEnum;

                        /**
                         * Decodes an AccessInvitationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccessInvitationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AccessInvitationStatusEnum;

                        /**
                         * Verifies an AccessInvitationStatusEnum message.
                         * @param message Plain 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 AccessInvitationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccessInvitationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AccessInvitationStatusEnum;

                        /**
                         * Creates a plain object from an AccessInvitationStatusEnum message. Also converts values to other types if specified.
                         * @param message AccessInvitationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AccessInvitationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessInvitationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccessInvitationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccessInvitationStatusEnum {

                        /** AccessInvitationStatus enum. */
                        enum AccessInvitationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            DECLINED = 3,
                            EXPIRED = 4
                        }
                    }

                    /** Properties of an AccessReasonEnum. */
                    interface IAccessReasonEnum {
                    }

                    /** Represents an AccessReasonEnum. */
                    class AccessReasonEnum implements IAccessReasonEnum {

                        /**
                         * Constructs a new AccessReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAccessReasonEnum);

                        /**
                         * Creates a new AccessReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccessReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAccessReasonEnum): google.ads.googleads.v23.enums.AccessReasonEnum;

                        /**
                         * Encodes the specified AccessReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AccessReasonEnum.verify|verify} messages.
                         * @param message AccessReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAccessReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AccessReasonEnum.verify|verify} messages.
                         * @param message AccessReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAccessReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccessReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AccessReasonEnum;

                        /**
                         * Decodes an AccessReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccessReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AccessReasonEnum;

                        /**
                         * Verifies an AccessReasonEnum message.
                         * @param message Plain 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 AccessReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccessReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AccessReasonEnum;

                        /**
                         * Creates a plain object from an AccessReasonEnum message. Also converts values to other types if specified.
                         * @param message AccessReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AccessReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccessReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccessReasonEnum {

                        /** AccessReason enum. */
                        enum AccessReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OWNED = 2,
                            SHARED = 3,
                            LICENSED = 4,
                            SUBSCRIBED = 5,
                            AFFILIATED = 6
                        }
                    }

                    /** Properties of an AccessRoleEnum. */
                    interface IAccessRoleEnum {
                    }

                    /** Represents an AccessRoleEnum. */
                    class AccessRoleEnum implements IAccessRoleEnum {

                        /**
                         * Constructs a new AccessRoleEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAccessRoleEnum);

                        /**
                         * Creates a new AccessRoleEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccessRoleEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAccessRoleEnum): google.ads.googleads.v23.enums.AccessRoleEnum;

                        /**
                         * Encodes the specified AccessRoleEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AccessRoleEnum.verify|verify} messages.
                         * @param message AccessRoleEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAccessRoleEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessRoleEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AccessRoleEnum.verify|verify} messages.
                         * @param message AccessRoleEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAccessRoleEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessRoleEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccessRoleEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AccessRoleEnum;

                        /**
                         * Decodes an AccessRoleEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccessRoleEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AccessRoleEnum;

                        /**
                         * Verifies an AccessRoleEnum message.
                         * @param message Plain 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 AccessRoleEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccessRoleEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AccessRoleEnum;

                        /**
                         * Creates a plain object from an AccessRoleEnum message. Also converts values to other types if specified.
                         * @param message AccessRoleEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AccessRoleEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessRoleEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccessRoleEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccessRoleEnum {

                        /** AccessRole enum. */
                        enum AccessRole {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADMIN = 2,
                            STANDARD = 3,
                            READ_ONLY = 4,
                            EMAIL_ONLY = 5
                        }
                    }

                    /** Properties of an AccountBudgetProposalStatusEnum. */
                    interface IAccountBudgetProposalStatusEnum {
                    }

                    /** Represents an AccountBudgetProposalStatusEnum. */
                    class AccountBudgetProposalStatusEnum implements IAccountBudgetProposalStatusEnum {

                        /**
                         * Constructs a new AccountBudgetProposalStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAccountBudgetProposalStatusEnum);

                        /**
                         * Creates a new AccountBudgetProposalStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountBudgetProposalStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAccountBudgetProposalStatusEnum): google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum;

                        /**
                         * Encodes the specified AccountBudgetProposalStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum.verify|verify} messages.
                         * @param message AccountBudgetProposalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAccountBudgetProposalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum.verify|verify} messages.
                         * @param message AccountBudgetProposalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAccountBudgetProposalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountBudgetProposalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum;

                        /**
                         * Decodes an AccountBudgetProposalStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountBudgetProposalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum;

                        /**
                         * Verifies an AccountBudgetProposalStatusEnum message.
                         * @param message Plain 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 AccountBudgetProposalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountBudgetProposalStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum;

                        /**
                         * Creates a plain object from an AccountBudgetProposalStatusEnum message. Also converts values to other types if specified.
                         * @param message AccountBudgetProposalStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountBudgetProposalStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountBudgetProposalStatusEnum {

                        /** AccountBudgetProposalStatus enum. */
                        enum AccountBudgetProposalStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            APPROVED_HELD = 3,
                            APPROVED = 4,
                            CANCELLED = 5,
                            REJECTED = 6
                        }
                    }

                    /** Properties of an AccountBudgetProposalTypeEnum. */
                    interface IAccountBudgetProposalTypeEnum {
                    }

                    /** Represents an AccountBudgetProposalTypeEnum. */
                    class AccountBudgetProposalTypeEnum implements IAccountBudgetProposalTypeEnum {

                        /**
                         * Constructs a new AccountBudgetProposalTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAccountBudgetProposalTypeEnum);

                        /**
                         * Creates a new AccountBudgetProposalTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountBudgetProposalTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAccountBudgetProposalTypeEnum): google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum;

                        /**
                         * Encodes the specified AccountBudgetProposalTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.verify|verify} messages.
                         * @param message AccountBudgetProposalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAccountBudgetProposalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.verify|verify} messages.
                         * @param message AccountBudgetProposalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAccountBudgetProposalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountBudgetProposalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum;

                        /**
                         * Decodes an AccountBudgetProposalTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountBudgetProposalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum;

                        /**
                         * Verifies an AccountBudgetProposalTypeEnum message.
                         * @param message Plain 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 AccountBudgetProposalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountBudgetProposalTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum;

                        /**
                         * Creates a plain object from an AccountBudgetProposalTypeEnum message. Also converts values to other types if specified.
                         * @param message AccountBudgetProposalTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountBudgetProposalTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountBudgetProposalTypeEnum {

                        /** AccountBudgetProposalType enum. */
                        enum AccountBudgetProposalType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CREATE = 2,
                            UPDATE = 3,
                            END = 4,
                            REMOVE = 5
                        }
                    }

                    /** Properties of an AccountBudgetStatusEnum. */
                    interface IAccountBudgetStatusEnum {
                    }

                    /** Represents an AccountBudgetStatusEnum. */
                    class AccountBudgetStatusEnum implements IAccountBudgetStatusEnum {

                        /**
                         * Constructs a new AccountBudgetStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAccountBudgetStatusEnum);

                        /**
                         * Creates a new AccountBudgetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountBudgetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAccountBudgetStatusEnum): google.ads.googleads.v23.enums.AccountBudgetStatusEnum;

                        /**
                         * Encodes the specified AccountBudgetStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AccountBudgetStatusEnum.verify|verify} messages.
                         * @param message AccountBudgetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAccountBudgetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AccountBudgetStatusEnum.verify|verify} messages.
                         * @param message AccountBudgetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAccountBudgetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountBudgetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AccountBudgetStatusEnum;

                        /**
                         * Decodes an AccountBudgetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountBudgetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AccountBudgetStatusEnum;

                        /**
                         * Verifies an AccountBudgetStatusEnum message.
                         * @param message Plain 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 AccountBudgetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountBudgetStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AccountBudgetStatusEnum;

                        /**
                         * Creates a plain object from an AccountBudgetStatusEnum message. Also converts values to other types if specified.
                         * @param message AccountBudgetStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AccountBudgetStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountBudgetStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountBudgetStatusEnum {

                        /** AccountBudgetStatus enum. */
                        enum AccountBudgetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            APPROVED = 3,
                            CANCELLED = 4
                        }
                    }

                    /** Properties of an AccountLinkStatusEnum. */
                    interface IAccountLinkStatusEnum {
                    }

                    /** Represents an AccountLinkStatusEnum. */
                    class AccountLinkStatusEnum implements IAccountLinkStatusEnum {

                        /**
                         * Constructs a new AccountLinkStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAccountLinkStatusEnum);

                        /**
                         * Creates a new AccountLinkStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountLinkStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAccountLinkStatusEnum): google.ads.googleads.v23.enums.AccountLinkStatusEnum;

                        /**
                         * Encodes the specified AccountLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AccountLinkStatusEnum.verify|verify} messages.
                         * @param message AccountLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAccountLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AccountLinkStatusEnum.verify|verify} messages.
                         * @param message AccountLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAccountLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLinkStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AccountLinkStatusEnum;

                        /**
                         * Decodes an AccountLinkStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AccountLinkStatusEnum;

                        /**
                         * Verifies an AccountLinkStatusEnum message.
                         * @param message Plain 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 AccountLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountLinkStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AccountLinkStatusEnum;

                        /**
                         * Creates a plain object from an AccountLinkStatusEnum message. Also converts values to other types if specified.
                         * @param message AccountLinkStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AccountLinkStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountLinkStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountLinkStatusEnum {

                        /** AccountLinkStatus enum. */
                        enum AccountLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3,
                            REQUESTED = 4,
                            PENDING_APPROVAL = 5,
                            REJECTED = 6,
                            REVOKED = 7
                        }
                    }

                    /** Properties of an AdGroupAdPrimaryStatusEnum. */
                    interface IAdGroupAdPrimaryStatusEnum {
                    }

                    /** Represents an AdGroupAdPrimaryStatusEnum. */
                    class AdGroupAdPrimaryStatusEnum implements IAdGroupAdPrimaryStatusEnum {

                        /**
                         * Constructs a new AdGroupAdPrimaryStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusEnum);

                        /**
                         * Creates a new AdGroupAdPrimaryStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdPrimaryStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusEnum): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum;

                        /**
                         * Encodes the specified AdGroupAdPrimaryStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum.verify|verify} messages.
                         * @param message AdGroupAdPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdPrimaryStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum.verify|verify} messages.
                         * @param message AdGroupAdPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdPrimaryStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum;

                        /**
                         * Decodes an AdGroupAdPrimaryStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum;

                        /**
                         * Verifies an AdGroupAdPrimaryStatusEnum message.
                         * @param message Plain 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 AdGroupAdPrimaryStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdPrimaryStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupAdPrimaryStatusEnum message. Also converts values to other types if specified.
                         * @param message AdGroupAdPrimaryStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdPrimaryStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdPrimaryStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupAdPrimaryStatusEnum {

                        /** AdGroupAdPrimaryStatus enum. */
                        enum AdGroupAdPrimaryStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            PAUSED = 3,
                            REMOVED = 4,
                            PENDING = 5,
                            LIMITED = 6,
                            NOT_ELIGIBLE = 7
                        }
                    }

                    /** Properties of an AdGroupAdPrimaryStatusReasonEnum. */
                    interface IAdGroupAdPrimaryStatusReasonEnum {
                    }

                    /** Represents an AdGroupAdPrimaryStatusReasonEnum. */
                    class AdGroupAdPrimaryStatusReasonEnum implements IAdGroupAdPrimaryStatusReasonEnum {

                        /**
                         * Constructs a new AdGroupAdPrimaryStatusReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusReasonEnum);

                        /**
                         * Creates a new AdGroupAdPrimaryStatusReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdPrimaryStatusReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusReasonEnum): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum;

                        /**
                         * Encodes the specified AdGroupAdPrimaryStatusReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AdGroupAdPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdPrimaryStatusReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AdGroupAdPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupAdPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdPrimaryStatusReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum;

                        /**
                         * Decodes an AdGroupAdPrimaryStatusReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum;

                        /**
                         * Verifies an AdGroupAdPrimaryStatusReasonEnum message.
                         * @param message Plain 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 AdGroupAdPrimaryStatusReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdPrimaryStatusReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum;

                        /**
                         * Creates a plain object from an AdGroupAdPrimaryStatusReasonEnum message. Also converts values to other types if specified.
                         * @param message AdGroupAdPrimaryStatusReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdPrimaryStatusReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdPrimaryStatusReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupAdPrimaryStatusReasonEnum {

                        /** AdGroupAdPrimaryStatusReason enum. */
                        enum AdGroupAdPrimaryStatusReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_REMOVED = 2,
                            CAMPAIGN_PAUSED = 3,
                            CAMPAIGN_PENDING = 4,
                            CAMPAIGN_ENDED = 5,
                            AD_GROUP_PAUSED = 6,
                            AD_GROUP_REMOVED = 7,
                            AD_GROUP_AD_PAUSED = 8,
                            AD_GROUP_AD_REMOVED = 9,
                            AD_GROUP_AD_DISAPPROVED = 10,
                            AD_GROUP_AD_UNDER_REVIEW = 11,
                            AD_GROUP_AD_POOR_QUALITY = 12,
                            AD_GROUP_AD_NO_ADS = 13,
                            AD_GROUP_AD_APPROVED_LABELED = 14,
                            AD_GROUP_AD_AREA_OF_INTEREST_ONLY = 15,
                            AD_GROUP_AD_UNDER_APPEAL = 16
                        }
                    }

                    /** Properties of an AdGroupAdRotationModeEnum. */
                    interface IAdGroupAdRotationModeEnum {
                    }

                    /** Represents an AdGroupAdRotationModeEnum. */
                    class AdGroupAdRotationModeEnum implements IAdGroupAdRotationModeEnum {

                        /**
                         * Constructs a new AdGroupAdRotationModeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupAdRotationModeEnum);

                        /**
                         * Creates a new AdGroupAdRotationModeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdRotationModeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupAdRotationModeEnum): google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum;

                        /**
                         * Encodes the specified AdGroupAdRotationModeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum.verify|verify} messages.
                         * @param message AdGroupAdRotationModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupAdRotationModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdRotationModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum.verify|verify} messages.
                         * @param message AdGroupAdRotationModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupAdRotationModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdRotationModeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdRotationModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum;

                        /**
                         * Decodes an AdGroupAdRotationModeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdRotationModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum;

                        /**
                         * Verifies an AdGroupAdRotationModeEnum message.
                         * @param message Plain 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 AdGroupAdRotationModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdRotationModeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum;

                        /**
                         * Creates a plain object from an AdGroupAdRotationModeEnum message. Also converts values to other types if specified.
                         * @param message AdGroupAdRotationModeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdRotationModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdRotationModeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupAdRotationModeEnum {

                        /** AdGroupAdRotationMode enum. */
                        enum AdGroupAdRotationMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPTIMIZE = 2,
                            ROTATE_FOREVER = 3
                        }
                    }

                    /** Properties of an AdGroupAdStatusEnum. */
                    interface IAdGroupAdStatusEnum {
                    }

                    /** Represents an AdGroupAdStatusEnum. */
                    class AdGroupAdStatusEnum implements IAdGroupAdStatusEnum {

                        /**
                         * Constructs a new AdGroupAdStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupAdStatusEnum);

                        /**
                         * Creates a new AdGroupAdStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupAdStatusEnum): google.ads.googleads.v23.enums.AdGroupAdStatusEnum;

                        /**
                         * Encodes the specified AdGroupAdStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdStatusEnum.verify|verify} messages.
                         * @param message AdGroupAdStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupAdStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupAdStatusEnum.verify|verify} messages.
                         * @param message AdGroupAdStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupAdStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupAdStatusEnum;

                        /**
                         * Decodes an AdGroupAdStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupAdStatusEnum;

                        /**
                         * Verifies an AdGroupAdStatusEnum message.
                         * @param message Plain 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 AdGroupAdStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupAdStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupAdStatusEnum message. Also converts values to other types if specified.
                         * @param message AdGroupAdStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupAdStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupAdStatusEnum {

                        /** AdGroupAdStatus enum. */
                        enum AdGroupAdStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of an AdGroupCriterionApprovalStatusEnum. */
                    interface IAdGroupCriterionApprovalStatusEnum {
                    }

                    /** Represents an AdGroupCriterionApprovalStatusEnum. */
                    class AdGroupCriterionApprovalStatusEnum implements IAdGroupCriterionApprovalStatusEnum {

                        /**
                         * Constructs a new AdGroupCriterionApprovalStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionApprovalStatusEnum);

                        /**
                         * Creates a new AdGroupCriterionApprovalStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionApprovalStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionApprovalStatusEnum): google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum;

                        /**
                         * Encodes the specified AdGroupCriterionApprovalStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum.verify|verify} messages.
                         * @param message AdGroupCriterionApprovalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupCriterionApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionApprovalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum.verify|verify} messages.
                         * @param message AdGroupCriterionApprovalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupCriterionApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionApprovalStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum;

                        /**
                         * Decodes an AdGroupCriterionApprovalStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum;

                        /**
                         * Verifies an AdGroupCriterionApprovalStatusEnum message.
                         * @param message Plain 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 AdGroupCriterionApprovalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionApprovalStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionApprovalStatusEnum message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionApprovalStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionApprovalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionApprovalStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCriterionApprovalStatusEnum {

                        /** AdGroupCriterionApprovalStatus enum. */
                        enum AdGroupCriterionApprovalStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPROVED = 2,
                            DISAPPROVED = 3,
                            PENDING_REVIEW = 4,
                            UNDER_REVIEW = 5
                        }
                    }

                    /** Properties of an AdGroupCriterionPrimaryStatusEnum. */
                    interface IAdGroupCriterionPrimaryStatusEnum {
                    }

                    /** Represents an AdGroupCriterionPrimaryStatusEnum. */
                    class AdGroupCriterionPrimaryStatusEnum implements IAdGroupCriterionPrimaryStatusEnum {

                        /**
                         * Constructs a new AdGroupCriterionPrimaryStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusEnum);

                        /**
                         * Creates a new AdGroupCriterionPrimaryStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionPrimaryStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusEnum): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum;

                        /**
                         * Encodes the specified AdGroupCriterionPrimaryStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum.verify|verify} messages.
                         * @param message AdGroupCriterionPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionPrimaryStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum.verify|verify} messages.
                         * @param message AdGroupCriterionPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionPrimaryStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum;

                        /**
                         * Decodes an AdGroupCriterionPrimaryStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum;

                        /**
                         * Verifies an AdGroupCriterionPrimaryStatusEnum message.
                         * @param message Plain 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 AdGroupCriterionPrimaryStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionPrimaryStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionPrimaryStatusEnum message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionPrimaryStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionPrimaryStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionPrimaryStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCriterionPrimaryStatusEnum {

                        /** AdGroupCriterionPrimaryStatus enum. */
                        enum AdGroupCriterionPrimaryStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            PAUSED = 3,
                            REMOVED = 4,
                            PENDING = 5,
                            NOT_ELIGIBLE = 6
                        }
                    }

                    /** Properties of an AdGroupCriterionPrimaryStatusReasonEnum. */
                    interface IAdGroupCriterionPrimaryStatusReasonEnum {
                    }

                    /** Represents an AdGroupCriterionPrimaryStatusReasonEnum. */
                    class AdGroupCriterionPrimaryStatusReasonEnum implements IAdGroupCriterionPrimaryStatusReasonEnum {

                        /**
                         * Constructs a new AdGroupCriterionPrimaryStatusReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusReasonEnum);

                        /**
                         * Creates a new AdGroupCriterionPrimaryStatusReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionPrimaryStatusReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusReasonEnum): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum;

                        /**
                         * Encodes the specified AdGroupCriterionPrimaryStatusReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AdGroupCriterionPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionPrimaryStatusReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AdGroupCriterionPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupCriterionPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionPrimaryStatusReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum;

                        /**
                         * Decodes an AdGroupCriterionPrimaryStatusReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum;

                        /**
                         * Verifies an AdGroupCriterionPrimaryStatusReasonEnum message.
                         * @param message Plain 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 AdGroupCriterionPrimaryStatusReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionPrimaryStatusReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionPrimaryStatusReasonEnum message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionPrimaryStatusReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionPrimaryStatusReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionPrimaryStatusReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCriterionPrimaryStatusReasonEnum {

                        /** AdGroupCriterionPrimaryStatusReason enum. */
                        enum AdGroupCriterionPrimaryStatusReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_PENDING = 2,
                            CAMPAIGN_CRITERION_NEGATIVE = 3,
                            CAMPAIGN_PAUSED = 4,
                            CAMPAIGN_REMOVED = 5,
                            CAMPAIGN_ENDED = 6,
                            AD_GROUP_PAUSED = 7,
                            AD_GROUP_REMOVED = 8,
                            AD_GROUP_CRITERION_DISAPPROVED = 9,
                            AD_GROUP_CRITERION_RARELY_SERVED = 10,
                            AD_GROUP_CRITERION_LOW_QUALITY = 11,
                            AD_GROUP_CRITERION_UNDER_REVIEW = 12,
                            AD_GROUP_CRITERION_PENDING_REVIEW = 13,
                            AD_GROUP_CRITERION_BELOW_FIRST_PAGE_BID = 14,
                            AD_GROUP_CRITERION_NEGATIVE = 15,
                            AD_GROUP_CRITERION_RESTRICTED = 16,
                            AD_GROUP_CRITERION_PAUSED = 17,
                            AD_GROUP_CRITERION_PAUSED_DUE_TO_LOW_ACTIVITY = 18,
                            AD_GROUP_CRITERION_REMOVED = 19
                        }
                    }

                    /** Properties of an AdGroupCriterionStatusEnum. */
                    interface IAdGroupCriterionStatusEnum {
                    }

                    /** Represents an AdGroupCriterionStatusEnum. */
                    class AdGroupCriterionStatusEnum implements IAdGroupCriterionStatusEnum {

                        /**
                         * Constructs a new AdGroupCriterionStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionStatusEnum);

                        /**
                         * Creates a new AdGroupCriterionStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupCriterionStatusEnum): google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum;

                        /**
                         * Encodes the specified AdGroupCriterionStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum.verify|verify} messages.
                         * @param message AdGroupCriterionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupCriterionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum.verify|verify} messages.
                         * @param message AdGroupCriterionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupCriterionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum;

                        /**
                         * Decodes an AdGroupCriterionStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum;

                        /**
                         * Verifies an AdGroupCriterionStatusEnum message.
                         * @param message Plain 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 AdGroupCriterionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionStatusEnum message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCriterionStatusEnum {

                        /** AdGroupCriterionStatus enum. */
                        enum AdGroupCriterionStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of an AdGroupPrimaryStatusEnum. */
                    interface IAdGroupPrimaryStatusEnum {
                    }

                    /** Represents an AdGroupPrimaryStatusEnum. */
                    class AdGroupPrimaryStatusEnum implements IAdGroupPrimaryStatusEnum {

                        /**
                         * Constructs a new AdGroupPrimaryStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusEnum);

                        /**
                         * Creates a new AdGroupPrimaryStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupPrimaryStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusEnum): google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum;

                        /**
                         * Encodes the specified AdGroupPrimaryStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum.verify|verify} messages.
                         * @param message AdGroupPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupPrimaryStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum.verify|verify} messages.
                         * @param message AdGroupPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupPrimaryStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum;

                        /**
                         * Decodes an AdGroupPrimaryStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum;

                        /**
                         * Verifies an AdGroupPrimaryStatusEnum message.
                         * @param message Plain 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 AdGroupPrimaryStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupPrimaryStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupPrimaryStatusEnum message. Also converts values to other types if specified.
                         * @param message AdGroupPrimaryStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupPrimaryStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupPrimaryStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupPrimaryStatusEnum {

                        /** AdGroupPrimaryStatus enum. */
                        enum AdGroupPrimaryStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            PAUSED = 3,
                            REMOVED = 4,
                            PENDING = 5,
                            NOT_ELIGIBLE = 6,
                            LIMITED = 7
                        }
                    }

                    /** Properties of an AdGroupPrimaryStatusReasonEnum. */
                    interface IAdGroupPrimaryStatusReasonEnum {
                    }

                    /** Represents an AdGroupPrimaryStatusReasonEnum. */
                    class AdGroupPrimaryStatusReasonEnum implements IAdGroupPrimaryStatusReasonEnum {

                        /**
                         * Constructs a new AdGroupPrimaryStatusReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusReasonEnum);

                        /**
                         * Creates a new AdGroupPrimaryStatusReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupPrimaryStatusReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusReasonEnum): google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum;

                        /**
                         * Encodes the specified AdGroupPrimaryStatusReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AdGroupPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupPrimaryStatusReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AdGroupPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupPrimaryStatusReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum;

                        /**
                         * Decodes an AdGroupPrimaryStatusReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum;

                        /**
                         * Verifies an AdGroupPrimaryStatusReasonEnum message.
                         * @param message Plain 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 AdGroupPrimaryStatusReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupPrimaryStatusReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum;

                        /**
                         * Creates a plain object from an AdGroupPrimaryStatusReasonEnum message. Also converts values to other types if specified.
                         * @param message AdGroupPrimaryStatusReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupPrimaryStatusReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupPrimaryStatusReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupPrimaryStatusReasonEnum {

                        /** AdGroupPrimaryStatusReason enum. */
                        enum AdGroupPrimaryStatusReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_REMOVED = 2,
                            CAMPAIGN_PAUSED = 3,
                            CAMPAIGN_PENDING = 4,
                            CAMPAIGN_ENDED = 5,
                            AD_GROUP_PAUSED = 6,
                            AD_GROUP_REMOVED = 7,
                            AD_GROUP_INCOMPLETE = 8,
                            KEYWORDS_PAUSED = 9,
                            NO_KEYWORDS = 10,
                            AD_GROUP_ADS_PAUSED = 11,
                            NO_AD_GROUP_ADS = 12,
                            HAS_ADS_DISAPPROVED = 13,
                            HAS_ADS_LIMITED_BY_POLICY = 14,
                            MOST_ADS_UNDER_REVIEW = 15,
                            CAMPAIGN_DRAFT = 16,
                            AD_GROUP_PAUSED_DUE_TO_LOW_ACTIVITY = 19
                        }
                    }

                    /** Properties of an AdGroupStatusEnum. */
                    interface IAdGroupStatusEnum {
                    }

                    /** Represents an AdGroupStatusEnum. */
                    class AdGroupStatusEnum implements IAdGroupStatusEnum {

                        /**
                         * Constructs a new AdGroupStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupStatusEnum);

                        /**
                         * Creates a new AdGroupStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupStatusEnum): google.ads.googleads.v23.enums.AdGroupStatusEnum;

                        /**
                         * Encodes the specified AdGroupStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupStatusEnum.verify|verify} messages.
                         * @param message AdGroupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupStatusEnum.verify|verify} messages.
                         * @param message AdGroupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupStatusEnum;

                        /**
                         * Decodes an AdGroupStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupStatusEnum;

                        /**
                         * Verifies an AdGroupStatusEnum message.
                         * @param message Plain 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 AdGroupStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupStatusEnum message. Also converts values to other types if specified.
                         * @param message AdGroupStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupStatusEnum {

                        /** AdGroupStatus enum. */
                        enum AdGroupStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of an AdGroupTypeEnum. */
                    interface IAdGroupTypeEnum {
                    }

                    /** Represents an AdGroupTypeEnum. */
                    class AdGroupTypeEnum implements IAdGroupTypeEnum {

                        /**
                         * Constructs a new AdGroupTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdGroupTypeEnum);

                        /**
                         * Creates a new AdGroupTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdGroupTypeEnum): google.ads.googleads.v23.enums.AdGroupTypeEnum;

                        /**
                         * Encodes the specified AdGroupTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupTypeEnum.verify|verify} messages.
                         * @param message AdGroupTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdGroupTypeEnum.verify|verify} messages.
                         * @param message AdGroupTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdGroupTypeEnum;

                        /**
                         * Decodes an AdGroupTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdGroupTypeEnum;

                        /**
                         * Verifies an AdGroupTypeEnum message.
                         * @param message Plain 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 AdGroupTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdGroupTypeEnum;

                        /**
                         * Creates a plain object from an AdGroupTypeEnum message. Also converts values to other types if specified.
                         * @param message AdGroupTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdGroupTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupTypeEnum {

                        /** AdGroupType enum. */
                        enum AdGroupType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEARCH_STANDARD = 2,
                            DISPLAY_STANDARD = 3,
                            SHOPPING_PRODUCT_ADS = 4,
                            HOTEL_ADS = 6,
                            SHOPPING_SMART_ADS = 7,
                            VIDEO_BUMPER = 8,
                            VIDEO_TRUE_VIEW_IN_STREAM = 9,
                            VIDEO_TRUE_VIEW_IN_DISPLAY = 10,
                            VIDEO_NON_SKIPPABLE_IN_STREAM = 11,
                            SEARCH_DYNAMIC_ADS = 13,
                            SHOPPING_COMPARISON_LISTING_ADS = 14,
                            PROMOTED_HOTEL_ADS = 15,
                            VIDEO_RESPONSIVE = 16,
                            VIDEO_EFFICIENT_REACH = 17,
                            SMART_CAMPAIGN_ADS = 18,
                            TRAVEL_ADS = 19,
                            YOUTUBE_AUDIO = 20
                        }
                    }

                    /** Properties of an AdServingOptimizationStatusEnum. */
                    interface IAdServingOptimizationStatusEnum {
                    }

                    /** Represents an AdServingOptimizationStatusEnum. */
                    class AdServingOptimizationStatusEnum implements IAdServingOptimizationStatusEnum {

                        /**
                         * Constructs a new AdServingOptimizationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdServingOptimizationStatusEnum);

                        /**
                         * Creates a new AdServingOptimizationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdServingOptimizationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdServingOptimizationStatusEnum): google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum;

                        /**
                         * Encodes the specified AdServingOptimizationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum.verify|verify} messages.
                         * @param message AdServingOptimizationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdServingOptimizationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdServingOptimizationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum.verify|verify} messages.
                         * @param message AdServingOptimizationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdServingOptimizationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdServingOptimizationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdServingOptimizationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum;

                        /**
                         * Decodes an AdServingOptimizationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdServingOptimizationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum;

                        /**
                         * Verifies an AdServingOptimizationStatusEnum message.
                         * @param message Plain 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 AdServingOptimizationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdServingOptimizationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum;

                        /**
                         * Creates a plain object from an AdServingOptimizationStatusEnum message. Also converts values to other types if specified.
                         * @param message AdServingOptimizationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdServingOptimizationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdServingOptimizationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdServingOptimizationStatusEnum {

                        /** AdServingOptimizationStatus enum. */
                        enum AdServingOptimizationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPTIMIZE = 2,
                            CONVERSION_OPTIMIZE = 3,
                            ROTATE = 4,
                            ROTATE_INDEFINITELY = 5,
                            UNAVAILABLE = 6
                        }
                    }

                    /** Properties of an AdStrengthEnum. */
                    interface IAdStrengthEnum {
                    }

                    /** Represents an AdStrengthEnum. */
                    class AdStrengthEnum implements IAdStrengthEnum {

                        /**
                         * Constructs a new AdStrengthEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdStrengthEnum);

                        /**
                         * Creates a new AdStrengthEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdStrengthEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdStrengthEnum): google.ads.googleads.v23.enums.AdStrengthEnum;

                        /**
                         * Encodes the specified AdStrengthEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdStrengthEnum.verify|verify} messages.
                         * @param message AdStrengthEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdStrengthEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdStrengthEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdStrengthEnum.verify|verify} messages.
                         * @param message AdStrengthEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdStrengthEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdStrengthEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdStrengthEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdStrengthEnum;

                        /**
                         * Decodes an AdStrengthEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdStrengthEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdStrengthEnum;

                        /**
                         * Verifies an AdStrengthEnum message.
                         * @param message Plain 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 AdStrengthEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdStrengthEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdStrengthEnum;

                        /**
                         * Creates a plain object from an AdStrengthEnum message. Also converts values to other types if specified.
                         * @param message AdStrengthEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdStrengthEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdStrengthEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdStrengthEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdStrengthEnum {

                        /** AdStrength enum. */
                        enum AdStrength {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            NO_ADS = 3,
                            POOR = 4,
                            AVERAGE = 5,
                            GOOD = 6,
                            EXCELLENT = 7
                        }
                    }

                    /** Properties of an AdStrengthActionItemTypeEnum. */
                    interface IAdStrengthActionItemTypeEnum {
                    }

                    /** Represents an AdStrengthActionItemTypeEnum. */
                    class AdStrengthActionItemTypeEnum implements IAdStrengthActionItemTypeEnum {

                        /**
                         * Constructs a new AdStrengthActionItemTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdStrengthActionItemTypeEnum);

                        /**
                         * Creates a new AdStrengthActionItemTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdStrengthActionItemTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdStrengthActionItemTypeEnum): google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum;

                        /**
                         * Encodes the specified AdStrengthActionItemTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum.verify|verify} messages.
                         * @param message AdStrengthActionItemTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdStrengthActionItemTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdStrengthActionItemTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum.verify|verify} messages.
                         * @param message AdStrengthActionItemTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdStrengthActionItemTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdStrengthActionItemTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdStrengthActionItemTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum;

                        /**
                         * Decodes an AdStrengthActionItemTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdStrengthActionItemTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum;

                        /**
                         * Verifies an AdStrengthActionItemTypeEnum message.
                         * @param message Plain 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 AdStrengthActionItemTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdStrengthActionItemTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum;

                        /**
                         * Creates a plain object from an AdStrengthActionItemTypeEnum message. Also converts values to other types if specified.
                         * @param message AdStrengthActionItemTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdStrengthActionItemTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdStrengthActionItemTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdStrengthActionItemTypeEnum {

                        /** AdStrengthActionItemType enum. */
                        enum AdStrengthActionItemType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADD_ASSET = 2
                        }
                    }

                    /** Properties of an AdTypeEnum. */
                    interface IAdTypeEnum {
                    }

                    /** Represents an AdTypeEnum. */
                    class AdTypeEnum implements IAdTypeEnum {

                        /**
                         * Constructs a new AdTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAdTypeEnum);

                        /**
                         * Creates a new AdTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAdTypeEnum): google.ads.googleads.v23.enums.AdTypeEnum;

                        /**
                         * Encodes the specified AdTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AdTypeEnum.verify|verify} messages.
                         * @param message AdTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAdTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AdTypeEnum.verify|verify} messages.
                         * @param message AdTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAdTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AdTypeEnum;

                        /**
                         * Decodes an AdTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AdTypeEnum;

                        /**
                         * Verifies an AdTypeEnum message.
                         * @param message Plain 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 AdTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AdTypeEnum;

                        /**
                         * Creates a plain object from an AdTypeEnum message. Also converts values to other types if specified.
                         * @param message AdTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AdTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdTypeEnum {

                        /** AdType enum. */
                        enum AdType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TEXT_AD = 2,
                            EXPANDED_TEXT_AD = 3,
                            EXPANDED_DYNAMIC_SEARCH_AD = 7,
                            HOTEL_AD = 8,
                            SHOPPING_SMART_AD = 9,
                            SHOPPING_PRODUCT_AD = 10,
                            VIDEO_AD = 12,
                            IMAGE_AD = 14,
                            RESPONSIVE_SEARCH_AD = 15,
                            LEGACY_RESPONSIVE_DISPLAY_AD = 16,
                            APP_AD = 17,
                            LEGACY_APP_INSTALL_AD = 18,
                            RESPONSIVE_DISPLAY_AD = 19,
                            LOCAL_AD = 20,
                            HTML5_UPLOAD_AD = 21,
                            DYNAMIC_HTML5_AD = 22,
                            APP_ENGAGEMENT_AD = 23,
                            SHOPPING_COMPARISON_LISTING_AD = 24,
                            VIDEO_BUMPER_AD = 25,
                            VIDEO_NON_SKIPPABLE_IN_STREAM_AD = 26,
                            VIDEO_TRUEVIEW_IN_STREAM_AD = 29,
                            VIDEO_RESPONSIVE_AD = 30,
                            SMART_CAMPAIGN_AD = 31,
                            CALL_AD = 32,
                            APP_PRE_REGISTRATION_AD = 33,
                            IN_FEED_VIDEO_AD = 34,
                            DEMAND_GEN_MULTI_ASSET_AD = 40,
                            DEMAND_GEN_CAROUSEL_AD = 41,
                            TRAVEL_AD = 37,
                            DEMAND_GEN_VIDEO_RESPONSIVE_AD = 42,
                            DEMAND_GEN_PRODUCT_AD = 39,
                            YOUTUBE_AUDIO_AD = 44
                        }
                    }

                    /** Properties of an AndroidPrivacyInteractionTypeEnum. */
                    interface IAndroidPrivacyInteractionTypeEnum {
                    }

                    /** Represents an AndroidPrivacyInteractionTypeEnum. */
                    class AndroidPrivacyInteractionTypeEnum implements IAndroidPrivacyInteractionTypeEnum {

                        /**
                         * Constructs a new AndroidPrivacyInteractionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAndroidPrivacyInteractionTypeEnum);

                        /**
                         * Creates a new AndroidPrivacyInteractionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AndroidPrivacyInteractionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAndroidPrivacyInteractionTypeEnum): google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum;

                        /**
                         * Encodes the specified AndroidPrivacyInteractionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.verify|verify} messages.
                         * @param message AndroidPrivacyInteractionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAndroidPrivacyInteractionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AndroidPrivacyInteractionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.verify|verify} messages.
                         * @param message AndroidPrivacyInteractionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAndroidPrivacyInteractionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AndroidPrivacyInteractionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AndroidPrivacyInteractionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum;

                        /**
                         * Decodes an AndroidPrivacyInteractionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AndroidPrivacyInteractionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum;

                        /**
                         * Verifies an AndroidPrivacyInteractionTypeEnum message.
                         * @param message Plain 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 AndroidPrivacyInteractionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AndroidPrivacyInteractionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum;

                        /**
                         * Creates a plain object from an AndroidPrivacyInteractionTypeEnum message. Also converts values to other types if specified.
                         * @param message AndroidPrivacyInteractionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AndroidPrivacyInteractionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AndroidPrivacyInteractionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AndroidPrivacyInteractionTypeEnum {

                        /** AndroidPrivacyInteractionType enum. */
                        enum AndroidPrivacyInteractionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CLICK = 2,
                            ENGAGED_VIEW = 3,
                            VIEW = 4
                        }
                    }

                    /** Properties of an AndroidPrivacyNetworkTypeEnum. */
                    interface IAndroidPrivacyNetworkTypeEnum {
                    }

                    /** Represents an AndroidPrivacyNetworkTypeEnum. */
                    class AndroidPrivacyNetworkTypeEnum implements IAndroidPrivacyNetworkTypeEnum {

                        /**
                         * Constructs a new AndroidPrivacyNetworkTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAndroidPrivacyNetworkTypeEnum);

                        /**
                         * Creates a new AndroidPrivacyNetworkTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AndroidPrivacyNetworkTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAndroidPrivacyNetworkTypeEnum): google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum;

                        /**
                         * Encodes the specified AndroidPrivacyNetworkTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.verify|verify} messages.
                         * @param message AndroidPrivacyNetworkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAndroidPrivacyNetworkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AndroidPrivacyNetworkTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.verify|verify} messages.
                         * @param message AndroidPrivacyNetworkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAndroidPrivacyNetworkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AndroidPrivacyNetworkTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AndroidPrivacyNetworkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum;

                        /**
                         * Decodes an AndroidPrivacyNetworkTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AndroidPrivacyNetworkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum;

                        /**
                         * Verifies an AndroidPrivacyNetworkTypeEnum message.
                         * @param message Plain 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 AndroidPrivacyNetworkTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AndroidPrivacyNetworkTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum;

                        /**
                         * Creates a plain object from an AndroidPrivacyNetworkTypeEnum message. Also converts values to other types if specified.
                         * @param message AndroidPrivacyNetworkTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AndroidPrivacyNetworkTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AndroidPrivacyNetworkTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AndroidPrivacyNetworkTypeEnum {

                        /** AndroidPrivacyNetworkType enum. */
                        enum AndroidPrivacyNetworkType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEARCH = 2,
                            DISPLAY = 3,
                            YOUTUBE = 4
                        }
                    }

                    /** Properties of an AppBiddingGoalEnum. */
                    interface IAppBiddingGoalEnum {
                    }

                    /** Represents an AppBiddingGoalEnum. */
                    class AppBiddingGoalEnum implements IAppBiddingGoalEnum {

                        /**
                         * Constructs a new AppBiddingGoalEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAppBiddingGoalEnum);

                        /**
                         * Creates a new AppBiddingGoalEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppBiddingGoalEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAppBiddingGoalEnum): google.ads.googleads.v23.enums.AppBiddingGoalEnum;

                        /**
                         * Encodes the specified AppBiddingGoalEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AppBiddingGoalEnum.verify|verify} messages.
                         * @param message AppBiddingGoalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAppBiddingGoalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppBiddingGoalEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AppBiddingGoalEnum.verify|verify} messages.
                         * @param message AppBiddingGoalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAppBiddingGoalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppBiddingGoalEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppBiddingGoalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AppBiddingGoalEnum;

                        /**
                         * Decodes an AppBiddingGoalEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppBiddingGoalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AppBiddingGoalEnum;

                        /**
                         * Verifies an AppBiddingGoalEnum message.
                         * @param message Plain 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 AppBiddingGoalEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppBiddingGoalEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AppBiddingGoalEnum;

                        /**
                         * Creates a plain object from an AppBiddingGoalEnum message. Also converts values to other types if specified.
                         * @param message AppBiddingGoalEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AppBiddingGoalEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppBiddingGoalEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppBiddingGoalEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AppBiddingGoalEnum {

                        /** AppBiddingGoal enum. */
                        enum AppBiddingGoal {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPTIMIZE_FOR_INSTALL_CONVERSION_VOLUME = 2,
                            OPTIMIZE_FOR_IN_APP_CONVERSION_VOLUME = 3,
                            OPTIMIZE_FOR_TOTAL_CONVERSION_VALUE = 4,
                            OPTIMIZE_FOR_TARGET_IN_APP_CONVERSION = 5,
                            OPTIMIZE_FOR_RETURN_ON_ADVERTISING_SPEND = 6,
                            OPTIMIZE_FOR_INSTALL_CONVERSION_VOLUME_WITHOUT_TARGET_CPI = 7,
                            OPTIMIZE_FOR_PRE_REGISTRATION_CONVERSION_VOLUME = 8
                        }
                    }

                    /** Properties of an AppCampaignAppStoreEnum. */
                    interface IAppCampaignAppStoreEnum {
                    }

                    /** Represents an AppCampaignAppStoreEnum. */
                    class AppCampaignAppStoreEnum implements IAppCampaignAppStoreEnum {

                        /**
                         * Constructs a new AppCampaignAppStoreEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAppCampaignAppStoreEnum);

                        /**
                         * Creates a new AppCampaignAppStoreEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppCampaignAppStoreEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAppCampaignAppStoreEnum): google.ads.googleads.v23.enums.AppCampaignAppStoreEnum;

                        /**
                         * Encodes the specified AppCampaignAppStoreEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AppCampaignAppStoreEnum.verify|verify} messages.
                         * @param message AppCampaignAppStoreEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAppCampaignAppStoreEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppCampaignAppStoreEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AppCampaignAppStoreEnum.verify|verify} messages.
                         * @param message AppCampaignAppStoreEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAppCampaignAppStoreEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppCampaignAppStoreEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppCampaignAppStoreEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AppCampaignAppStoreEnum;

                        /**
                         * Decodes an AppCampaignAppStoreEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppCampaignAppStoreEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AppCampaignAppStoreEnum;

                        /**
                         * Verifies an AppCampaignAppStoreEnum message.
                         * @param message Plain 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 AppCampaignAppStoreEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppCampaignAppStoreEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AppCampaignAppStoreEnum;

                        /**
                         * Creates a plain object from an AppCampaignAppStoreEnum message. Also converts values to other types if specified.
                         * @param message AppCampaignAppStoreEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AppCampaignAppStoreEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppCampaignAppStoreEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppCampaignAppStoreEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AppCampaignAppStoreEnum {

                        /** AppCampaignAppStore enum. */
                        enum AppCampaignAppStore {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPLE_APP_STORE = 2,
                            GOOGLE_APP_STORE = 3
                        }
                    }

                    /** Properties of an AppCampaignBiddingStrategyGoalTypeEnum. */
                    interface IAppCampaignBiddingStrategyGoalTypeEnum {
                    }

                    /** Represents an AppCampaignBiddingStrategyGoalTypeEnum. */
                    class AppCampaignBiddingStrategyGoalTypeEnum implements IAppCampaignBiddingStrategyGoalTypeEnum {

                        /**
                         * Constructs a new AppCampaignBiddingStrategyGoalTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAppCampaignBiddingStrategyGoalTypeEnum);

                        /**
                         * Creates a new AppCampaignBiddingStrategyGoalTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppCampaignBiddingStrategyGoalTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAppCampaignBiddingStrategyGoalTypeEnum): google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum;

                        /**
                         * Encodes the specified AppCampaignBiddingStrategyGoalTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum.verify|verify} messages.
                         * @param message AppCampaignBiddingStrategyGoalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAppCampaignBiddingStrategyGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppCampaignBiddingStrategyGoalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum.verify|verify} messages.
                         * @param message AppCampaignBiddingStrategyGoalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAppCampaignBiddingStrategyGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppCampaignBiddingStrategyGoalTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppCampaignBiddingStrategyGoalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum;

                        /**
                         * Decodes an AppCampaignBiddingStrategyGoalTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppCampaignBiddingStrategyGoalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum;

                        /**
                         * Verifies an AppCampaignBiddingStrategyGoalTypeEnum message.
                         * @param message Plain 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 AppCampaignBiddingStrategyGoalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppCampaignBiddingStrategyGoalTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum;

                        /**
                         * Creates a plain object from an AppCampaignBiddingStrategyGoalTypeEnum message. Also converts values to other types if specified.
                         * @param message AppCampaignBiddingStrategyGoalTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppCampaignBiddingStrategyGoalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppCampaignBiddingStrategyGoalTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AppCampaignBiddingStrategyGoalTypeEnum {

                        /** AppCampaignBiddingStrategyGoalType enum. */
                        enum AppCampaignBiddingStrategyGoalType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPTIMIZE_INSTALLS_TARGET_INSTALL_COST = 2,
                            OPTIMIZE_IN_APP_CONVERSIONS_TARGET_INSTALL_COST = 3,
                            OPTIMIZE_IN_APP_CONVERSIONS_TARGET_CONVERSION_COST = 4,
                            OPTIMIZE_RETURN_ON_ADVERTISING_SPEND = 5,
                            OPTIMIZE_PRE_REGISTRATION_CONVERSION_VOLUME = 6,
                            OPTIMIZE_INSTALLS_WITHOUT_TARGET_INSTALL_COST = 7,
                            OPTIMIZE_IN_APP_CONVERSIONS_WITHOUT_TARGET_CPA = 8,
                            OPTIMIZE_TOTAL_VALUE_WITHOUT_TARGET_ROAS = 9
                        }
                    }

                    /** Properties of an AssetAutomationStatusEnum. */
                    interface IAssetAutomationStatusEnum {
                    }

                    /** Represents an AssetAutomationStatusEnum. */
                    class AssetAutomationStatusEnum implements IAssetAutomationStatusEnum {

                        /**
                         * Constructs a new AssetAutomationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetAutomationStatusEnum);

                        /**
                         * Creates a new AssetAutomationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetAutomationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetAutomationStatusEnum): google.ads.googleads.v23.enums.AssetAutomationStatusEnum;

                        /**
                         * Encodes the specified AssetAutomationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetAutomationStatusEnum.verify|verify} messages.
                         * @param message AssetAutomationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetAutomationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetAutomationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetAutomationStatusEnum.verify|verify} messages.
                         * @param message AssetAutomationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetAutomationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetAutomationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetAutomationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetAutomationStatusEnum;

                        /**
                         * Decodes an AssetAutomationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetAutomationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetAutomationStatusEnum;

                        /**
                         * Verifies an AssetAutomationStatusEnum message.
                         * @param message Plain 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 AssetAutomationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetAutomationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetAutomationStatusEnum;

                        /**
                         * Creates a plain object from an AssetAutomationStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetAutomationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetAutomationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetAutomationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetAutomationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetAutomationStatusEnum {

                        /** AssetAutomationStatus enum. */
                        enum AssetAutomationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPTED_IN = 2,
                            OPTED_OUT = 3
                        }
                    }

                    /** Properties of an AssetAutomationTypeEnum. */
                    interface IAssetAutomationTypeEnum {
                    }

                    /** Represents an AssetAutomationTypeEnum. */
                    class AssetAutomationTypeEnum implements IAssetAutomationTypeEnum {

                        /**
                         * Constructs a new AssetAutomationTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetAutomationTypeEnum);

                        /**
                         * Creates a new AssetAutomationTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetAutomationTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetAutomationTypeEnum): google.ads.googleads.v23.enums.AssetAutomationTypeEnum;

                        /**
                         * Encodes the specified AssetAutomationTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetAutomationTypeEnum.verify|verify} messages.
                         * @param message AssetAutomationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetAutomationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetAutomationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetAutomationTypeEnum.verify|verify} messages.
                         * @param message AssetAutomationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetAutomationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetAutomationTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetAutomationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetAutomationTypeEnum;

                        /**
                         * Decodes an AssetAutomationTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetAutomationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetAutomationTypeEnum;

                        /**
                         * Verifies an AssetAutomationTypeEnum message.
                         * @param message Plain 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 AssetAutomationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetAutomationTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetAutomationTypeEnum;

                        /**
                         * Creates a plain object from an AssetAutomationTypeEnum message. Also converts values to other types if specified.
                         * @param message AssetAutomationTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetAutomationTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetAutomationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetAutomationTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetAutomationTypeEnum {

                        /** AssetAutomationType enum. */
                        enum AssetAutomationType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TEXT_ASSET_AUTOMATION = 2,
                            GENERATE_VERTICAL_YOUTUBE_VIDEOS = 3,
                            GENERATE_SHORTER_YOUTUBE_VIDEOS = 4,
                            GENERATE_LANDING_PAGE_PREVIEW = 5,
                            GENERATE_ENHANCED_YOUTUBE_VIDEOS = 6,
                            GENERATE_IMAGE_ENHANCEMENT = 7,
                            GENERATE_IMAGE_EXTRACTION = 9,
                            GENERATE_DESIGN_VERSIONS_FOR_IMAGES = 10,
                            FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION = 11,
                            GENERATE_VIDEOS_FROM_OTHER_ASSETS = 12
                        }
                    }

                    /** Properties of an AssetCoverageVideoAspectRatioRequirementEnum. */
                    interface IAssetCoverageVideoAspectRatioRequirementEnum {
                    }

                    /** Represents an AssetCoverageVideoAspectRatioRequirementEnum. */
                    class AssetCoverageVideoAspectRatioRequirementEnum implements IAssetCoverageVideoAspectRatioRequirementEnum {

                        /**
                         * Constructs a new AssetCoverageVideoAspectRatioRequirementEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetCoverageVideoAspectRatioRequirementEnum);

                        /**
                         * Creates a new AssetCoverageVideoAspectRatioRequirementEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetCoverageVideoAspectRatioRequirementEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetCoverageVideoAspectRatioRequirementEnum): google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum;

                        /**
                         * Encodes the specified AssetCoverageVideoAspectRatioRequirementEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum.verify|verify} messages.
                         * @param message AssetCoverageVideoAspectRatioRequirementEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetCoverageVideoAspectRatioRequirementEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetCoverageVideoAspectRatioRequirementEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum.verify|verify} messages.
                         * @param message AssetCoverageVideoAspectRatioRequirementEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetCoverageVideoAspectRatioRequirementEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetCoverageVideoAspectRatioRequirementEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetCoverageVideoAspectRatioRequirementEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum;

                        /**
                         * Decodes an AssetCoverageVideoAspectRatioRequirementEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetCoverageVideoAspectRatioRequirementEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum;

                        /**
                         * Verifies an AssetCoverageVideoAspectRatioRequirementEnum message.
                         * @param message Plain 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 AssetCoverageVideoAspectRatioRequirementEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetCoverageVideoAspectRatioRequirementEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum;

                        /**
                         * Creates a plain object from an AssetCoverageVideoAspectRatioRequirementEnum message. Also converts values to other types if specified.
                         * @param message AssetCoverageVideoAspectRatioRequirementEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetCoverageVideoAspectRatioRequirementEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetCoverageVideoAspectRatioRequirementEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetCoverageVideoAspectRatioRequirementEnum {

                        /** AssetCoverageVideoAspectRatioRequirement enum. */
                        enum AssetCoverageVideoAspectRatioRequirement {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HORIZONTAL = 2,
                            SQUARE = 3,
                            VERTICAL = 4
                        }
                    }

                    /** Properties of an AssetFieldTypeEnum. */
                    interface IAssetFieldTypeEnum {
                    }

                    /** Represents an AssetFieldTypeEnum. */
                    class AssetFieldTypeEnum implements IAssetFieldTypeEnum {

                        /**
                         * Constructs a new AssetFieldTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetFieldTypeEnum);

                        /**
                         * Creates a new AssetFieldTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetFieldTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetFieldTypeEnum): google.ads.googleads.v23.enums.AssetFieldTypeEnum;

                        /**
                         * Encodes the specified AssetFieldTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetFieldTypeEnum.verify|verify} messages.
                         * @param message AssetFieldTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetFieldTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetFieldTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetFieldTypeEnum.verify|verify} messages.
                         * @param message AssetFieldTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetFieldTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetFieldTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetFieldTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetFieldTypeEnum;

                        /**
                         * Decodes an AssetFieldTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetFieldTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetFieldTypeEnum;

                        /**
                         * Verifies an AssetFieldTypeEnum message.
                         * @param message Plain 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 AssetFieldTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetFieldTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetFieldTypeEnum;

                        /**
                         * Creates a plain object from an AssetFieldTypeEnum message. Also converts values to other types if specified.
                         * @param message AssetFieldTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetFieldTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetFieldTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetFieldTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetFieldTypeEnum {

                        /** AssetFieldType enum. */
                        enum AssetFieldType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HEADLINE = 2,
                            DESCRIPTION = 3,
                            MANDATORY_AD_TEXT = 4,
                            MARKETING_IMAGE = 5,
                            MEDIA_BUNDLE = 6,
                            YOUTUBE_VIDEO = 7,
                            BOOK_ON_GOOGLE = 8,
                            LEAD_FORM = 9,
                            PROMOTION = 10,
                            CALLOUT = 11,
                            STRUCTURED_SNIPPET = 12,
                            SITELINK = 13,
                            MOBILE_APP = 14,
                            HOTEL_CALLOUT = 15,
                            CALL = 16,
                            PRICE = 24,
                            LONG_HEADLINE = 17,
                            BUSINESS_NAME = 18,
                            SQUARE_MARKETING_IMAGE = 19,
                            PORTRAIT_MARKETING_IMAGE = 20,
                            LOGO = 21,
                            LANDSCAPE_LOGO = 22,
                            VIDEO = 23,
                            CALL_TO_ACTION_SELECTION = 25,
                            AD_IMAGE = 26,
                            BUSINESS_LOGO = 27,
                            HOTEL_PROPERTY = 28,
                            DEMAND_GEN_CAROUSEL_CARD = 30,
                            BUSINESS_MESSAGE = 31,
                            TALL_PORTRAIT_MARKETING_IMAGE = 32,
                            RELATED_YOUTUBE_VIDEOS = 33,
                            LANDING_PAGE_PREVIEW = 38,
                            LONG_DESCRIPTION = 39,
                            CALL_TO_ACTION = 40
                        }
                    }

                    /** Properties of an AssetGroupPrimaryStatusEnum. */
                    interface IAssetGroupPrimaryStatusEnum {
                    }

                    /** Represents an AssetGroupPrimaryStatusEnum. */
                    class AssetGroupPrimaryStatusEnum implements IAssetGroupPrimaryStatusEnum {

                        /**
                         * Constructs a new AssetGroupPrimaryStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusEnum);

                        /**
                         * Creates a new AssetGroupPrimaryStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupPrimaryStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusEnum): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum;

                        /**
                         * Encodes the specified AssetGroupPrimaryStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum.verify|verify} messages.
                         * @param message AssetGroupPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupPrimaryStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum.verify|verify} messages.
                         * @param message AssetGroupPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupPrimaryStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum;

                        /**
                         * Decodes an AssetGroupPrimaryStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum;

                        /**
                         * Verifies an AssetGroupPrimaryStatusEnum message.
                         * @param message Plain 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 AssetGroupPrimaryStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupPrimaryStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum;

                        /**
                         * Creates a plain object from an AssetGroupPrimaryStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupPrimaryStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupPrimaryStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupPrimaryStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupPrimaryStatusEnum {

                        /** AssetGroupPrimaryStatus enum. */
                        enum AssetGroupPrimaryStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            PAUSED = 3,
                            REMOVED = 4,
                            NOT_ELIGIBLE = 5,
                            LIMITED = 6,
                            PENDING = 7
                        }
                    }

                    /** Properties of an AssetGroupPrimaryStatusReasonEnum. */
                    interface IAssetGroupPrimaryStatusReasonEnum {
                    }

                    /** Represents an AssetGroupPrimaryStatusReasonEnum. */
                    class AssetGroupPrimaryStatusReasonEnum implements IAssetGroupPrimaryStatusReasonEnum {

                        /**
                         * Constructs a new AssetGroupPrimaryStatusReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusReasonEnum);

                        /**
                         * Creates a new AssetGroupPrimaryStatusReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupPrimaryStatusReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusReasonEnum): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum;

                        /**
                         * Encodes the specified AssetGroupPrimaryStatusReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AssetGroupPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupPrimaryStatusReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message AssetGroupPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetGroupPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupPrimaryStatusReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum;

                        /**
                         * Decodes an AssetGroupPrimaryStatusReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum;

                        /**
                         * Verifies an AssetGroupPrimaryStatusReasonEnum message.
                         * @param message Plain 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 AssetGroupPrimaryStatusReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupPrimaryStatusReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum;

                        /**
                         * Creates a plain object from an AssetGroupPrimaryStatusReasonEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupPrimaryStatusReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupPrimaryStatusReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupPrimaryStatusReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupPrimaryStatusReasonEnum {

                        /** AssetGroupPrimaryStatusReason enum. */
                        enum AssetGroupPrimaryStatusReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ASSET_GROUP_PAUSED = 2,
                            ASSET_GROUP_REMOVED = 3,
                            CAMPAIGN_REMOVED = 4,
                            CAMPAIGN_PAUSED = 5,
                            CAMPAIGN_PENDING = 6,
                            CAMPAIGN_ENDED = 7,
                            ASSET_GROUP_LIMITED = 8,
                            ASSET_GROUP_DISAPPROVED = 9,
                            ASSET_GROUP_UNDER_REVIEW = 10
                        }
                    }

                    /** Properties of an AssetGroupSignalApprovalStatusEnum. */
                    interface IAssetGroupSignalApprovalStatusEnum {
                    }

                    /** Represents an AssetGroupSignalApprovalStatusEnum. */
                    class AssetGroupSignalApprovalStatusEnum implements IAssetGroupSignalApprovalStatusEnum {

                        /**
                         * Constructs a new AssetGroupSignalApprovalStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetGroupSignalApprovalStatusEnum);

                        /**
                         * Creates a new AssetGroupSignalApprovalStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupSignalApprovalStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetGroupSignalApprovalStatusEnum): google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum;

                        /**
                         * Encodes the specified AssetGroupSignalApprovalStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum.verify|verify} messages.
                         * @param message AssetGroupSignalApprovalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetGroupSignalApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupSignalApprovalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum.verify|verify} messages.
                         * @param message AssetGroupSignalApprovalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetGroupSignalApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupSignalApprovalStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupSignalApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum;

                        /**
                         * Decodes an AssetGroupSignalApprovalStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupSignalApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum;

                        /**
                         * Verifies an AssetGroupSignalApprovalStatusEnum message.
                         * @param message Plain 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 AssetGroupSignalApprovalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupSignalApprovalStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum;

                        /**
                         * Creates a plain object from an AssetGroupSignalApprovalStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupSignalApprovalStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupSignalApprovalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupSignalApprovalStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupSignalApprovalStatusEnum {

                        /** AssetGroupSignalApprovalStatus enum. */
                        enum AssetGroupSignalApprovalStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPROVED = 2,
                            LIMITED = 3,
                            DISAPPROVED = 4,
                            UNDER_REVIEW = 5
                        }
                    }

                    /** Properties of an AssetGroupStatusEnum. */
                    interface IAssetGroupStatusEnum {
                    }

                    /** Represents an AssetGroupStatusEnum. */
                    class AssetGroupStatusEnum implements IAssetGroupStatusEnum {

                        /**
                         * Constructs a new AssetGroupStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetGroupStatusEnum);

                        /**
                         * Creates a new AssetGroupStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetGroupStatusEnum): google.ads.googleads.v23.enums.AssetGroupStatusEnum;

                        /**
                         * Encodes the specified AssetGroupStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupStatusEnum.verify|verify} messages.
                         * @param message AssetGroupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetGroupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetGroupStatusEnum.verify|verify} messages.
                         * @param message AssetGroupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetGroupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetGroupStatusEnum;

                        /**
                         * Decodes an AssetGroupStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetGroupStatusEnum;

                        /**
                         * Verifies an AssetGroupStatusEnum message.
                         * @param message Plain 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 AssetGroupStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetGroupStatusEnum;

                        /**
                         * Creates a plain object from an AssetGroupStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetGroupStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupStatusEnum {

                        /** AssetGroupStatus enum. */
                        enum AssetGroupStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of an AssetLinkStatusEnum. */
                    interface IAssetLinkStatusEnum {
                    }

                    /** Represents an AssetLinkStatusEnum. */
                    class AssetLinkStatusEnum implements IAssetLinkStatusEnum {

                        /**
                         * Constructs a new AssetLinkStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetLinkStatusEnum);

                        /**
                         * Creates a new AssetLinkStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetLinkStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetLinkStatusEnum): google.ads.googleads.v23.enums.AssetLinkStatusEnum;

                        /**
                         * Encodes the specified AssetLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetLinkStatusEnum.verify|verify} messages.
                         * @param message AssetLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetLinkStatusEnum.verify|verify} messages.
                         * @param message AssetLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetLinkStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetLinkStatusEnum;

                        /**
                         * Decodes an AssetLinkStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetLinkStatusEnum;

                        /**
                         * Verifies an AssetLinkStatusEnum message.
                         * @param message Plain 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 AssetLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetLinkStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetLinkStatusEnum;

                        /**
                         * Creates a plain object from an AssetLinkStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetLinkStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetLinkStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetLinkStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetLinkStatusEnum {

                        /** AssetLinkStatus enum. */
                        enum AssetLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3,
                            PAUSED = 4
                        }
                    }

                    /** Properties of an AssetOrientationEnum. */
                    interface IAssetOrientationEnum {
                    }

                    /** Represents an AssetOrientationEnum. */
                    class AssetOrientationEnum implements IAssetOrientationEnum {

                        /**
                         * Constructs a new AssetOrientationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetOrientationEnum);

                        /**
                         * Creates a new AssetOrientationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetOrientationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetOrientationEnum): google.ads.googleads.v23.enums.AssetOrientationEnum;

                        /**
                         * Encodes the specified AssetOrientationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetOrientationEnum.verify|verify} messages.
                         * @param message AssetOrientationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetOrientationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetOrientationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetOrientationEnum.verify|verify} messages.
                         * @param message AssetOrientationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetOrientationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetOrientationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetOrientationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetOrientationEnum;

                        /**
                         * Decodes an AssetOrientationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetOrientationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetOrientationEnum;

                        /**
                         * Verifies an AssetOrientationEnum message.
                         * @param message Plain 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 AssetOrientationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetOrientationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetOrientationEnum;

                        /**
                         * Creates a plain object from an AssetOrientationEnum message. Also converts values to other types if specified.
                         * @param message AssetOrientationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetOrientationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetOrientationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetOrientationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetOrientationEnum {

                        /** AssetOrientation enum. */
                        enum AssetOrientation {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LANDSCAPE = 2,
                            PORTRAIT = 3,
                            SQUARE = 4
                        }
                    }

                    /** Properties of an AssetSetAssetStatusEnum. */
                    interface IAssetSetAssetStatusEnum {
                    }

                    /** Represents an AssetSetAssetStatusEnum. */
                    class AssetSetAssetStatusEnum implements IAssetSetAssetStatusEnum {

                        /**
                         * Constructs a new AssetSetAssetStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetSetAssetStatusEnum);

                        /**
                         * Creates a new AssetSetAssetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetAssetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetSetAssetStatusEnum): google.ads.googleads.v23.enums.AssetSetAssetStatusEnum;

                        /**
                         * Encodes the specified AssetSetAssetStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetAssetStatusEnum.verify|verify} messages.
                         * @param message AssetSetAssetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetSetAssetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetAssetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetAssetStatusEnum.verify|verify} messages.
                         * @param message AssetSetAssetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetSetAssetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetAssetStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetAssetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetSetAssetStatusEnum;

                        /**
                         * Decodes an AssetSetAssetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetAssetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetSetAssetStatusEnum;

                        /**
                         * Verifies an AssetSetAssetStatusEnum message.
                         * @param message Plain 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 AssetSetAssetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetAssetStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetSetAssetStatusEnum;

                        /**
                         * Creates a plain object from an AssetSetAssetStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetSetAssetStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetSetAssetStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetAssetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetAssetStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSetAssetStatusEnum {

                        /** AssetSetAssetStatus enum. */
                        enum AssetSetAssetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of an AssetSetLinkStatusEnum. */
                    interface IAssetSetLinkStatusEnum {
                    }

                    /** Represents an AssetSetLinkStatusEnum. */
                    class AssetSetLinkStatusEnum implements IAssetSetLinkStatusEnum {

                        /**
                         * Constructs a new AssetSetLinkStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetSetLinkStatusEnum);

                        /**
                         * Creates a new AssetSetLinkStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetLinkStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetSetLinkStatusEnum): google.ads.googleads.v23.enums.AssetSetLinkStatusEnum;

                        /**
                         * Encodes the specified AssetSetLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.verify|verify} messages.
                         * @param message AssetSetLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetSetLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.verify|verify} messages.
                         * @param message AssetSetLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetSetLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetLinkStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetSetLinkStatusEnum;

                        /**
                         * Decodes an AssetSetLinkStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetSetLinkStatusEnum;

                        /**
                         * Verifies an AssetSetLinkStatusEnum message.
                         * @param message Plain 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 AssetSetLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetLinkStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetSetLinkStatusEnum;

                        /**
                         * Creates a plain object from an AssetSetLinkStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetSetLinkStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetSetLinkStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetLinkStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSetLinkStatusEnum {

                        /** AssetSetLinkStatus enum. */
                        enum AssetSetLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of an AssetSetStatusEnum. */
                    interface IAssetSetStatusEnum {
                    }

                    /** Represents an AssetSetStatusEnum. */
                    class AssetSetStatusEnum implements IAssetSetStatusEnum {

                        /**
                         * Constructs a new AssetSetStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetSetStatusEnum);

                        /**
                         * Creates a new AssetSetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetSetStatusEnum): google.ads.googleads.v23.enums.AssetSetStatusEnum;

                        /**
                         * Encodes the specified AssetSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetStatusEnum.verify|verify} messages.
                         * @param message AssetSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetStatusEnum.verify|verify} messages.
                         * @param message AssetSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetSetStatusEnum;

                        /**
                         * Decodes an AssetSetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetSetStatusEnum;

                        /**
                         * Verifies an AssetSetStatusEnum message.
                         * @param message Plain 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 AssetSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetSetStatusEnum;

                        /**
                         * Creates a plain object from an AssetSetStatusEnum message. Also converts values to other types if specified.
                         * @param message AssetSetStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetSetStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSetStatusEnum {

                        /** AssetSetStatus enum. */
                        enum AssetSetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of an AssetSetTypeEnum. */
                    interface IAssetSetTypeEnum {
                    }

                    /** Represents an AssetSetTypeEnum. */
                    class AssetSetTypeEnum implements IAssetSetTypeEnum {

                        /**
                         * Constructs a new AssetSetTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetSetTypeEnum);

                        /**
                         * Creates a new AssetSetTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetSetTypeEnum): google.ads.googleads.v23.enums.AssetSetTypeEnum;

                        /**
                         * Encodes the specified AssetSetTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetTypeEnum.verify|verify} messages.
                         * @param message AssetSetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetSetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSetTypeEnum.verify|verify} messages.
                         * @param message AssetSetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetSetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetSetTypeEnum;

                        /**
                         * Decodes an AssetSetTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetSetTypeEnum;

                        /**
                         * Verifies an AssetSetTypeEnum message.
                         * @param message Plain 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 AssetSetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetSetTypeEnum;

                        /**
                         * Creates a plain object from an AssetSetTypeEnum message. Also converts values to other types if specified.
                         * @param message AssetSetTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetSetTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSetTypeEnum {

                        /** AssetSetType enum. */
                        enum AssetSetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PAGE_FEED = 2,
                            DYNAMIC_EDUCATION = 3,
                            MERCHANT_CENTER_FEED = 4,
                            DYNAMIC_REAL_ESTATE = 5,
                            DYNAMIC_CUSTOM = 6,
                            DYNAMIC_HOTELS_AND_RENTALS = 7,
                            DYNAMIC_FLIGHTS = 8,
                            DYNAMIC_TRAVEL = 9,
                            DYNAMIC_LOCAL = 10,
                            DYNAMIC_JOBS = 11,
                            LOCATION_SYNC = 12,
                            BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP = 13,
                            CHAIN_DYNAMIC_LOCATION_GROUP = 14,
                            STATIC_LOCATION_GROUP = 15,
                            HOTEL_PROPERTY = 16,
                            TRAVEL_FEED = 17
                        }
                    }

                    /** Properties of an AssetSourceEnum. */
                    interface IAssetSourceEnum {
                    }

                    /** Represents an AssetSourceEnum. */
                    class AssetSourceEnum implements IAssetSourceEnum {

                        /**
                         * Constructs a new AssetSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetSourceEnum);

                        /**
                         * Creates a new AssetSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetSourceEnum): google.ads.googleads.v23.enums.AssetSourceEnum;

                        /**
                         * Encodes the specified AssetSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSourceEnum.verify|verify} messages.
                         * @param message AssetSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetSourceEnum.verify|verify} messages.
                         * @param message AssetSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetSourceEnum;

                        /**
                         * Decodes an AssetSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetSourceEnum;

                        /**
                         * Verifies an AssetSourceEnum message.
                         * @param message Plain 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 AssetSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetSourceEnum;

                        /**
                         * Creates a plain object from an AssetSourceEnum message. Also converts values to other types if specified.
                         * @param message AssetSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSourceEnum {

                        /** AssetSource enum. */
                        enum AssetSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADVERTISER = 2,
                            AUTOMATICALLY_CREATED = 3
                        }
                    }

                    /** Properties of an AssetTypeEnum. */
                    interface IAssetTypeEnum {
                    }

                    /** Represents an AssetTypeEnum. */
                    class AssetTypeEnum implements IAssetTypeEnum {

                        /**
                         * Constructs a new AssetTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAssetTypeEnum);

                        /**
                         * Creates a new AssetTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAssetTypeEnum): google.ads.googleads.v23.enums.AssetTypeEnum;

                        /**
                         * Encodes the specified AssetTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AssetTypeEnum.verify|verify} messages.
                         * @param message AssetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAssetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AssetTypeEnum.verify|verify} messages.
                         * @param message AssetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAssetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AssetTypeEnum;

                        /**
                         * Decodes an AssetTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AssetTypeEnum;

                        /**
                         * Verifies an AssetTypeEnum message.
                         * @param message Plain 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 AssetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AssetTypeEnum;

                        /**
                         * Creates a plain object from an AssetTypeEnum message. Also converts values to other types if specified.
                         * @param message AssetTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AssetTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetTypeEnum {

                        /** AssetType enum. */
                        enum AssetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            YOUTUBE_VIDEO = 2,
                            MEDIA_BUNDLE = 3,
                            IMAGE = 4,
                            TEXT = 5,
                            LEAD_FORM = 6,
                            BOOK_ON_GOOGLE = 7,
                            PROMOTION = 8,
                            CALLOUT = 9,
                            STRUCTURED_SNIPPET = 10,
                            SITELINK = 11,
                            PAGE_FEED = 12,
                            DYNAMIC_EDUCATION = 13,
                            MOBILE_APP = 14,
                            HOTEL_CALLOUT = 15,
                            CALL = 16,
                            PRICE = 17,
                            CALL_TO_ACTION = 18,
                            DYNAMIC_REAL_ESTATE = 19,
                            DYNAMIC_CUSTOM = 20,
                            DYNAMIC_HOTELS_AND_RENTALS = 21,
                            DYNAMIC_FLIGHTS = 22,
                            DYNAMIC_TRAVEL = 24,
                            DYNAMIC_LOCAL = 25,
                            DYNAMIC_JOBS = 26,
                            LOCATION = 27,
                            HOTEL_PROPERTY = 28,
                            DEMAND_GEN_CAROUSEL_CARD = 29,
                            BUSINESS_MESSAGE = 30,
                            APP_DEEP_LINK = 31,
                            YOUTUBE_VIDEO_LIST = 32
                        }
                    }

                    /** Properties of an AsyncActionStatusEnum. */
                    interface IAsyncActionStatusEnum {
                    }

                    /** Represents an AsyncActionStatusEnum. */
                    class AsyncActionStatusEnum implements IAsyncActionStatusEnum {

                        /**
                         * Constructs a new AsyncActionStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAsyncActionStatusEnum);

                        /**
                         * Creates a new AsyncActionStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AsyncActionStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAsyncActionStatusEnum): google.ads.googleads.v23.enums.AsyncActionStatusEnum;

                        /**
                         * Encodes the specified AsyncActionStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AsyncActionStatusEnum.verify|verify} messages.
                         * @param message AsyncActionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAsyncActionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AsyncActionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AsyncActionStatusEnum.verify|verify} messages.
                         * @param message AsyncActionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAsyncActionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AsyncActionStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AsyncActionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AsyncActionStatusEnum;

                        /**
                         * Decodes an AsyncActionStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AsyncActionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AsyncActionStatusEnum;

                        /**
                         * Verifies an AsyncActionStatusEnum message.
                         * @param message Plain 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 AsyncActionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AsyncActionStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AsyncActionStatusEnum;

                        /**
                         * Creates a plain object from an AsyncActionStatusEnum message. Also converts values to other types if specified.
                         * @param message AsyncActionStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AsyncActionStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AsyncActionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AsyncActionStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AsyncActionStatusEnum {

                        /** AsyncActionStatus enum. */
                        enum AsyncActionStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_STARTED = 2,
                            IN_PROGRESS = 3,
                            COMPLETED = 4,
                            FAILED = 5,
                            COMPLETED_WITH_WARNING = 6
                        }
                    }

                    /** Properties of an AttributionModelEnum. */
                    interface IAttributionModelEnum {
                    }

                    /** Represents an AttributionModelEnum. */
                    class AttributionModelEnum implements IAttributionModelEnum {

                        /**
                         * Constructs a new AttributionModelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAttributionModelEnum);

                        /**
                         * Creates a new AttributionModelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AttributionModelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAttributionModelEnum): google.ads.googleads.v23.enums.AttributionModelEnum;

                        /**
                         * Encodes the specified AttributionModelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AttributionModelEnum.verify|verify} messages.
                         * @param message AttributionModelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAttributionModelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AttributionModelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AttributionModelEnum.verify|verify} messages.
                         * @param message AttributionModelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAttributionModelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AttributionModelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AttributionModelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AttributionModelEnum;

                        /**
                         * Decodes an AttributionModelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AttributionModelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AttributionModelEnum;

                        /**
                         * Verifies an AttributionModelEnum message.
                         * @param message Plain 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 AttributionModelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AttributionModelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AttributionModelEnum;

                        /**
                         * Creates a plain object from an AttributionModelEnum message. Also converts values to other types if specified.
                         * @param message AttributionModelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AttributionModelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AttributionModelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AttributionModelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AttributionModelEnum {

                        /** AttributionModel enum. */
                        enum AttributionModel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXTERNAL = 100,
                            GOOGLE_ADS_LAST_CLICK = 101,
                            GOOGLE_SEARCH_ATTRIBUTION_FIRST_CLICK = 102,
                            GOOGLE_SEARCH_ATTRIBUTION_LINEAR = 103,
                            GOOGLE_SEARCH_ATTRIBUTION_TIME_DECAY = 104,
                            GOOGLE_SEARCH_ATTRIBUTION_POSITION_BASED = 105,
                            GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN = 106
                        }
                    }

                    /** Properties of an AudienceInsightsMarketingObjectiveEnum. */
                    interface IAudienceInsightsMarketingObjectiveEnum {
                    }

                    /** Represents an AudienceInsightsMarketingObjectiveEnum. */
                    class AudienceInsightsMarketingObjectiveEnum implements IAudienceInsightsMarketingObjectiveEnum {

                        /**
                         * Constructs a new AudienceInsightsMarketingObjectiveEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAudienceInsightsMarketingObjectiveEnum);

                        /**
                         * Creates a new AudienceInsightsMarketingObjectiveEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsMarketingObjectiveEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAudienceInsightsMarketingObjectiveEnum): google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum;

                        /**
                         * Encodes the specified AudienceInsightsMarketingObjectiveEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum.verify|verify} messages.
                         * @param message AudienceInsightsMarketingObjectiveEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAudienceInsightsMarketingObjectiveEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsMarketingObjectiveEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum.verify|verify} messages.
                         * @param message AudienceInsightsMarketingObjectiveEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAudienceInsightsMarketingObjectiveEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsMarketingObjectiveEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsMarketingObjectiveEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum;

                        /**
                         * Decodes an AudienceInsightsMarketingObjectiveEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsMarketingObjectiveEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum;

                        /**
                         * Verifies an AudienceInsightsMarketingObjectiveEnum message.
                         * @param message Plain 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 AudienceInsightsMarketingObjectiveEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsMarketingObjectiveEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum;

                        /**
                         * Creates a plain object from an AudienceInsightsMarketingObjectiveEnum message. Also converts values to other types if specified.
                         * @param message AudienceInsightsMarketingObjectiveEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsMarketingObjectiveEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsMarketingObjectiveEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AudienceInsightsMarketingObjectiveEnum {

                        /** AudienceInsightsMarketingObjective enum. */
                        enum AudienceInsightsMarketingObjective {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AWARENESS = 2,
                            CONSIDERATION = 3,
                            RESEARCH = 4
                        }
                    }

                    /** Properties of an AudienceScopeEnum. */
                    interface IAudienceScopeEnum {
                    }

                    /** Represents an AudienceScopeEnum. */
                    class AudienceScopeEnum implements IAudienceScopeEnum {

                        /**
                         * Constructs a new AudienceScopeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAudienceScopeEnum);

                        /**
                         * Creates a new AudienceScopeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceScopeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAudienceScopeEnum): google.ads.googleads.v23.enums.AudienceScopeEnum;

                        /**
                         * Encodes the specified AudienceScopeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceScopeEnum.verify|verify} messages.
                         * @param message AudienceScopeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAudienceScopeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceScopeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceScopeEnum.verify|verify} messages.
                         * @param message AudienceScopeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAudienceScopeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceScopeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceScopeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AudienceScopeEnum;

                        /**
                         * Decodes an AudienceScopeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceScopeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AudienceScopeEnum;

                        /**
                         * Verifies an AudienceScopeEnum message.
                         * @param message Plain 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 AudienceScopeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceScopeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AudienceScopeEnum;

                        /**
                         * Creates a plain object from an AudienceScopeEnum message. Also converts values to other types if specified.
                         * @param message AudienceScopeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AudienceScopeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceScopeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceScopeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AudienceScopeEnum {

                        /** AudienceScope enum. */
                        enum AudienceScope {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER = 2,
                            ASSET_GROUP = 3
                        }
                    }

                    /** Properties of an AudienceStatusEnum. */
                    interface IAudienceStatusEnum {
                    }

                    /** Represents an AudienceStatusEnum. */
                    class AudienceStatusEnum implements IAudienceStatusEnum {

                        /**
                         * Constructs a new AudienceStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IAudienceStatusEnum);

                        /**
                         * Creates a new AudienceStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IAudienceStatusEnum): google.ads.googleads.v23.enums.AudienceStatusEnum;

                        /**
                         * Encodes the specified AudienceStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceStatusEnum.verify|verify} messages.
                         * @param message AudienceStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.AudienceStatusEnum.verify|verify} messages.
                         * @param message AudienceStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.AudienceStatusEnum;

                        /**
                         * Decodes an AudienceStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.AudienceStatusEnum;

                        /**
                         * Verifies an AudienceStatusEnum message.
                         * @param message Plain 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 AudienceStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.AudienceStatusEnum;

                        /**
                         * Creates a plain object from an AudienceStatusEnum message. Also converts values to other types if specified.
                         * @param message AudienceStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.AudienceStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AudienceStatusEnum {

                        /** AudienceStatus enum. */
                        enum AudienceStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a BatchJobStatusEnum. */
                    interface IBatchJobStatusEnum {
                    }

                    /** Represents a BatchJobStatusEnum. */
                    class BatchJobStatusEnum implements IBatchJobStatusEnum {

                        /**
                         * Constructs a new BatchJobStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBatchJobStatusEnum);

                        /**
                         * Creates a new BatchJobStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJobStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBatchJobStatusEnum): google.ads.googleads.v23.enums.BatchJobStatusEnum;

                        /**
                         * Encodes the specified BatchJobStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BatchJobStatusEnum.verify|verify} messages.
                         * @param message BatchJobStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBatchJobStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BatchJobStatusEnum.verify|verify} messages.
                         * @param message BatchJobStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBatchJobStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BatchJobStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BatchJobStatusEnum;

                        /**
                         * Decodes a BatchJobStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BatchJobStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BatchJobStatusEnum;

                        /**
                         * Verifies a BatchJobStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BatchJobStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BatchJobStatusEnum;

                        /**
                         * Creates a plain object from a BatchJobStatusEnum message. Also converts values to other types if specified.
                         * @param message BatchJobStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BatchJobStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BatchJobStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BatchJobStatusEnum {

                        /** BatchJobStatus enum. */
                        enum BatchJobStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            RUNNING = 3,
                            DONE = 4
                        }
                    }

                    /** Properties of a BenchmarksMarketingObjectiveEnum. */
                    interface IBenchmarksMarketingObjectiveEnum {
                    }

                    /** Represents a BenchmarksMarketingObjectiveEnum. */
                    class BenchmarksMarketingObjectiveEnum implements IBenchmarksMarketingObjectiveEnum {

                        /**
                         * Constructs a new BenchmarksMarketingObjectiveEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBenchmarksMarketingObjectiveEnum);

                        /**
                         * Creates a new BenchmarksMarketingObjectiveEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BenchmarksMarketingObjectiveEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBenchmarksMarketingObjectiveEnum): google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum;

                        /**
                         * Encodes the specified BenchmarksMarketingObjectiveEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.verify|verify} messages.
                         * @param message BenchmarksMarketingObjectiveEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBenchmarksMarketingObjectiveEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BenchmarksMarketingObjectiveEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.verify|verify} messages.
                         * @param message BenchmarksMarketingObjectiveEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBenchmarksMarketingObjectiveEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BenchmarksMarketingObjectiveEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BenchmarksMarketingObjectiveEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum;

                        /**
                         * Decodes a BenchmarksMarketingObjectiveEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BenchmarksMarketingObjectiveEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum;

                        /**
                         * Verifies a BenchmarksMarketingObjectiveEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BenchmarksMarketingObjectiveEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BenchmarksMarketingObjectiveEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum;

                        /**
                         * Creates a plain object from a BenchmarksMarketingObjectiveEnum message. Also converts values to other types if specified.
                         * @param message BenchmarksMarketingObjectiveEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BenchmarksMarketingObjectiveEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BenchmarksMarketingObjectiveEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BenchmarksMarketingObjectiveEnum {

                        /** BenchmarksMarketingObjective enum. */
                        enum BenchmarksMarketingObjective {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AWARENESS = 2,
                            CONSIDERATION = 3,
                            ACTION = 4
                        }
                    }

                    /** Properties of a BenchmarksSourceTypeEnum. */
                    interface IBenchmarksSourceTypeEnum {
                    }

                    /** Represents a BenchmarksSourceTypeEnum. */
                    class BenchmarksSourceTypeEnum implements IBenchmarksSourceTypeEnum {

                        /**
                         * Constructs a new BenchmarksSourceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBenchmarksSourceTypeEnum);

                        /**
                         * Creates a new BenchmarksSourceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BenchmarksSourceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBenchmarksSourceTypeEnum): google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum;

                        /**
                         * Encodes the specified BenchmarksSourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.verify|verify} messages.
                         * @param message BenchmarksSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBenchmarksSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BenchmarksSourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.verify|verify} messages.
                         * @param message BenchmarksSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBenchmarksSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BenchmarksSourceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BenchmarksSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum;

                        /**
                         * Decodes a BenchmarksSourceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BenchmarksSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum;

                        /**
                         * Verifies a BenchmarksSourceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BenchmarksSourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BenchmarksSourceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum;

                        /**
                         * Creates a plain object from a BenchmarksSourceTypeEnum message. Also converts values to other types if specified.
                         * @param message BenchmarksSourceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BenchmarksSourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BenchmarksSourceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BenchmarksSourceTypeEnum {

                        /** BenchmarksSourceType enum. */
                        enum BenchmarksSourceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INDUSTRY_VERTICAL = 2
                        }
                    }

                    /** Properties of a BidModifierSourceEnum. */
                    interface IBidModifierSourceEnum {
                    }

                    /** Represents a BidModifierSourceEnum. */
                    class BidModifierSourceEnum implements IBidModifierSourceEnum {

                        /**
                         * Constructs a new BidModifierSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBidModifierSourceEnum);

                        /**
                         * Creates a new BidModifierSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BidModifierSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBidModifierSourceEnum): google.ads.googleads.v23.enums.BidModifierSourceEnum;

                        /**
                         * Encodes the specified BidModifierSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BidModifierSourceEnum.verify|verify} messages.
                         * @param message BidModifierSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBidModifierSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BidModifierSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BidModifierSourceEnum.verify|verify} messages.
                         * @param message BidModifierSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBidModifierSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BidModifierSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BidModifierSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BidModifierSourceEnum;

                        /**
                         * Decodes a BidModifierSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BidModifierSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BidModifierSourceEnum;

                        /**
                         * Verifies a BidModifierSourceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BidModifierSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BidModifierSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BidModifierSourceEnum;

                        /**
                         * Creates a plain object from a BidModifierSourceEnum message. Also converts values to other types if specified.
                         * @param message BidModifierSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BidModifierSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BidModifierSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BidModifierSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BidModifierSourceEnum {

                        /** BidModifierSource enum. */
                        enum BidModifierSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN = 2,
                            AD_GROUP = 3
                        }
                    }

                    /** Properties of a BiddingSourceEnum. */
                    interface IBiddingSourceEnum {
                    }

                    /** Represents a BiddingSourceEnum. */
                    class BiddingSourceEnum implements IBiddingSourceEnum {

                        /**
                         * Constructs a new BiddingSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBiddingSourceEnum);

                        /**
                         * Creates a new BiddingSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBiddingSourceEnum): google.ads.googleads.v23.enums.BiddingSourceEnum;

                        /**
                         * Encodes the specified BiddingSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingSourceEnum.verify|verify} messages.
                         * @param message BiddingSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBiddingSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingSourceEnum.verify|verify} messages.
                         * @param message BiddingSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBiddingSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BiddingSourceEnum;

                        /**
                         * Decodes a BiddingSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BiddingSourceEnum;

                        /**
                         * Verifies a BiddingSourceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BiddingSourceEnum;

                        /**
                         * Creates a plain object from a BiddingSourceEnum message. Also converts values to other types if specified.
                         * @param message BiddingSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BiddingSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BiddingSourceEnum {

                        /** BiddingSource enum. */
                        enum BiddingSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_BIDDING_STRATEGY = 5,
                            AD_GROUP = 6,
                            AD_GROUP_CRITERION = 7
                        }
                    }

                    /** Properties of a BiddingStrategyStatusEnum. */
                    interface IBiddingStrategyStatusEnum {
                    }

                    /** Represents a BiddingStrategyStatusEnum. */
                    class BiddingStrategyStatusEnum implements IBiddingStrategyStatusEnum {

                        /**
                         * Constructs a new BiddingStrategyStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBiddingStrategyStatusEnum);

                        /**
                         * Creates a new BiddingStrategyStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingStrategyStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBiddingStrategyStatusEnum): google.ads.googleads.v23.enums.BiddingStrategyStatusEnum;

                        /**
                         * Encodes the specified BiddingStrategyStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingStrategyStatusEnum.verify|verify} messages.
                         * @param message BiddingStrategyStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBiddingStrategyStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingStrategyStatusEnum.verify|verify} messages.
                         * @param message BiddingStrategyStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBiddingStrategyStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingStrategyStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BiddingStrategyStatusEnum;

                        /**
                         * Decodes a BiddingStrategyStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingStrategyStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BiddingStrategyStatusEnum;

                        /**
                         * Verifies a BiddingStrategyStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingStrategyStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BiddingStrategyStatusEnum;

                        /**
                         * Creates a plain object from a BiddingStrategyStatusEnum message. Also converts values to other types if specified.
                         * @param message BiddingStrategyStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BiddingStrategyStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingStrategyStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BiddingStrategyStatusEnum {

                        /** BiddingStrategyStatus enum. */
                        enum BiddingStrategyStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 4
                        }
                    }

                    /** Properties of a BiddingStrategySystemStatusEnum. */
                    interface IBiddingStrategySystemStatusEnum {
                    }

                    /** Represents a BiddingStrategySystemStatusEnum. */
                    class BiddingStrategySystemStatusEnum implements IBiddingStrategySystemStatusEnum {

                        /**
                         * Constructs a new BiddingStrategySystemStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBiddingStrategySystemStatusEnum);

                        /**
                         * Creates a new BiddingStrategySystemStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingStrategySystemStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBiddingStrategySystemStatusEnum): google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum;

                        /**
                         * Encodes the specified BiddingStrategySystemStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum.verify|verify} messages.
                         * @param message BiddingStrategySystemStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBiddingStrategySystemStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategySystemStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum.verify|verify} messages.
                         * @param message BiddingStrategySystemStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBiddingStrategySystemStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategySystemStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingStrategySystemStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum;

                        /**
                         * Decodes a BiddingStrategySystemStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingStrategySystemStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum;

                        /**
                         * Verifies a BiddingStrategySystemStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategySystemStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingStrategySystemStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum;

                        /**
                         * Creates a plain object from a BiddingStrategySystemStatusEnum message. Also converts values to other types if specified.
                         * @param message BiddingStrategySystemStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategySystemStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingStrategySystemStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BiddingStrategySystemStatusEnum {

                        /** BiddingStrategySystemStatus enum. */
                        enum BiddingStrategySystemStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            LEARNING_NEW = 3,
                            LEARNING_SETTING_CHANGE = 4,
                            LEARNING_BUDGET_CHANGE = 5,
                            LEARNING_COMPOSITION_CHANGE = 6,
                            LEARNING_CONVERSION_TYPE_CHANGE = 7,
                            LEARNING_CONVERSION_SETTING_CHANGE = 8,
                            LIMITED_BY_CPC_BID_CEILING = 9,
                            LIMITED_BY_CPC_BID_FLOOR = 10,
                            LIMITED_BY_DATA = 11,
                            LIMITED_BY_BUDGET = 12,
                            LIMITED_BY_LOW_PRIORITY_SPEND = 13,
                            LIMITED_BY_LOW_QUALITY = 14,
                            LIMITED_BY_INVENTORY = 15,
                            MISCONFIGURED_ZERO_ELIGIBILITY = 16,
                            MISCONFIGURED_CONVERSION_TYPES = 17,
                            MISCONFIGURED_CONVERSION_SETTINGS = 18,
                            MISCONFIGURED_SHARED_BUDGET = 19,
                            MISCONFIGURED_STRATEGY_TYPE = 20,
                            PAUSED = 21,
                            UNAVAILABLE = 22,
                            MULTIPLE_LEARNING = 23,
                            MULTIPLE_LIMITED = 24,
                            MULTIPLE_MISCONFIGURED = 25,
                            MULTIPLE = 26
                        }
                    }

                    /** Properties of a BiddingStrategyTypeEnum. */
                    interface IBiddingStrategyTypeEnum {
                    }

                    /** Represents a BiddingStrategyTypeEnum. */
                    class BiddingStrategyTypeEnum implements IBiddingStrategyTypeEnum {

                        /**
                         * Constructs a new BiddingStrategyTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBiddingStrategyTypeEnum);

                        /**
                         * Creates a new BiddingStrategyTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingStrategyTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBiddingStrategyTypeEnum): google.ads.googleads.v23.enums.BiddingStrategyTypeEnum;

                        /**
                         * Encodes the specified BiddingStrategyTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.verify|verify} messages.
                         * @param message BiddingStrategyTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBiddingStrategyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.verify|verify} messages.
                         * @param message BiddingStrategyTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBiddingStrategyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingStrategyTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BiddingStrategyTypeEnum;

                        /**
                         * Decodes a BiddingStrategyTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingStrategyTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BiddingStrategyTypeEnum;

                        /**
                         * Verifies a BiddingStrategyTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingStrategyTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BiddingStrategyTypeEnum;

                        /**
                         * Creates a plain object from a BiddingStrategyTypeEnum message. Also converts values to other types if specified.
                         * @param message BiddingStrategyTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BiddingStrategyTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingStrategyTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BiddingStrategyTypeEnum {

                        /** BiddingStrategyType enum. */
                        enum BiddingStrategyType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            COMMISSION = 16,
                            ENHANCED_CPC = 2,
                            FIXED_CPM = 19,
                            FIXED_SHARE_OF_VOICE = 22,
                            INVALID = 17,
                            MANUAL_CPA = 18,
                            MANUAL_CPC = 3,
                            MANUAL_CPM = 4,
                            MANUAL_CPV = 13,
                            MAXIMIZE_CONVERSIONS = 10,
                            MAXIMIZE_CONVERSION_VALUE = 11,
                            PAGE_ONE_PROMOTED = 5,
                            PERCENT_CPC = 12,
                            TARGET_CPA = 6,
                            TARGET_CPC = 21,
                            TARGET_CPM = 14,
                            TARGET_CPV = 20,
                            TARGET_IMPRESSION_SHARE = 15,
                            TARGET_OUTRANK_SHARE = 7,
                            TARGET_ROAS = 8,
                            TARGET_SPEND = 9
                        }
                    }

                    /** Properties of a BillingSetupStatusEnum. */
                    interface IBillingSetupStatusEnum {
                    }

                    /** Represents a BillingSetupStatusEnum. */
                    class BillingSetupStatusEnum implements IBillingSetupStatusEnum {

                        /**
                         * Constructs a new BillingSetupStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBillingSetupStatusEnum);

                        /**
                         * Creates a new BillingSetupStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BillingSetupStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBillingSetupStatusEnum): google.ads.googleads.v23.enums.BillingSetupStatusEnum;

                        /**
                         * Encodes the specified BillingSetupStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BillingSetupStatusEnum.verify|verify} messages.
                         * @param message BillingSetupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBillingSetupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetupStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BillingSetupStatusEnum.verify|verify} messages.
                         * @param message BillingSetupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBillingSetupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetupStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BillingSetupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BillingSetupStatusEnum;

                        /**
                         * Decodes a BillingSetupStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BillingSetupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BillingSetupStatusEnum;

                        /**
                         * Verifies a BillingSetupStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetupStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BillingSetupStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BillingSetupStatusEnum;

                        /**
                         * Creates a plain object from a BillingSetupStatusEnum message. Also converts values to other types if specified.
                         * @param message BillingSetupStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BillingSetupStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetupStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BillingSetupStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BillingSetupStatusEnum {

                        /** BillingSetupStatus enum. */
                        enum BillingSetupStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            APPROVED_HELD = 3,
                            APPROVED = 4,
                            CANCELLED = 5
                        }
                    }

                    /** Properties of a BrandSafetySuitabilityEnum. */
                    interface IBrandSafetySuitabilityEnum {
                    }

                    /** Represents a BrandSafetySuitabilityEnum. */
                    class BrandSafetySuitabilityEnum implements IBrandSafetySuitabilityEnum {

                        /**
                         * Constructs a new BrandSafetySuitabilityEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBrandSafetySuitabilityEnum);

                        /**
                         * Creates a new BrandSafetySuitabilityEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandSafetySuitabilityEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBrandSafetySuitabilityEnum): google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum;

                        /**
                         * Encodes the specified BrandSafetySuitabilityEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.verify|verify} messages.
                         * @param message BrandSafetySuitabilityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBrandSafetySuitabilityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandSafetySuitabilityEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.verify|verify} messages.
                         * @param message BrandSafetySuitabilityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBrandSafetySuitabilityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandSafetySuitabilityEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandSafetySuitabilityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum;

                        /**
                         * Decodes a BrandSafetySuitabilityEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandSafetySuitabilityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum;

                        /**
                         * Verifies a BrandSafetySuitabilityEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandSafetySuitabilityEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandSafetySuitabilityEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum;

                        /**
                         * Creates a plain object from a BrandSafetySuitabilityEnum message. Also converts values to other types if specified.
                         * @param message BrandSafetySuitabilityEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandSafetySuitabilityEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandSafetySuitabilityEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BrandSafetySuitabilityEnum {

                        /** BrandSafetySuitability enum. */
                        enum BrandSafetySuitability {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXPANDED_INVENTORY = 2,
                            STANDARD_INVENTORY = 3,
                            LIMITED_INVENTORY = 4
                        }
                    }

                    /** Properties of a BudgetDeliveryMethodEnum. */
                    interface IBudgetDeliveryMethodEnum {
                    }

                    /** Represents a BudgetDeliveryMethodEnum. */
                    class BudgetDeliveryMethodEnum implements IBudgetDeliveryMethodEnum {

                        /**
                         * Constructs a new BudgetDeliveryMethodEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBudgetDeliveryMethodEnum);

                        /**
                         * Creates a new BudgetDeliveryMethodEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetDeliveryMethodEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBudgetDeliveryMethodEnum): google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum;

                        /**
                         * Encodes the specified BudgetDeliveryMethodEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum.verify|verify} messages.
                         * @param message BudgetDeliveryMethodEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBudgetDeliveryMethodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetDeliveryMethodEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum.verify|verify} messages.
                         * @param message BudgetDeliveryMethodEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBudgetDeliveryMethodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetDeliveryMethodEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetDeliveryMethodEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum;

                        /**
                         * Decodes a BudgetDeliveryMethodEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetDeliveryMethodEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum;

                        /**
                         * Verifies a BudgetDeliveryMethodEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetDeliveryMethodEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetDeliveryMethodEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum;

                        /**
                         * Creates a plain object from a BudgetDeliveryMethodEnum message. Also converts values to other types if specified.
                         * @param message BudgetDeliveryMethodEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetDeliveryMethodEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetDeliveryMethodEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BudgetDeliveryMethodEnum {

                        /** BudgetDeliveryMethod enum. */
                        enum BudgetDeliveryMethod {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STANDARD = 2,
                            ACCELERATED = 3
                        }
                    }

                    /** Properties of a BudgetPeriodEnum. */
                    interface IBudgetPeriodEnum {
                    }

                    /** Represents a BudgetPeriodEnum. */
                    class BudgetPeriodEnum implements IBudgetPeriodEnum {

                        /**
                         * Constructs a new BudgetPeriodEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBudgetPeriodEnum);

                        /**
                         * Creates a new BudgetPeriodEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetPeriodEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBudgetPeriodEnum): google.ads.googleads.v23.enums.BudgetPeriodEnum;

                        /**
                         * Encodes the specified BudgetPeriodEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetPeriodEnum.verify|verify} messages.
                         * @param message BudgetPeriodEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBudgetPeriodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetPeriodEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetPeriodEnum.verify|verify} messages.
                         * @param message BudgetPeriodEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBudgetPeriodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetPeriodEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetPeriodEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BudgetPeriodEnum;

                        /**
                         * Decodes a BudgetPeriodEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetPeriodEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BudgetPeriodEnum;

                        /**
                         * Verifies a BudgetPeriodEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetPeriodEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetPeriodEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BudgetPeriodEnum;

                        /**
                         * Creates a plain object from a BudgetPeriodEnum message. Also converts values to other types if specified.
                         * @param message BudgetPeriodEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BudgetPeriodEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetPeriodEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetPeriodEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BudgetPeriodEnum {

                        /** BudgetPeriod enum. */
                        enum BudgetPeriod {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DAILY = 2,
                            CUSTOM_PERIOD = 5
                        }
                    }

                    /** Properties of a BudgetStatusEnum. */
                    interface IBudgetStatusEnum {
                    }

                    /** Represents a BudgetStatusEnum. */
                    class BudgetStatusEnum implements IBudgetStatusEnum {

                        /**
                         * Constructs a new BudgetStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBudgetStatusEnum);

                        /**
                         * Creates a new BudgetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBudgetStatusEnum): google.ads.googleads.v23.enums.BudgetStatusEnum;

                        /**
                         * Encodes the specified BudgetStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetStatusEnum.verify|verify} messages.
                         * @param message BudgetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBudgetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetStatusEnum.verify|verify} messages.
                         * @param message BudgetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBudgetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BudgetStatusEnum;

                        /**
                         * Decodes a BudgetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BudgetStatusEnum;

                        /**
                         * Verifies a BudgetStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BudgetStatusEnum;

                        /**
                         * Creates a plain object from a BudgetStatusEnum message. Also converts values to other types if specified.
                         * @param message BudgetStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BudgetStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BudgetStatusEnum {

                        /** BudgetStatus enum. */
                        enum BudgetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a BudgetTypeEnum. */
                    interface IBudgetTypeEnum {
                    }

                    /** Represents a BudgetTypeEnum. */
                    class BudgetTypeEnum implements IBudgetTypeEnum {

                        /**
                         * Constructs a new BudgetTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IBudgetTypeEnum);

                        /**
                         * Creates a new BudgetTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IBudgetTypeEnum): google.ads.googleads.v23.enums.BudgetTypeEnum;

                        /**
                         * Encodes the specified BudgetTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetTypeEnum.verify|verify} messages.
                         * @param message BudgetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IBudgetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.BudgetTypeEnum.verify|verify} messages.
                         * @param message BudgetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IBudgetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.BudgetTypeEnum;

                        /**
                         * Decodes a BudgetTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.BudgetTypeEnum;

                        /**
                         * Verifies a BudgetTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.BudgetTypeEnum;

                        /**
                         * Creates a plain object from a BudgetTypeEnum message. Also converts values to other types if specified.
                         * @param message BudgetTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.BudgetTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BudgetTypeEnum {

                        /** BudgetType enum. */
                        enum BudgetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STANDARD = 2,
                            FIXED_CPA = 4,
                            SMART_CAMPAIGN = 5,
                            LOCAL_SERVICES = 6
                        }
                    }

                    /** Properties of a CallTrackingDisplayLocationEnum. */
                    interface ICallTrackingDisplayLocationEnum {
                    }

                    /** Represents a CallTrackingDisplayLocationEnum. */
                    class CallTrackingDisplayLocationEnum implements ICallTrackingDisplayLocationEnum {

                        /**
                         * Constructs a new CallTrackingDisplayLocationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICallTrackingDisplayLocationEnum);

                        /**
                         * Creates a new CallTrackingDisplayLocationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallTrackingDisplayLocationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICallTrackingDisplayLocationEnum): google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum;

                        /**
                         * Encodes the specified CallTrackingDisplayLocationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum.verify|verify} messages.
                         * @param message CallTrackingDisplayLocationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICallTrackingDisplayLocationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallTrackingDisplayLocationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum.verify|verify} messages.
                         * @param message CallTrackingDisplayLocationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICallTrackingDisplayLocationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallTrackingDisplayLocationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallTrackingDisplayLocationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum;

                        /**
                         * Decodes a CallTrackingDisplayLocationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallTrackingDisplayLocationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum;

                        /**
                         * Verifies a CallTrackingDisplayLocationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallTrackingDisplayLocationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallTrackingDisplayLocationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum;

                        /**
                         * Creates a plain object from a CallTrackingDisplayLocationEnum message. Also converts values to other types if specified.
                         * @param message CallTrackingDisplayLocationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallTrackingDisplayLocationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallTrackingDisplayLocationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CallTrackingDisplayLocationEnum {

                        /** CallTrackingDisplayLocation enum. */
                        enum CallTrackingDisplayLocation {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD = 2,
                            LANDING_PAGE = 3
                        }
                    }

                    /** Properties of a CallTypeEnum. */
                    interface ICallTypeEnum {
                    }

                    /** Represents a CallTypeEnum. */
                    class CallTypeEnum implements ICallTypeEnum {

                        /**
                         * Constructs a new CallTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICallTypeEnum);

                        /**
                         * Creates a new CallTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICallTypeEnum): google.ads.googleads.v23.enums.CallTypeEnum;

                        /**
                         * Encodes the specified CallTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CallTypeEnum.verify|verify} messages.
                         * @param message CallTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICallTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CallTypeEnum.verify|verify} messages.
                         * @param message CallTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICallTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CallTypeEnum;

                        /**
                         * Decodes a CallTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CallTypeEnum;

                        /**
                         * Verifies a CallTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CallTypeEnum;

                        /**
                         * Creates a plain object from a CallTypeEnum message. Also converts values to other types if specified.
                         * @param message CallTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CallTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CallTypeEnum {

                        /** CallType enum. */
                        enum CallType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MANUALLY_DIALED = 2,
                            HIGH_END_MOBILE_SEARCH = 3
                        }
                    }

                    /** Properties of a CampaignCriterionStatusEnum. */
                    interface ICampaignCriterionStatusEnum {
                    }

                    /** Represents a CampaignCriterionStatusEnum. */
                    class CampaignCriterionStatusEnum implements ICampaignCriterionStatusEnum {

                        /**
                         * Constructs a new CampaignCriterionStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignCriterionStatusEnum);

                        /**
                         * Creates a new CampaignCriterionStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCriterionStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignCriterionStatusEnum): google.ads.googleads.v23.enums.CampaignCriterionStatusEnum;

                        /**
                         * Encodes the specified CampaignCriterionStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignCriterionStatusEnum.verify|verify} messages.
                         * @param message CampaignCriterionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignCriterionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignCriterionStatusEnum.verify|verify} messages.
                         * @param message CampaignCriterionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignCriterionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterionStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignCriterionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignCriterionStatusEnum;

                        /**
                         * Decodes a CampaignCriterionStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCriterionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignCriterionStatusEnum;

                        /**
                         * Verifies a CampaignCriterionStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignCriterionStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignCriterionStatusEnum;

                        /**
                         * Creates a plain object from a CampaignCriterionStatusEnum message. Also converts values to other types if specified.
                         * @param message CampaignCriterionStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignCriterionStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignCriterionStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignCriterionStatusEnum {

                        /** CampaignCriterionStatus enum. */
                        enum CampaignCriterionStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of a CampaignDraftStatusEnum. */
                    interface ICampaignDraftStatusEnum {
                    }

                    /** Represents a CampaignDraftStatusEnum. */
                    class CampaignDraftStatusEnum implements ICampaignDraftStatusEnum {

                        /**
                         * Constructs a new CampaignDraftStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignDraftStatusEnum);

                        /**
                         * Creates a new CampaignDraftStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignDraftStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignDraftStatusEnum): google.ads.googleads.v23.enums.CampaignDraftStatusEnum;

                        /**
                         * Encodes the specified CampaignDraftStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignDraftStatusEnum.verify|verify} messages.
                         * @param message CampaignDraftStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignDraftStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraftStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignDraftStatusEnum.verify|verify} messages.
                         * @param message CampaignDraftStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignDraftStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraftStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignDraftStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignDraftStatusEnum;

                        /**
                         * Decodes a CampaignDraftStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignDraftStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignDraftStatusEnum;

                        /**
                         * Verifies a CampaignDraftStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraftStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignDraftStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignDraftStatusEnum;

                        /**
                         * Creates a plain object from a CampaignDraftStatusEnum message. Also converts values to other types if specified.
                         * @param message CampaignDraftStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignDraftStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraftStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignDraftStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignDraftStatusEnum {

                        /** CampaignDraftStatus enum. */
                        enum CampaignDraftStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PROPOSED = 2,
                            REMOVED = 3,
                            PROMOTING = 5,
                            PROMOTED = 4,
                            PROMOTE_FAILED = 6
                        }
                    }

                    /** Properties of a CampaignExperimentTypeEnum. */
                    interface ICampaignExperimentTypeEnum {
                    }

                    /** Represents a CampaignExperimentTypeEnum. */
                    class CampaignExperimentTypeEnum implements ICampaignExperimentTypeEnum {

                        /**
                         * Constructs a new CampaignExperimentTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignExperimentTypeEnum);

                        /**
                         * Creates a new CampaignExperimentTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExperimentTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignExperimentTypeEnum): google.ads.googleads.v23.enums.CampaignExperimentTypeEnum;

                        /**
                         * Encodes the specified CampaignExperimentTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignExperimentTypeEnum.verify|verify} messages.
                         * @param message CampaignExperimentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignExperimentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperimentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignExperimentTypeEnum.verify|verify} messages.
                         * @param message CampaignExperimentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignExperimentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperimentTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignExperimentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignExperimentTypeEnum;

                        /**
                         * Decodes a CampaignExperimentTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExperimentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignExperimentTypeEnum;

                        /**
                         * Verifies a CampaignExperimentTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperimentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignExperimentTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignExperimentTypeEnum;

                        /**
                         * Creates a plain object from a CampaignExperimentTypeEnum message. Also converts values to other types if specified.
                         * @param message CampaignExperimentTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignExperimentTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperimentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignExperimentTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignExperimentTypeEnum {

                        /** CampaignExperimentType enum. */
                        enum CampaignExperimentType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BASE = 2,
                            DRAFT = 3,
                            EXPERIMENT = 4
                        }
                    }

                    /** Properties of a CampaignGroupStatusEnum. */
                    interface ICampaignGroupStatusEnum {
                    }

                    /** Represents a CampaignGroupStatusEnum. */
                    class CampaignGroupStatusEnum implements ICampaignGroupStatusEnum {

                        /**
                         * Constructs a new CampaignGroupStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignGroupStatusEnum);

                        /**
                         * Creates a new CampaignGroupStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignGroupStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignGroupStatusEnum): google.ads.googleads.v23.enums.CampaignGroupStatusEnum;

                        /**
                         * Encodes the specified CampaignGroupStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignGroupStatusEnum.verify|verify} messages.
                         * @param message CampaignGroupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignGroupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignGroupStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignGroupStatusEnum.verify|verify} messages.
                         * @param message CampaignGroupStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignGroupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignGroupStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignGroupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignGroupStatusEnum;

                        /**
                         * Decodes a CampaignGroupStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignGroupStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignGroupStatusEnum;

                        /**
                         * Verifies a CampaignGroupStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignGroupStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignGroupStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignGroupStatusEnum;

                        /**
                         * Creates a plain object from a CampaignGroupStatusEnum message. Also converts values to other types if specified.
                         * @param message CampaignGroupStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignGroupStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignGroupStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignGroupStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignGroupStatusEnum {

                        /** CampaignGroupStatus enum. */
                        enum CampaignGroupStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a CampaignKeywordMatchTypeEnum. */
                    interface ICampaignKeywordMatchTypeEnum {
                    }

                    /** Represents a CampaignKeywordMatchTypeEnum. */
                    class CampaignKeywordMatchTypeEnum implements ICampaignKeywordMatchTypeEnum {

                        /**
                         * Constructs a new CampaignKeywordMatchTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignKeywordMatchTypeEnum);

                        /**
                         * Creates a new CampaignKeywordMatchTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignKeywordMatchTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignKeywordMatchTypeEnum): google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum;

                        /**
                         * Encodes the specified CampaignKeywordMatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum.verify|verify} messages.
                         * @param message CampaignKeywordMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignKeywordMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignKeywordMatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum.verify|verify} messages.
                         * @param message CampaignKeywordMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignKeywordMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignKeywordMatchTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignKeywordMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum;

                        /**
                         * Decodes a CampaignKeywordMatchTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignKeywordMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum;

                        /**
                         * Verifies a CampaignKeywordMatchTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignKeywordMatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignKeywordMatchTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum;

                        /**
                         * Creates a plain object from a CampaignKeywordMatchTypeEnum message. Also converts values to other types if specified.
                         * @param message CampaignKeywordMatchTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignKeywordMatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignKeywordMatchTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignKeywordMatchTypeEnum {

                        /** CampaignKeywordMatchType enum. */
                        enum CampaignKeywordMatchType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BROAD = 2
                        }
                    }

                    /** Properties of a CampaignPrimaryStatusEnum. */
                    interface ICampaignPrimaryStatusEnum {
                    }

                    /** Represents a CampaignPrimaryStatusEnum. */
                    class CampaignPrimaryStatusEnum implements ICampaignPrimaryStatusEnum {

                        /**
                         * Constructs a new CampaignPrimaryStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignPrimaryStatusEnum);

                        /**
                         * Creates a new CampaignPrimaryStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignPrimaryStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignPrimaryStatusEnum): google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum;

                        /**
                         * Encodes the specified CampaignPrimaryStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum.verify|verify} messages.
                         * @param message CampaignPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignPrimaryStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum.verify|verify} messages.
                         * @param message CampaignPrimaryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignPrimaryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignPrimaryStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum;

                        /**
                         * Decodes a CampaignPrimaryStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignPrimaryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum;

                        /**
                         * Verifies a CampaignPrimaryStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignPrimaryStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignPrimaryStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum;

                        /**
                         * Creates a plain object from a CampaignPrimaryStatusEnum message. Also converts values to other types if specified.
                         * @param message CampaignPrimaryStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignPrimaryStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignPrimaryStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignPrimaryStatusEnum {

                        /** CampaignPrimaryStatus enum. */
                        enum CampaignPrimaryStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            PAUSED = 3,
                            REMOVED = 4,
                            ENDED = 5,
                            PENDING = 6,
                            MISCONFIGURED = 7,
                            LIMITED = 8,
                            LEARNING = 9,
                            NOT_ELIGIBLE = 10
                        }
                    }

                    /** Properties of a CampaignPrimaryStatusReasonEnum. */
                    interface ICampaignPrimaryStatusReasonEnum {
                    }

                    /** Represents a CampaignPrimaryStatusReasonEnum. */
                    class CampaignPrimaryStatusReasonEnum implements ICampaignPrimaryStatusReasonEnum {

                        /**
                         * Constructs a new CampaignPrimaryStatusReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignPrimaryStatusReasonEnum);

                        /**
                         * Creates a new CampaignPrimaryStatusReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignPrimaryStatusReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignPrimaryStatusReasonEnum): google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum;

                        /**
                         * Encodes the specified CampaignPrimaryStatusReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message CampaignPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignPrimaryStatusReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum.verify|verify} messages.
                         * @param message CampaignPrimaryStatusReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignPrimaryStatusReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignPrimaryStatusReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum;

                        /**
                         * Decodes a CampaignPrimaryStatusReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignPrimaryStatusReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum;

                        /**
                         * Verifies a CampaignPrimaryStatusReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignPrimaryStatusReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignPrimaryStatusReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum;

                        /**
                         * Creates a plain object from a CampaignPrimaryStatusReasonEnum message. Also converts values to other types if specified.
                         * @param message CampaignPrimaryStatusReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignPrimaryStatusReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignPrimaryStatusReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignPrimaryStatusReasonEnum {

                        /** CampaignPrimaryStatusReason enum. */
                        enum CampaignPrimaryStatusReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_REMOVED = 2,
                            CAMPAIGN_PAUSED = 3,
                            CAMPAIGN_PENDING = 4,
                            CAMPAIGN_ENDED = 5,
                            CAMPAIGN_DRAFT = 6,
                            BIDDING_STRATEGY_MISCONFIGURED = 7,
                            BIDDING_STRATEGY_LIMITED = 8,
                            BIDDING_STRATEGY_LEARNING = 9,
                            BIDDING_STRATEGY_CONSTRAINED = 10,
                            BUDGET_CONSTRAINED = 11,
                            BUDGET_MISCONFIGURED = 12,
                            SEARCH_VOLUME_LIMITED = 13,
                            AD_GROUPS_PAUSED = 14,
                            NO_AD_GROUPS = 15,
                            KEYWORDS_PAUSED = 16,
                            NO_KEYWORDS = 17,
                            AD_GROUP_ADS_PAUSED = 18,
                            NO_AD_GROUP_ADS = 19,
                            HAS_ADS_LIMITED_BY_POLICY = 20,
                            HAS_ADS_DISAPPROVED = 21,
                            MOST_ADS_UNDER_REVIEW = 22,
                            MISSING_LEAD_FORM_EXTENSION = 23,
                            MISSING_CALL_EXTENSION = 24,
                            LEAD_FORM_EXTENSION_UNDER_REVIEW = 25,
                            LEAD_FORM_EXTENSION_DISAPPROVED = 26,
                            CALL_EXTENSION_UNDER_REVIEW = 27,
                            CALL_EXTENSION_DISAPPROVED = 28,
                            NO_MOBILE_APPLICATION_AD_GROUP_CRITERIA = 29,
                            CAMPAIGN_GROUP_PAUSED = 30,
                            CAMPAIGN_GROUP_ALL_GROUP_BUDGETS_ENDED = 31,
                            APP_NOT_RELEASED = 32,
                            APP_PARTIALLY_RELEASED = 33,
                            HAS_ASSET_GROUPS_DISAPPROVED = 34,
                            HAS_ASSET_GROUPS_LIMITED_BY_POLICY = 35,
                            MOST_ASSET_GROUPS_UNDER_REVIEW = 36,
                            NO_ASSET_GROUPS = 37,
                            ASSET_GROUPS_PAUSED = 38,
                            MISSING_LOCATION_TARGETING = 39
                        }
                    }

                    /** Properties of a CampaignServingStatusEnum. */
                    interface ICampaignServingStatusEnum {
                    }

                    /** Represents a CampaignServingStatusEnum. */
                    class CampaignServingStatusEnum implements ICampaignServingStatusEnum {

                        /**
                         * Constructs a new CampaignServingStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignServingStatusEnum);

                        /**
                         * Creates a new CampaignServingStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignServingStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignServingStatusEnum): google.ads.googleads.v23.enums.CampaignServingStatusEnum;

                        /**
                         * Encodes the specified CampaignServingStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignServingStatusEnum.verify|verify} messages.
                         * @param message CampaignServingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignServingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignServingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignServingStatusEnum.verify|verify} messages.
                         * @param message CampaignServingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignServingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignServingStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignServingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignServingStatusEnum;

                        /**
                         * Decodes a CampaignServingStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignServingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignServingStatusEnum;

                        /**
                         * Verifies a CampaignServingStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignServingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignServingStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignServingStatusEnum;

                        /**
                         * Creates a plain object from a CampaignServingStatusEnum message. Also converts values to other types if specified.
                         * @param message CampaignServingStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignServingStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignServingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignServingStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignServingStatusEnum {

                        /** CampaignServingStatus enum. */
                        enum CampaignServingStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SERVING = 2,
                            NONE = 3,
                            ENDED = 4,
                            PENDING = 5,
                            SUSPENDED = 6
                        }
                    }

                    /** Properties of a CampaignSharedSetStatusEnum. */
                    interface ICampaignSharedSetStatusEnum {
                    }

                    /** Represents a CampaignSharedSetStatusEnum. */
                    class CampaignSharedSetStatusEnum implements ICampaignSharedSetStatusEnum {

                        /**
                         * Constructs a new CampaignSharedSetStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignSharedSetStatusEnum);

                        /**
                         * Creates a new CampaignSharedSetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSharedSetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignSharedSetStatusEnum): google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum;

                        /**
                         * Encodes the specified CampaignSharedSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum.verify|verify} messages.
                         * @param message CampaignSharedSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignSharedSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum.verify|verify} messages.
                         * @param message CampaignSharedSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignSharedSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSetStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignSharedSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum;

                        /**
                         * Decodes a CampaignSharedSetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignSharedSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum;

                        /**
                         * Verifies a CampaignSharedSetStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignSharedSetStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum;

                        /**
                         * Creates a plain object from a CampaignSharedSetStatusEnum message. Also converts values to other types if specified.
                         * @param message CampaignSharedSetStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignSharedSetStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignSharedSetStatusEnum {

                        /** CampaignSharedSetStatus enum. */
                        enum CampaignSharedSetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a CampaignStatusEnum. */
                    interface ICampaignStatusEnum {
                    }

                    /** Represents a CampaignStatusEnum. */
                    class CampaignStatusEnum implements ICampaignStatusEnum {

                        /**
                         * Constructs a new CampaignStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICampaignStatusEnum);

                        /**
                         * Creates a new CampaignStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICampaignStatusEnum): google.ads.googleads.v23.enums.CampaignStatusEnum;

                        /**
                         * Encodes the specified CampaignStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignStatusEnum.verify|verify} messages.
                         * @param message CampaignStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICampaignStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CampaignStatusEnum.verify|verify} messages.
                         * @param message CampaignStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICampaignStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CampaignStatusEnum;

                        /**
                         * Decodes a CampaignStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CampaignStatusEnum;

                        /**
                         * Verifies a CampaignStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CampaignStatusEnum;

                        /**
                         * Creates a plain object from a CampaignStatusEnum message. Also converts values to other types if specified.
                         * @param message CampaignStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CampaignStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignStatusEnum {

                        /** CampaignStatus enum. */
                        enum CampaignStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of a ChangeClientTypeEnum. */
                    interface IChangeClientTypeEnum {
                    }

                    /** Represents a ChangeClientTypeEnum. */
                    class ChangeClientTypeEnum implements IChangeClientTypeEnum {

                        /**
                         * Constructs a new ChangeClientTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IChangeClientTypeEnum);

                        /**
                         * Creates a new ChangeClientTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeClientTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IChangeClientTypeEnum): google.ads.googleads.v23.enums.ChangeClientTypeEnum;

                        /**
                         * Encodes the specified ChangeClientTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeClientTypeEnum.verify|verify} messages.
                         * @param message ChangeClientTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IChangeClientTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeClientTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeClientTypeEnum.verify|verify} messages.
                         * @param message ChangeClientTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IChangeClientTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeClientTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeClientTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ChangeClientTypeEnum;

                        /**
                         * Decodes a ChangeClientTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeClientTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ChangeClientTypeEnum;

                        /**
                         * Verifies a ChangeClientTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeClientTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeClientTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ChangeClientTypeEnum;

                        /**
                         * Creates a plain object from a ChangeClientTypeEnum message. Also converts values to other types if specified.
                         * @param message ChangeClientTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ChangeClientTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeClientTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeClientTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChangeClientTypeEnum {

                        /** ChangeClientType enum. */
                        enum ChangeClientType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GOOGLE_ADS_WEB_CLIENT = 2,
                            GOOGLE_ADS_AUTOMATED_RULE = 3,
                            GOOGLE_ADS_SCRIPTS = 4,
                            GOOGLE_ADS_BULK_UPLOAD = 5,
                            GOOGLE_ADS_API = 6,
                            GOOGLE_ADS_EDITOR = 7,
                            GOOGLE_ADS_MOBILE_APP = 8,
                            GOOGLE_ADS_RECOMMENDATIONS = 9,
                            SEARCH_ADS_360_SYNC = 10,
                            SEARCH_ADS_360_POST = 11,
                            INTERNAL_TOOL = 12,
                            OTHER = 13,
                            GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION = 14
                        }
                    }

                    /** Properties of a ChangeEventResourceTypeEnum. */
                    interface IChangeEventResourceTypeEnum {
                    }

                    /** Represents a ChangeEventResourceTypeEnum. */
                    class ChangeEventResourceTypeEnum implements IChangeEventResourceTypeEnum {

                        /**
                         * Constructs a new ChangeEventResourceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IChangeEventResourceTypeEnum);

                        /**
                         * Creates a new ChangeEventResourceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeEventResourceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IChangeEventResourceTypeEnum): google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum;

                        /**
                         * Encodes the specified ChangeEventResourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum.verify|verify} messages.
                         * @param message ChangeEventResourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IChangeEventResourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeEventResourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum.verify|verify} messages.
                         * @param message ChangeEventResourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IChangeEventResourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeEventResourceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeEventResourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum;

                        /**
                         * Decodes a ChangeEventResourceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeEventResourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum;

                        /**
                         * Verifies a ChangeEventResourceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeEventResourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeEventResourceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum;

                        /**
                         * Creates a plain object from a ChangeEventResourceTypeEnum message. Also converts values to other types if specified.
                         * @param message ChangeEventResourceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeEventResourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeEventResourceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChangeEventResourceTypeEnum {

                        /** ChangeEventResourceType enum. */
                        enum ChangeEventResourceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD = 2,
                            AD_GROUP = 3,
                            AD_GROUP_CRITERION = 4,
                            CAMPAIGN = 5,
                            CAMPAIGN_BUDGET = 6,
                            AD_GROUP_BID_MODIFIER = 7,
                            CAMPAIGN_CRITERION = 8,
                            FEED = 9,
                            FEED_ITEM = 10,
                            CAMPAIGN_FEED = 11,
                            AD_GROUP_FEED = 12,
                            AD_GROUP_AD = 13,
                            ASSET = 14,
                            CUSTOMER_ASSET = 15,
                            CAMPAIGN_ASSET = 16,
                            AD_GROUP_ASSET = 17,
                            ASSET_SET = 18,
                            ASSET_SET_ASSET = 19,
                            CAMPAIGN_ASSET_SET = 20
                        }
                    }

                    /** Properties of a ChangeStatusOperationEnum. */
                    interface IChangeStatusOperationEnum {
                    }

                    /** Represents a ChangeStatusOperationEnum. */
                    class ChangeStatusOperationEnum implements IChangeStatusOperationEnum {

                        /**
                         * Constructs a new ChangeStatusOperationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IChangeStatusOperationEnum);

                        /**
                         * Creates a new ChangeStatusOperationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeStatusOperationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IChangeStatusOperationEnum): google.ads.googleads.v23.enums.ChangeStatusOperationEnum;

                        /**
                         * Encodes the specified ChangeStatusOperationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeStatusOperationEnum.verify|verify} messages.
                         * @param message ChangeStatusOperationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IChangeStatusOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatusOperationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeStatusOperationEnum.verify|verify} messages.
                         * @param message ChangeStatusOperationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IChangeStatusOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatusOperationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeStatusOperationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ChangeStatusOperationEnum;

                        /**
                         * Decodes a ChangeStatusOperationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeStatusOperationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ChangeStatusOperationEnum;

                        /**
                         * Verifies a ChangeStatusOperationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatusOperationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeStatusOperationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ChangeStatusOperationEnum;

                        /**
                         * Creates a plain object from a ChangeStatusOperationEnum message. Also converts values to other types if specified.
                         * @param message ChangeStatusOperationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ChangeStatusOperationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatusOperationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeStatusOperationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChangeStatusOperationEnum {

                        /** ChangeStatusOperation enum. */
                        enum ChangeStatusOperation {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADDED = 2,
                            CHANGED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of a ChangeStatusResourceTypeEnum. */
                    interface IChangeStatusResourceTypeEnum {
                    }

                    /** Represents a ChangeStatusResourceTypeEnum. */
                    class ChangeStatusResourceTypeEnum implements IChangeStatusResourceTypeEnum {

                        /**
                         * Constructs a new ChangeStatusResourceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IChangeStatusResourceTypeEnum);

                        /**
                         * Creates a new ChangeStatusResourceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeStatusResourceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IChangeStatusResourceTypeEnum): google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum;

                        /**
                         * Encodes the specified ChangeStatusResourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum.verify|verify} messages.
                         * @param message ChangeStatusResourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IChangeStatusResourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatusResourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum.verify|verify} messages.
                         * @param message ChangeStatusResourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IChangeStatusResourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatusResourceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeStatusResourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum;

                        /**
                         * Decodes a ChangeStatusResourceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeStatusResourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum;

                        /**
                         * Verifies a ChangeStatusResourceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatusResourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeStatusResourceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum;

                        /**
                         * Creates a plain object from a ChangeStatusResourceTypeEnum message. Also converts values to other types if specified.
                         * @param message ChangeStatusResourceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatusResourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeStatusResourceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChangeStatusResourceTypeEnum {

                        /** ChangeStatusResourceType enum. */
                        enum ChangeStatusResourceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_GROUP = 3,
                            AD_GROUP_AD = 4,
                            AD_GROUP_CRITERION = 5,
                            CAMPAIGN = 6,
                            CAMPAIGN_CRITERION = 7,
                            CAMPAIGN_BUDGET = 8,
                            FEED = 9,
                            FEED_ITEM = 10,
                            AD_GROUP_FEED = 11,
                            CAMPAIGN_FEED = 12,
                            AD_GROUP_BID_MODIFIER = 13,
                            SHARED_SET = 14,
                            CAMPAIGN_SHARED_SET = 15,
                            ASSET = 16,
                            CUSTOMER_ASSET = 17,
                            CAMPAIGN_ASSET = 18,
                            AD_GROUP_ASSET = 19,
                            COMBINED_AUDIENCE = 20,
                            ASSET_GROUP = 21,
                            ASSET_SET = 22,
                            CAMPAIGN_ASSET_SET = 23
                        }
                    }

                    /** Properties of a CombinedAudienceStatusEnum. */
                    interface ICombinedAudienceStatusEnum {
                    }

                    /** Represents a CombinedAudienceStatusEnum. */
                    class CombinedAudienceStatusEnum implements ICombinedAudienceStatusEnum {

                        /**
                         * Constructs a new CombinedAudienceStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICombinedAudienceStatusEnum);

                        /**
                         * Creates a new CombinedAudienceStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CombinedAudienceStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICombinedAudienceStatusEnum): google.ads.googleads.v23.enums.CombinedAudienceStatusEnum;

                        /**
                         * Encodes the specified CombinedAudienceStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CombinedAudienceStatusEnum.verify|verify} messages.
                         * @param message CombinedAudienceStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICombinedAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CombinedAudienceStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CombinedAudienceStatusEnum.verify|verify} messages.
                         * @param message CombinedAudienceStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICombinedAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CombinedAudienceStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CombinedAudienceStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CombinedAudienceStatusEnum;

                        /**
                         * Decodes a CombinedAudienceStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CombinedAudienceStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CombinedAudienceStatusEnum;

                        /**
                         * Verifies a CombinedAudienceStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CombinedAudienceStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CombinedAudienceStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CombinedAudienceStatusEnum;

                        /**
                         * Creates a plain object from a CombinedAudienceStatusEnum message. Also converts values to other types if specified.
                         * @param message CombinedAudienceStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CombinedAudienceStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CombinedAudienceStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CombinedAudienceStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CombinedAudienceStatusEnum {

                        /** CombinedAudienceStatus enum. */
                        enum CombinedAudienceStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a ConversionActionCountingTypeEnum. */
                    interface IConversionActionCountingTypeEnum {
                    }

                    /** Represents a ConversionActionCountingTypeEnum. */
                    class ConversionActionCountingTypeEnum implements IConversionActionCountingTypeEnum {

                        /**
                         * Constructs a new ConversionActionCountingTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionActionCountingTypeEnum);

                        /**
                         * Creates a new ConversionActionCountingTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionActionCountingTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionActionCountingTypeEnum): google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum;

                        /**
                         * Encodes the specified ConversionActionCountingTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum.verify|verify} messages.
                         * @param message ConversionActionCountingTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionActionCountingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionCountingTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum.verify|verify} messages.
                         * @param message ConversionActionCountingTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionActionCountingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionCountingTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionActionCountingTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum;

                        /**
                         * Decodes a ConversionActionCountingTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionActionCountingTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum;

                        /**
                         * Verifies a ConversionActionCountingTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionCountingTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionActionCountingTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum;

                        /**
                         * Creates a plain object from a ConversionActionCountingTypeEnum message. Also converts values to other types if specified.
                         * @param message ConversionActionCountingTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionCountingTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionActionCountingTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionActionCountingTypeEnum {

                        /** ConversionActionCountingType enum. */
                        enum ConversionActionCountingType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ONE_PER_CLICK = 2,
                            MANY_PER_CLICK = 3
                        }
                    }

                    /** Properties of a ConversionActionStatusEnum. */
                    interface IConversionActionStatusEnum {
                    }

                    /** Represents a ConversionActionStatusEnum. */
                    class ConversionActionStatusEnum implements IConversionActionStatusEnum {

                        /**
                         * Constructs a new ConversionActionStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionActionStatusEnum);

                        /**
                         * Creates a new ConversionActionStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionActionStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionActionStatusEnum): google.ads.googleads.v23.enums.ConversionActionStatusEnum;

                        /**
                         * Encodes the specified ConversionActionStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionStatusEnum.verify|verify} messages.
                         * @param message ConversionActionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionActionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionStatusEnum.verify|verify} messages.
                         * @param message ConversionActionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionActionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionActionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionActionStatusEnum;

                        /**
                         * Decodes a ConversionActionStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionActionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionActionStatusEnum;

                        /**
                         * Verifies a ConversionActionStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionActionStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionActionStatusEnum;

                        /**
                         * Creates a plain object from a ConversionActionStatusEnum message. Also converts values to other types if specified.
                         * @param message ConversionActionStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionActionStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionActionStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionActionStatusEnum {

                        /** ConversionActionStatus enum. */
                        enum ConversionActionStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3,
                            HIDDEN = 4
                        }
                    }

                    /** Properties of a ConversionActionTypeEnum. */
                    interface IConversionActionTypeEnum {
                    }

                    /** Represents a ConversionActionTypeEnum. */
                    class ConversionActionTypeEnum implements IConversionActionTypeEnum {

                        /**
                         * Constructs a new ConversionActionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionActionTypeEnum);

                        /**
                         * Creates a new ConversionActionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionActionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionActionTypeEnum): google.ads.googleads.v23.enums.ConversionActionTypeEnum;

                        /**
                         * Encodes the specified ConversionActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionTypeEnum.verify|verify} messages.
                         * @param message ConversionActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionActionTypeEnum.verify|verify} messages.
                         * @param message ConversionActionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionActionTypeEnum;

                        /**
                         * Decodes a ConversionActionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionActionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionActionTypeEnum;

                        /**
                         * Verifies a ConversionActionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionActionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionActionTypeEnum;

                        /**
                         * Creates a plain object from a ConversionActionTypeEnum message. Also converts values to other types if specified.
                         * @param message ConversionActionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionActionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionActionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionActionTypeEnum {

                        /** ConversionActionType enum. */
                        enum ConversionActionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_CALL = 2,
                            CLICK_TO_CALL = 3,
                            GOOGLE_PLAY_DOWNLOAD = 4,
                            GOOGLE_PLAY_IN_APP_PURCHASE = 5,
                            UPLOAD_CALLS = 6,
                            UPLOAD_CLICKS = 7,
                            WEBPAGE = 8,
                            WEBSITE_CALL = 9,
                            STORE_SALES_DIRECT_UPLOAD = 10,
                            STORE_SALES = 11,
                            FIREBASE_ANDROID_FIRST_OPEN = 12,
                            FIREBASE_ANDROID_IN_APP_PURCHASE = 13,
                            FIREBASE_ANDROID_CUSTOM = 14,
                            FIREBASE_IOS_FIRST_OPEN = 15,
                            FIREBASE_IOS_IN_APP_PURCHASE = 16,
                            FIREBASE_IOS_CUSTOM = 17,
                            THIRD_PARTY_APP_ANALYTICS_ANDROID_FIRST_OPEN = 18,
                            THIRD_PARTY_APP_ANALYTICS_ANDROID_IN_APP_PURCHASE = 19,
                            THIRD_PARTY_APP_ANALYTICS_ANDROID_CUSTOM = 20,
                            THIRD_PARTY_APP_ANALYTICS_IOS_FIRST_OPEN = 21,
                            THIRD_PARTY_APP_ANALYTICS_IOS_IN_APP_PURCHASE = 22,
                            THIRD_PARTY_APP_ANALYTICS_IOS_CUSTOM = 23,
                            ANDROID_APP_PRE_REGISTRATION = 24,
                            ANDROID_INSTALLS_ALL_OTHER_APPS = 25,
                            FLOODLIGHT_ACTION = 26,
                            FLOODLIGHT_TRANSACTION = 27,
                            GOOGLE_HOSTED = 28,
                            LEAD_FORM_SUBMIT = 29,
                            SALESFORCE = 30,
                            SEARCH_ADS_360 = 31,
                            SMART_CAMPAIGN_AD_CLICKS_TO_CALL = 32,
                            SMART_CAMPAIGN_MAP_CLICKS_TO_CALL = 33,
                            SMART_CAMPAIGN_MAP_DIRECTIONS = 34,
                            SMART_CAMPAIGN_TRACKED_CALLS = 35,
                            STORE_VISITS = 36,
                            WEBPAGE_CODELESS = 37,
                            UNIVERSAL_ANALYTICS_GOAL = 38,
                            UNIVERSAL_ANALYTICS_TRANSACTION = 39,
                            GOOGLE_ANALYTICS_4_CUSTOM = 40,
                            GOOGLE_ANALYTICS_4_PURCHASE = 41
                        }
                    }

                    /** Properties of a ConversionAdjustmentTypeEnum. */
                    interface IConversionAdjustmentTypeEnum {
                    }

                    /** Represents a ConversionAdjustmentTypeEnum. */
                    class ConversionAdjustmentTypeEnum implements IConversionAdjustmentTypeEnum {

                        /**
                         * Constructs a new ConversionAdjustmentTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionAdjustmentTypeEnum);

                        /**
                         * Creates a new ConversionAdjustmentTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAdjustmentTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionAdjustmentTypeEnum): google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum;

                        /**
                         * Encodes the specified ConversionAdjustmentTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.verify|verify} messages.
                         * @param message ConversionAdjustmentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionAdjustmentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustmentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.verify|verify} messages.
                         * @param message ConversionAdjustmentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionAdjustmentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustmentTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionAdjustmentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum;

                        /**
                         * Decodes a ConversionAdjustmentTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionAdjustmentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum;

                        /**
                         * Verifies a ConversionAdjustmentTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustmentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionAdjustmentTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum;

                        /**
                         * Creates a plain object from a ConversionAdjustmentTypeEnum message. Also converts values to other types if specified.
                         * @param message ConversionAdjustmentTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustmentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionAdjustmentTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionAdjustmentTypeEnum {

                        /** ConversionAdjustmentType enum. */
                        enum ConversionAdjustmentType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RETRACTION = 2,
                            RESTATEMENT = 3,
                            ENHANCEMENT = 4
                        }
                    }

                    /** Properties of a ConversionCustomVariableStatusEnum. */
                    interface IConversionCustomVariableStatusEnum {
                    }

                    /** Represents a ConversionCustomVariableStatusEnum. */
                    class ConversionCustomVariableStatusEnum implements IConversionCustomVariableStatusEnum {

                        /**
                         * Constructs a new ConversionCustomVariableStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionCustomVariableStatusEnum);

                        /**
                         * Creates a new ConversionCustomVariableStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionCustomVariableStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionCustomVariableStatusEnum): google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum;

                        /**
                         * Encodes the specified ConversionCustomVariableStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum.verify|verify} messages.
                         * @param message ConversionCustomVariableStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionCustomVariableStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariableStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum.verify|verify} messages.
                         * @param message ConversionCustomVariableStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionCustomVariableStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariableStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionCustomVariableStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum;

                        /**
                         * Decodes a ConversionCustomVariableStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionCustomVariableStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum;

                        /**
                         * Verifies a ConversionCustomVariableStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariableStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionCustomVariableStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum;

                        /**
                         * Creates a plain object from a ConversionCustomVariableStatusEnum message. Also converts values to other types if specified.
                         * @param message ConversionCustomVariableStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariableStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionCustomVariableStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionCustomVariableStatusEnum {

                        /** ConversionCustomVariableStatus enum. */
                        enum ConversionCustomVariableStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACTIVATION_NEEDED = 2,
                            ENABLED = 3,
                            PAUSED = 4
                        }
                    }

                    /** Properties of a ConversionCustomerTypeEnum. */
                    interface IConversionCustomerTypeEnum {
                    }

                    /** Represents a ConversionCustomerTypeEnum. */
                    class ConversionCustomerTypeEnum implements IConversionCustomerTypeEnum {

                        /**
                         * Constructs a new ConversionCustomerTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionCustomerTypeEnum);

                        /**
                         * Creates a new ConversionCustomerTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionCustomerTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionCustomerTypeEnum): google.ads.googleads.v23.enums.ConversionCustomerTypeEnum;

                        /**
                         * Encodes the specified ConversionCustomerTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionCustomerTypeEnum.verify|verify} messages.
                         * @param message ConversionCustomerTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionCustomerTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomerTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionCustomerTypeEnum.verify|verify} messages.
                         * @param message ConversionCustomerTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionCustomerTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomerTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionCustomerTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionCustomerTypeEnum;

                        /**
                         * Decodes a ConversionCustomerTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionCustomerTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionCustomerTypeEnum;

                        /**
                         * Verifies a ConversionCustomerTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomerTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionCustomerTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionCustomerTypeEnum;

                        /**
                         * Creates a plain object from a ConversionCustomerTypeEnum message. Also converts values to other types if specified.
                         * @param message ConversionCustomerTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionCustomerTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomerTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionCustomerTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionCustomerTypeEnum {

                        /** ConversionCustomerType enum. */
                        enum ConversionCustomerType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEW = 2,
                            RETURNING = 3
                        }
                    }

                    /** Properties of a ConversionEnvironmentEnum. */
                    interface IConversionEnvironmentEnum {
                    }

                    /** Represents a ConversionEnvironmentEnum. */
                    class ConversionEnvironmentEnum implements IConversionEnvironmentEnum {

                        /**
                         * Constructs a new ConversionEnvironmentEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionEnvironmentEnum);

                        /**
                         * Creates a new ConversionEnvironmentEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionEnvironmentEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionEnvironmentEnum): google.ads.googleads.v23.enums.ConversionEnvironmentEnum;

                        /**
                         * Encodes the specified ConversionEnvironmentEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionEnvironmentEnum.verify|verify} messages.
                         * @param message ConversionEnvironmentEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionEnvironmentEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionEnvironmentEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionEnvironmentEnum.verify|verify} messages.
                         * @param message ConversionEnvironmentEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionEnvironmentEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionEnvironmentEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionEnvironmentEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionEnvironmentEnum;

                        /**
                         * Decodes a ConversionEnvironmentEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionEnvironmentEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionEnvironmentEnum;

                        /**
                         * Verifies a ConversionEnvironmentEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionEnvironmentEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionEnvironmentEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionEnvironmentEnum;

                        /**
                         * Creates a plain object from a ConversionEnvironmentEnum message. Also converts values to other types if specified.
                         * @param message ConversionEnvironmentEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionEnvironmentEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionEnvironmentEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionEnvironmentEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionEnvironmentEnum {

                        /** ConversionEnvironment enum. */
                        enum ConversionEnvironment {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APP = 2,
                            WEB = 3
                        }
                    }

                    /** Properties of a ConversionOriginEnum. */
                    interface IConversionOriginEnum {
                    }

                    /** Represents a ConversionOriginEnum. */
                    class ConversionOriginEnum implements IConversionOriginEnum {

                        /**
                         * Constructs a new ConversionOriginEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionOriginEnum);

                        /**
                         * Creates a new ConversionOriginEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionOriginEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionOriginEnum): google.ads.googleads.v23.enums.ConversionOriginEnum;

                        /**
                         * Encodes the specified ConversionOriginEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionOriginEnum.verify|verify} messages.
                         * @param message ConversionOriginEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionOriginEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionOriginEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionOriginEnum.verify|verify} messages.
                         * @param message ConversionOriginEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionOriginEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionOriginEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionOriginEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionOriginEnum;

                        /**
                         * Decodes a ConversionOriginEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionOriginEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionOriginEnum;

                        /**
                         * Verifies a ConversionOriginEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionOriginEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionOriginEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionOriginEnum;

                        /**
                         * Creates a plain object from a ConversionOriginEnum message. Also converts values to other types if specified.
                         * @param message ConversionOriginEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionOriginEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionOriginEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionOriginEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionOriginEnum {

                        /** ConversionOrigin enum. */
                        enum ConversionOrigin {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WEBSITE = 2,
                            GOOGLE_HOSTED = 3,
                            APP = 4,
                            CALL_FROM_ADS = 5,
                            STORE = 6,
                            YOUTUBE_HOSTED = 7
                        }
                    }

                    /** Properties of a ConversionTrackingStatusEnum. */
                    interface IConversionTrackingStatusEnum {
                    }

                    /** Represents a ConversionTrackingStatusEnum. */
                    class ConversionTrackingStatusEnum implements IConversionTrackingStatusEnum {

                        /**
                         * Constructs a new ConversionTrackingStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionTrackingStatusEnum);

                        /**
                         * Creates a new ConversionTrackingStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionTrackingStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionTrackingStatusEnum): google.ads.googleads.v23.enums.ConversionTrackingStatusEnum;

                        /**
                         * Encodes the specified ConversionTrackingStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.verify|verify} messages.
                         * @param message ConversionTrackingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionTrackingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionTrackingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.verify|verify} messages.
                         * @param message ConversionTrackingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionTrackingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionTrackingStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionTrackingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionTrackingStatusEnum;

                        /**
                         * Decodes a ConversionTrackingStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionTrackingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionTrackingStatusEnum;

                        /**
                         * Verifies a ConversionTrackingStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionTrackingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionTrackingStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionTrackingStatusEnum;

                        /**
                         * Creates a plain object from a ConversionTrackingStatusEnum message. Also converts values to other types if specified.
                         * @param message ConversionTrackingStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionTrackingStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionTrackingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionTrackingStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionTrackingStatusEnum {

                        /** ConversionTrackingStatus enum. */
                        enum ConversionTrackingStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_CONVERSION_TRACKED = 2,
                            CONVERSION_TRACKING_MANAGED_BY_SELF = 3,
                            CONVERSION_TRACKING_MANAGED_BY_THIS_MANAGER = 4,
                            CONVERSION_TRACKING_MANAGED_BY_ANOTHER_MANAGER = 5
                        }
                    }

                    /** Properties of a ConversionValueRuleSetStatusEnum. */
                    interface IConversionValueRuleSetStatusEnum {
                    }

                    /** Represents a ConversionValueRuleSetStatusEnum. */
                    class ConversionValueRuleSetStatusEnum implements IConversionValueRuleSetStatusEnum {

                        /**
                         * Constructs a new ConversionValueRuleSetStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionValueRuleSetStatusEnum);

                        /**
                         * Creates a new ConversionValueRuleSetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleSetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionValueRuleSetStatusEnum): google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum;

                        /**
                         * Encodes the specified ConversionValueRuleSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum.verify|verify} messages.
                         * @param message ConversionValueRuleSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionValueRuleSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum.verify|verify} messages.
                         * @param message ConversionValueRuleSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionValueRuleSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSetStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRuleSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum;

                        /**
                         * Decodes a ConversionValueRuleSetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRuleSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum;

                        /**
                         * Verifies a ConversionValueRuleSetStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRuleSetStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleSetStatusEnum message. Also converts values to other types if specified.
                         * @param message ConversionValueRuleSetStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRuleSetStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionValueRuleSetStatusEnum {

                        /** ConversionValueRuleSetStatus enum. */
                        enum ConversionValueRuleSetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3,
                            PAUSED = 4
                        }
                    }

                    /** Properties of a ConversionValueRuleStatusEnum. */
                    interface IConversionValueRuleStatusEnum {
                    }

                    /** Represents a ConversionValueRuleStatusEnum. */
                    class ConversionValueRuleStatusEnum implements IConversionValueRuleStatusEnum {

                        /**
                         * Constructs a new ConversionValueRuleStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IConversionValueRuleStatusEnum);

                        /**
                         * Creates a new ConversionValueRuleStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IConversionValueRuleStatusEnum): google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum;

                        /**
                         * Encodes the specified ConversionValueRuleStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum.verify|verify} messages.
                         * @param message ConversionValueRuleStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IConversionValueRuleStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum.verify|verify} messages.
                         * @param message ConversionValueRuleStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IConversionValueRuleStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRuleStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum;

                        /**
                         * Decodes a ConversionValueRuleStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRuleStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum;

                        /**
                         * Verifies a ConversionValueRuleStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRuleStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleStatusEnum message. Also converts values to other types if specified.
                         * @param message ConversionValueRuleStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRuleStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionValueRuleStatusEnum {

                        /** ConversionValueRuleStatus enum. */
                        enum ConversionValueRuleStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3,
                            PAUSED = 4
                        }
                    }

                    /** Properties of a CriterionSystemServingStatusEnum. */
                    interface ICriterionSystemServingStatusEnum {
                    }

                    /** Represents a CriterionSystemServingStatusEnum. */
                    class CriterionSystemServingStatusEnum implements ICriterionSystemServingStatusEnum {

                        /**
                         * Constructs a new CriterionSystemServingStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICriterionSystemServingStatusEnum);

                        /**
                         * Creates a new CriterionSystemServingStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionSystemServingStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICriterionSystemServingStatusEnum): google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum;

                        /**
                         * Encodes the specified CriterionSystemServingStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum.verify|verify} messages.
                         * @param message CriterionSystemServingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICriterionSystemServingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionSystemServingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum.verify|verify} messages.
                         * @param message CriterionSystemServingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICriterionSystemServingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionSystemServingStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionSystemServingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum;

                        /**
                         * Decodes a CriterionSystemServingStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionSystemServingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum;

                        /**
                         * Verifies a CriterionSystemServingStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionSystemServingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionSystemServingStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum;

                        /**
                         * Creates a plain object from a CriterionSystemServingStatusEnum message. Also converts values to other types if specified.
                         * @param message CriterionSystemServingStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionSystemServingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionSystemServingStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CriterionSystemServingStatusEnum {

                        /** CriterionSystemServingStatus enum. */
                        enum CriterionSystemServingStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            RARELY_SERVED = 3
                        }
                    }

                    /** Properties of a CriterionTypeEnum. */
                    interface ICriterionTypeEnum {
                    }

                    /** Represents a CriterionTypeEnum. */
                    class CriterionTypeEnum implements ICriterionTypeEnum {

                        /**
                         * Constructs a new CriterionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICriterionTypeEnum);

                        /**
                         * Creates a new CriterionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICriterionTypeEnum): google.ads.googleads.v23.enums.CriterionTypeEnum;

                        /**
                         * Encodes the specified CriterionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionTypeEnum.verify|verify} messages.
                         * @param message CriterionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICriterionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CriterionTypeEnum.verify|verify} messages.
                         * @param message CriterionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICriterionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CriterionTypeEnum;

                        /**
                         * Decodes a CriterionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CriterionTypeEnum;

                        /**
                         * Verifies a CriterionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CriterionTypeEnum;

                        /**
                         * Creates a plain object from a CriterionTypeEnum message. Also converts values to other types if specified.
                         * @param message CriterionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CriterionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CriterionTypeEnum {

                        /** CriterionType enum. */
                        enum CriterionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            KEYWORD = 2,
                            PLACEMENT = 3,
                            MOBILE_APP_CATEGORY = 4,
                            MOBILE_APPLICATION = 5,
                            DEVICE = 6,
                            LOCATION = 7,
                            LISTING_GROUP = 8,
                            AD_SCHEDULE = 9,
                            AGE_RANGE = 10,
                            GENDER = 11,
                            INCOME_RANGE = 12,
                            PARENTAL_STATUS = 13,
                            YOUTUBE_VIDEO = 14,
                            YOUTUBE_CHANNEL = 15,
                            USER_LIST = 16,
                            PROXIMITY = 17,
                            TOPIC = 18,
                            LISTING_SCOPE = 19,
                            LANGUAGE = 20,
                            IP_BLOCK = 21,
                            CONTENT_LABEL = 22,
                            CARRIER = 23,
                            USER_INTEREST = 24,
                            WEBPAGE = 25,
                            OPERATING_SYSTEM_VERSION = 26,
                            APP_PAYMENT_MODEL = 27,
                            MOBILE_DEVICE = 28,
                            CUSTOM_AFFINITY = 29,
                            CUSTOM_INTENT = 30,
                            LOCATION_GROUP = 31,
                            CUSTOM_AUDIENCE = 32,
                            COMBINED_AUDIENCE = 33,
                            KEYWORD_THEME = 34,
                            AUDIENCE = 35,
                            NEGATIVE_KEYWORD_LIST = 36,
                            LOCAL_SERVICE_ID = 37,
                            SEARCH_THEME = 38,
                            BRAND = 39,
                            BRAND_LIST = 40,
                            LIFE_EVENT = 41,
                            WEBPAGE_LIST = 42,
                            VIDEO_LINEUP = 43,
                            PLACEMENT_LIST = 44,
                            VERTICAL_ADS_ITEM_GROUP_RULE_LIST = 45,
                            VERTICAL_ADS_ITEM_GROUP_RULE = 46
                        }
                    }

                    /** Properties of a CustomAudienceMemberTypeEnum. */
                    interface ICustomAudienceMemberTypeEnum {
                    }

                    /** Represents a CustomAudienceMemberTypeEnum. */
                    class CustomAudienceMemberTypeEnum implements ICustomAudienceMemberTypeEnum {

                        /**
                         * Constructs a new CustomAudienceMemberTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomAudienceMemberTypeEnum);

                        /**
                         * Creates a new CustomAudienceMemberTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceMemberTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomAudienceMemberTypeEnum): google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum;

                        /**
                         * Encodes the specified CustomAudienceMemberTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum.verify|verify} messages.
                         * @param message CustomAudienceMemberTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomAudienceMemberTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceMemberTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum.verify|verify} messages.
                         * @param message CustomAudienceMemberTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomAudienceMemberTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceMemberTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceMemberTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum;

                        /**
                         * Decodes a CustomAudienceMemberTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceMemberTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum;

                        /**
                         * Verifies a CustomAudienceMemberTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceMemberTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceMemberTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum;

                        /**
                         * Creates a plain object from a CustomAudienceMemberTypeEnum message. Also converts values to other types if specified.
                         * @param message CustomAudienceMemberTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceMemberTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceMemberTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomAudienceMemberTypeEnum {

                        /** CustomAudienceMemberType enum. */
                        enum CustomAudienceMemberType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            KEYWORD = 2,
                            URL = 3,
                            PLACE_CATEGORY = 4,
                            APP = 5
                        }
                    }

                    /** Properties of a CustomAudienceStatusEnum. */
                    interface ICustomAudienceStatusEnum {
                    }

                    /** Represents a CustomAudienceStatusEnum. */
                    class CustomAudienceStatusEnum implements ICustomAudienceStatusEnum {

                        /**
                         * Constructs a new CustomAudienceStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomAudienceStatusEnum);

                        /**
                         * Creates a new CustomAudienceStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomAudienceStatusEnum): google.ads.googleads.v23.enums.CustomAudienceStatusEnum;

                        /**
                         * Encodes the specified CustomAudienceStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomAudienceStatusEnum.verify|verify} messages.
                         * @param message CustomAudienceStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomAudienceStatusEnum.verify|verify} messages.
                         * @param message CustomAudienceStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomAudienceStatusEnum;

                        /**
                         * Decodes a CustomAudienceStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomAudienceStatusEnum;

                        /**
                         * Verifies a CustomAudienceStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomAudienceStatusEnum;

                        /**
                         * Creates a plain object from a CustomAudienceStatusEnum message. Also converts values to other types if specified.
                         * @param message CustomAudienceStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomAudienceStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomAudienceStatusEnum {

                        /** CustomAudienceStatus enum. */
                        enum CustomAudienceStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a CustomAudienceTypeEnum. */
                    interface ICustomAudienceTypeEnum {
                    }

                    /** Represents a CustomAudienceTypeEnum. */
                    class CustomAudienceTypeEnum implements ICustomAudienceTypeEnum {

                        /**
                         * Constructs a new CustomAudienceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomAudienceTypeEnum);

                        /**
                         * Creates a new CustomAudienceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomAudienceTypeEnum): google.ads.googleads.v23.enums.CustomAudienceTypeEnum;

                        /**
                         * Encodes the specified CustomAudienceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomAudienceTypeEnum.verify|verify} messages.
                         * @param message CustomAudienceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomAudienceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomAudienceTypeEnum.verify|verify} messages.
                         * @param message CustomAudienceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomAudienceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomAudienceTypeEnum;

                        /**
                         * Decodes a CustomAudienceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomAudienceTypeEnum;

                        /**
                         * Verifies a CustomAudienceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomAudienceTypeEnum;

                        /**
                         * Creates a plain object from a CustomAudienceTypeEnum message. Also converts values to other types if specified.
                         * @param message CustomAudienceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomAudienceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomAudienceTypeEnum {

                        /** CustomAudienceType enum. */
                        enum CustomAudienceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AUTO = 2,
                            INTEREST = 3,
                            PURCHASE_INTENT = 4,
                            SEARCH = 5
                        }
                    }

                    /** Properties of a CustomConversionGoalStatusEnum. */
                    interface ICustomConversionGoalStatusEnum {
                    }

                    /** Represents a CustomConversionGoalStatusEnum. */
                    class CustomConversionGoalStatusEnum implements ICustomConversionGoalStatusEnum {

                        /**
                         * Constructs a new CustomConversionGoalStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomConversionGoalStatusEnum);

                        /**
                         * Creates a new CustomConversionGoalStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomConversionGoalStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomConversionGoalStatusEnum): google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum;

                        /**
                         * Encodes the specified CustomConversionGoalStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum.verify|verify} messages.
                         * @param message CustomConversionGoalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomConversionGoalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomConversionGoalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum.verify|verify} messages.
                         * @param message CustomConversionGoalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomConversionGoalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomConversionGoalStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomConversionGoalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum;

                        /**
                         * Decodes a CustomConversionGoalStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomConversionGoalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum;

                        /**
                         * Verifies a CustomConversionGoalStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomConversionGoalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomConversionGoalStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum;

                        /**
                         * Creates a plain object from a CustomConversionGoalStatusEnum message. Also converts values to other types if specified.
                         * @param message CustomConversionGoalStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomConversionGoalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomConversionGoalStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomConversionGoalStatusEnum {

                        /** CustomConversionGoalStatus enum. */
                        enum CustomConversionGoalStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a CustomInterestMemberTypeEnum. */
                    interface ICustomInterestMemberTypeEnum {
                    }

                    /** Represents a CustomInterestMemberTypeEnum. */
                    class CustomInterestMemberTypeEnum implements ICustomInterestMemberTypeEnum {

                        /**
                         * Constructs a new CustomInterestMemberTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomInterestMemberTypeEnum);

                        /**
                         * Creates a new CustomInterestMemberTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterestMemberTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomInterestMemberTypeEnum): google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum;

                        /**
                         * Encodes the specified CustomInterestMemberTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum.verify|verify} messages.
                         * @param message CustomInterestMemberTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomInterestMemberTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestMemberTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum.verify|verify} messages.
                         * @param message CustomInterestMemberTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomInterestMemberTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestMemberTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomInterestMemberTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum;

                        /**
                         * Decodes a CustomInterestMemberTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomInterestMemberTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum;

                        /**
                         * Verifies a CustomInterestMemberTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestMemberTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomInterestMemberTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum;

                        /**
                         * Creates a plain object from a CustomInterestMemberTypeEnum message. Also converts values to other types if specified.
                         * @param message CustomInterestMemberTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestMemberTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomInterestMemberTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomInterestMemberTypeEnum {

                        /** CustomInterestMemberType enum. */
                        enum CustomInterestMemberType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            KEYWORD = 2,
                            URL = 3
                        }
                    }

                    /** Properties of a CustomInterestStatusEnum. */
                    interface ICustomInterestStatusEnum {
                    }

                    /** Represents a CustomInterestStatusEnum. */
                    class CustomInterestStatusEnum implements ICustomInterestStatusEnum {

                        /**
                         * Constructs a new CustomInterestStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomInterestStatusEnum);

                        /**
                         * Creates a new CustomInterestStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterestStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomInterestStatusEnum): google.ads.googleads.v23.enums.CustomInterestStatusEnum;

                        /**
                         * Encodes the specified CustomInterestStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomInterestStatusEnum.verify|verify} messages.
                         * @param message CustomInterestStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomInterestStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomInterestStatusEnum.verify|verify} messages.
                         * @param message CustomInterestStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomInterestStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomInterestStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomInterestStatusEnum;

                        /**
                         * Decodes a CustomInterestStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomInterestStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomInterestStatusEnum;

                        /**
                         * Verifies a CustomInterestStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomInterestStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomInterestStatusEnum;

                        /**
                         * Creates a plain object from a CustomInterestStatusEnum message. Also converts values to other types if specified.
                         * @param message CustomInterestStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomInterestStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomInterestStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomInterestStatusEnum {

                        /** CustomInterestStatus enum. */
                        enum CustomInterestStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a CustomInterestTypeEnum. */
                    interface ICustomInterestTypeEnum {
                    }

                    /** Represents a CustomInterestTypeEnum. */
                    class CustomInterestTypeEnum implements ICustomInterestTypeEnum {

                        /**
                         * Constructs a new CustomInterestTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomInterestTypeEnum);

                        /**
                         * Creates a new CustomInterestTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterestTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomInterestTypeEnum): google.ads.googleads.v23.enums.CustomInterestTypeEnum;

                        /**
                         * Encodes the specified CustomInterestTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomInterestTypeEnum.verify|verify} messages.
                         * @param message CustomInterestTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomInterestTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomInterestTypeEnum.verify|verify} messages.
                         * @param message CustomInterestTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomInterestTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomInterestTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomInterestTypeEnum;

                        /**
                         * Decodes a CustomInterestTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomInterestTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomInterestTypeEnum;

                        /**
                         * Verifies a CustomInterestTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomInterestTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomInterestTypeEnum;

                        /**
                         * Creates a plain object from a CustomInterestTypeEnum message. Also converts values to other types if specified.
                         * @param message CustomInterestTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomInterestTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomInterestTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomInterestTypeEnum {

                        /** CustomInterestType enum. */
                        enum CustomInterestType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOM_AFFINITY = 2,
                            CUSTOM_INTENT = 3
                        }
                    }

                    /** Properties of a CustomerAcquisitionOptimizationModeEnum. */
                    interface ICustomerAcquisitionOptimizationModeEnum {
                    }

                    /** Represents a CustomerAcquisitionOptimizationModeEnum. */
                    class CustomerAcquisitionOptimizationModeEnum implements ICustomerAcquisitionOptimizationModeEnum {

                        /**
                         * Constructs a new CustomerAcquisitionOptimizationModeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomerAcquisitionOptimizationModeEnum);

                        /**
                         * Creates a new CustomerAcquisitionOptimizationModeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAcquisitionOptimizationModeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomerAcquisitionOptimizationModeEnum): google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum;

                        /**
                         * Encodes the specified CustomerAcquisitionOptimizationModeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum.verify|verify} messages.
                         * @param message CustomerAcquisitionOptimizationModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomerAcquisitionOptimizationModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAcquisitionOptimizationModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum.verify|verify} messages.
                         * @param message CustomerAcquisitionOptimizationModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomerAcquisitionOptimizationModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAcquisitionOptimizationModeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerAcquisitionOptimizationModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum;

                        /**
                         * Decodes a CustomerAcquisitionOptimizationModeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerAcquisitionOptimizationModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum;

                        /**
                         * Verifies a CustomerAcquisitionOptimizationModeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAcquisitionOptimizationModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerAcquisitionOptimizationModeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum;

                        /**
                         * Creates a plain object from a CustomerAcquisitionOptimizationModeEnum message. Also converts values to other types if specified.
                         * @param message CustomerAcquisitionOptimizationModeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAcquisitionOptimizationModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerAcquisitionOptimizationModeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerAcquisitionOptimizationModeEnum {

                        /** CustomerAcquisitionOptimizationMode enum. */
                        enum CustomerAcquisitionOptimizationMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TARGET_ALL_EQUALLY = 2,
                            BID_HIGHER_FOR_NEW_CUSTOMER = 3,
                            TARGET_NEW_CUSTOMER = 4
                        }
                    }

                    /** Properties of a CustomerPayPerConversionEligibilityFailureReasonEnum. */
                    interface ICustomerPayPerConversionEligibilityFailureReasonEnum {
                    }

                    /** Represents a CustomerPayPerConversionEligibilityFailureReasonEnum. */
                    class CustomerPayPerConversionEligibilityFailureReasonEnum implements ICustomerPayPerConversionEligibilityFailureReasonEnum {

                        /**
                         * Constructs a new CustomerPayPerConversionEligibilityFailureReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomerPayPerConversionEligibilityFailureReasonEnum);

                        /**
                         * Creates a new CustomerPayPerConversionEligibilityFailureReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerPayPerConversionEligibilityFailureReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomerPayPerConversionEligibilityFailureReasonEnum): google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum;

                        /**
                         * Encodes the specified CustomerPayPerConversionEligibilityFailureReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum.verify|verify} messages.
                         * @param message CustomerPayPerConversionEligibilityFailureReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomerPayPerConversionEligibilityFailureReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerPayPerConversionEligibilityFailureReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum.verify|verify} messages.
                         * @param message CustomerPayPerConversionEligibilityFailureReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomerPayPerConversionEligibilityFailureReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerPayPerConversionEligibilityFailureReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerPayPerConversionEligibilityFailureReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum;

                        /**
                         * Decodes a CustomerPayPerConversionEligibilityFailureReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerPayPerConversionEligibilityFailureReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum;

                        /**
                         * Verifies a CustomerPayPerConversionEligibilityFailureReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerPayPerConversionEligibilityFailureReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerPayPerConversionEligibilityFailureReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum;

                        /**
                         * Creates a plain object from a CustomerPayPerConversionEligibilityFailureReasonEnum message. Also converts values to other types if specified.
                         * @param message CustomerPayPerConversionEligibilityFailureReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerPayPerConversionEligibilityFailureReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerPayPerConversionEligibilityFailureReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerPayPerConversionEligibilityFailureReasonEnum {

                        /** CustomerPayPerConversionEligibilityFailureReason enum. */
                        enum CustomerPayPerConversionEligibilityFailureReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_ENOUGH_CONVERSIONS = 2,
                            CONVERSION_LAG_TOO_HIGH = 3,
                            HAS_CAMPAIGN_WITH_SHARED_BUDGET = 4,
                            HAS_UPLOAD_CLICKS_CONVERSION = 5,
                            AVERAGE_DAILY_SPEND_TOO_HIGH = 6,
                            ANALYSIS_NOT_COMPLETE = 7,
                            OTHER = 8
                        }
                    }

                    /** Properties of a CustomerStatusEnum. */
                    interface ICustomerStatusEnum {
                    }

                    /** Represents a CustomerStatusEnum. */
                    class CustomerStatusEnum implements ICustomerStatusEnum {

                        /**
                         * Constructs a new CustomerStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomerStatusEnum);

                        /**
                         * Creates a new CustomerStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomerStatusEnum): google.ads.googleads.v23.enums.CustomerStatusEnum;

                        /**
                         * Encodes the specified CustomerStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerStatusEnum.verify|verify} messages.
                         * @param message CustomerStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomerStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomerStatusEnum.verify|verify} messages.
                         * @param message CustomerStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomerStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomerStatusEnum;

                        /**
                         * Decodes a CustomerStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomerStatusEnum;

                        /**
                         * Verifies a CustomerStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomerStatusEnum;

                        /**
                         * Creates a plain object from a CustomerStatusEnum message. Also converts values to other types if specified.
                         * @param message CustomerStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomerStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerStatusEnum {

                        /** CustomerStatus enum. */
                        enum CustomerStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            CANCELED = 3,
                            SUSPENDED = 4,
                            CLOSED = 5
                        }
                    }

                    /** Properties of a CustomizerAttributeStatusEnum. */
                    interface ICustomizerAttributeStatusEnum {
                    }

                    /** Represents a CustomizerAttributeStatusEnum. */
                    class CustomizerAttributeStatusEnum implements ICustomizerAttributeStatusEnum {

                        /**
                         * Constructs a new CustomizerAttributeStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomizerAttributeStatusEnum);

                        /**
                         * Creates a new CustomizerAttributeStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomizerAttributeStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomizerAttributeStatusEnum): google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum;

                        /**
                         * Encodes the specified CustomizerAttributeStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum.verify|verify} messages.
                         * @param message CustomizerAttributeStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomizerAttributeStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomizerAttributeStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum.verify|verify} messages.
                         * @param message CustomizerAttributeStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomizerAttributeStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomizerAttributeStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomizerAttributeStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum;

                        /**
                         * Decodes a CustomizerAttributeStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomizerAttributeStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum;

                        /**
                         * Verifies a CustomizerAttributeStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomizerAttributeStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomizerAttributeStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum;

                        /**
                         * Creates a plain object from a CustomizerAttributeStatusEnum message. Also converts values to other types if specified.
                         * @param message CustomizerAttributeStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomizerAttributeStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomizerAttributeStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomizerAttributeStatusEnum {

                        /** CustomizerAttributeStatus enum. */
                        enum CustomizerAttributeStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a CustomizerValueStatusEnum. */
                    interface ICustomizerValueStatusEnum {
                    }

                    /** Represents a CustomizerValueStatusEnum. */
                    class CustomizerValueStatusEnum implements ICustomizerValueStatusEnum {

                        /**
                         * Constructs a new CustomizerValueStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ICustomizerValueStatusEnum);

                        /**
                         * Creates a new CustomizerValueStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomizerValueStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ICustomizerValueStatusEnum): google.ads.googleads.v23.enums.CustomizerValueStatusEnum;

                        /**
                         * Encodes the specified CustomizerValueStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.CustomizerValueStatusEnum.verify|verify} messages.
                         * @param message CustomizerValueStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ICustomizerValueStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomizerValueStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.CustomizerValueStatusEnum.verify|verify} messages.
                         * @param message CustomizerValueStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ICustomizerValueStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomizerValueStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomizerValueStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.CustomizerValueStatusEnum;

                        /**
                         * Decodes a CustomizerValueStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomizerValueStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.CustomizerValueStatusEnum;

                        /**
                         * Verifies a CustomizerValueStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomizerValueStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomizerValueStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.CustomizerValueStatusEnum;

                        /**
                         * Creates a plain object from a CustomizerValueStatusEnum message. Also converts values to other types if specified.
                         * @param message CustomizerValueStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.CustomizerValueStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomizerValueStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomizerValueStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomizerValueStatusEnum {

                        /** CustomizerValueStatus enum. */
                        enum CustomizerValueStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a DataDrivenModelStatusEnum. */
                    interface IDataDrivenModelStatusEnum {
                    }

                    /** Represents a DataDrivenModelStatusEnum. */
                    class DataDrivenModelStatusEnum implements IDataDrivenModelStatusEnum {

                        /**
                         * Constructs a new DataDrivenModelStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDataDrivenModelStatusEnum);

                        /**
                         * Creates a new DataDrivenModelStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DataDrivenModelStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDataDrivenModelStatusEnum): google.ads.googleads.v23.enums.DataDrivenModelStatusEnum;

                        /**
                         * Encodes the specified DataDrivenModelStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DataDrivenModelStatusEnum.verify|verify} messages.
                         * @param message DataDrivenModelStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDataDrivenModelStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataDrivenModelStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DataDrivenModelStatusEnum.verify|verify} messages.
                         * @param message DataDrivenModelStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDataDrivenModelStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataDrivenModelStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DataDrivenModelStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DataDrivenModelStatusEnum;

                        /**
                         * Decodes a DataDrivenModelStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DataDrivenModelStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DataDrivenModelStatusEnum;

                        /**
                         * Verifies a DataDrivenModelStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataDrivenModelStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DataDrivenModelStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DataDrivenModelStatusEnum;

                        /**
                         * Creates a plain object from a DataDrivenModelStatusEnum message. Also converts values to other types if specified.
                         * @param message DataDrivenModelStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DataDrivenModelStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataDrivenModelStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DataDrivenModelStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DataDrivenModelStatusEnum {

                        /** DataDrivenModelStatus enum. */
                        enum DataDrivenModelStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AVAILABLE = 2,
                            STALE = 3,
                            EXPIRED = 4,
                            NEVER_GENERATED = 5
                        }
                    }

                    /** Properties of a DataLinkStatusEnum. */
                    interface IDataLinkStatusEnum {
                    }

                    /** Represents a DataLinkStatusEnum. */
                    class DataLinkStatusEnum implements IDataLinkStatusEnum {

                        /**
                         * Constructs a new DataLinkStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDataLinkStatusEnum);

                        /**
                         * Creates a new DataLinkStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DataLinkStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDataLinkStatusEnum): google.ads.googleads.v23.enums.DataLinkStatusEnum;

                        /**
                         * Encodes the specified DataLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DataLinkStatusEnum.verify|verify} messages.
                         * @param message DataLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDataLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DataLinkStatusEnum.verify|verify} messages.
                         * @param message DataLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDataLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataLinkStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DataLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DataLinkStatusEnum;

                        /**
                         * Decodes a DataLinkStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DataLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DataLinkStatusEnum;

                        /**
                         * Verifies a DataLinkStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DataLinkStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DataLinkStatusEnum;

                        /**
                         * Creates a plain object from a DataLinkStatusEnum message. Also converts values to other types if specified.
                         * @param message DataLinkStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DataLinkStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DataLinkStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DataLinkStatusEnum {

                        /** DataLinkStatus enum. */
                        enum DataLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REQUESTED = 2,
                            PENDING_APPROVAL = 3,
                            ENABLED = 4,
                            DISABLED = 5,
                            REVOKED = 6,
                            REJECTED = 7
                        }
                    }

                    /** Properties of a DataLinkTypeEnum. */
                    interface IDataLinkTypeEnum {
                    }

                    /** Represents a DataLinkTypeEnum. */
                    class DataLinkTypeEnum implements IDataLinkTypeEnum {

                        /**
                         * Constructs a new DataLinkTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDataLinkTypeEnum);

                        /**
                         * Creates a new DataLinkTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DataLinkTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDataLinkTypeEnum): google.ads.googleads.v23.enums.DataLinkTypeEnum;

                        /**
                         * Encodes the specified DataLinkTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DataLinkTypeEnum.verify|verify} messages.
                         * @param message DataLinkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDataLinkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataLinkTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DataLinkTypeEnum.verify|verify} messages.
                         * @param message DataLinkTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDataLinkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataLinkTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DataLinkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DataLinkTypeEnum;

                        /**
                         * Decodes a DataLinkTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DataLinkTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DataLinkTypeEnum;

                        /**
                         * Verifies a DataLinkTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataLinkTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DataLinkTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DataLinkTypeEnum;

                        /**
                         * Creates a plain object from a DataLinkTypeEnum message. Also converts values to other types if specified.
                         * @param message DataLinkTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DataLinkTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataLinkTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DataLinkTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DataLinkTypeEnum {

                        /** DataLinkType enum. */
                        enum DataLinkType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VIDEO = 2
                        }
                    }

                    /** Properties of a DemandGenChannelConfigEnum. */
                    interface IDemandGenChannelConfigEnum {
                    }

                    /** Represents a DemandGenChannelConfigEnum. */
                    class DemandGenChannelConfigEnum implements IDemandGenChannelConfigEnum {

                        /**
                         * Constructs a new DemandGenChannelConfigEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDemandGenChannelConfigEnum);

                        /**
                         * Creates a new DemandGenChannelConfigEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DemandGenChannelConfigEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDemandGenChannelConfigEnum): google.ads.googleads.v23.enums.DemandGenChannelConfigEnum;

                        /**
                         * Encodes the specified DemandGenChannelConfigEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DemandGenChannelConfigEnum.verify|verify} messages.
                         * @param message DemandGenChannelConfigEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDemandGenChannelConfigEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DemandGenChannelConfigEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DemandGenChannelConfigEnum.verify|verify} messages.
                         * @param message DemandGenChannelConfigEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDemandGenChannelConfigEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DemandGenChannelConfigEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DemandGenChannelConfigEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DemandGenChannelConfigEnum;

                        /**
                         * Decodes a DemandGenChannelConfigEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DemandGenChannelConfigEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DemandGenChannelConfigEnum;

                        /**
                         * Verifies a DemandGenChannelConfigEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DemandGenChannelConfigEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DemandGenChannelConfigEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DemandGenChannelConfigEnum;

                        /**
                         * Creates a plain object from a DemandGenChannelConfigEnum message. Also converts values to other types if specified.
                         * @param message DemandGenChannelConfigEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DemandGenChannelConfigEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DemandGenChannelConfigEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DemandGenChannelConfigEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DemandGenChannelConfigEnum {

                        /** DemandGenChannelConfig enum. */
                        enum DemandGenChannelConfig {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CHANNEL_STRATEGY = 2,
                            SELECTED_CHANNELS = 3
                        }
                    }

                    /** Properties of a DemandGenChannelStrategyEnum. */
                    interface IDemandGenChannelStrategyEnum {
                    }

                    /** Represents a DemandGenChannelStrategyEnum. */
                    class DemandGenChannelStrategyEnum implements IDemandGenChannelStrategyEnum {

                        /**
                         * Constructs a new DemandGenChannelStrategyEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDemandGenChannelStrategyEnum);

                        /**
                         * Creates a new DemandGenChannelStrategyEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DemandGenChannelStrategyEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDemandGenChannelStrategyEnum): google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum;

                        /**
                         * Encodes the specified DemandGenChannelStrategyEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum.verify|verify} messages.
                         * @param message DemandGenChannelStrategyEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDemandGenChannelStrategyEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DemandGenChannelStrategyEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum.verify|verify} messages.
                         * @param message DemandGenChannelStrategyEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDemandGenChannelStrategyEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DemandGenChannelStrategyEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DemandGenChannelStrategyEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum;

                        /**
                         * Decodes a DemandGenChannelStrategyEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DemandGenChannelStrategyEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum;

                        /**
                         * Verifies a DemandGenChannelStrategyEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DemandGenChannelStrategyEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DemandGenChannelStrategyEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum;

                        /**
                         * Creates a plain object from a DemandGenChannelStrategyEnum message. Also converts values to other types if specified.
                         * @param message DemandGenChannelStrategyEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DemandGenChannelStrategyEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DemandGenChannelStrategyEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DemandGenChannelStrategyEnum {

                        /** DemandGenChannelStrategy enum. */
                        enum DemandGenChannelStrategy {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ALL_CHANNELS = 2,
                            ALL_OWNED_AND_OPERATED_CHANNELS = 3
                        }
                    }

                    /** Properties of a DistanceBucketEnum. */
                    interface IDistanceBucketEnum {
                    }

                    /** Represents a DistanceBucketEnum. */
                    class DistanceBucketEnum implements IDistanceBucketEnum {

                        /**
                         * Constructs a new DistanceBucketEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IDistanceBucketEnum);

                        /**
                         * Creates a new DistanceBucketEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DistanceBucketEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IDistanceBucketEnum): google.ads.googleads.v23.enums.DistanceBucketEnum;

                        /**
                         * Encodes the specified DistanceBucketEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.DistanceBucketEnum.verify|verify} messages.
                         * @param message DistanceBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IDistanceBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DistanceBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.DistanceBucketEnum.verify|verify} messages.
                         * @param message DistanceBucketEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IDistanceBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DistanceBucketEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DistanceBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.DistanceBucketEnum;

                        /**
                         * Decodes a DistanceBucketEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DistanceBucketEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.DistanceBucketEnum;

                        /**
                         * Verifies a DistanceBucketEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DistanceBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DistanceBucketEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.DistanceBucketEnum;

                        /**
                         * Creates a plain object from a DistanceBucketEnum message. Also converts values to other types if specified.
                         * @param message DistanceBucketEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.DistanceBucketEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DistanceBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DistanceBucketEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DistanceBucketEnum {

                        /** DistanceBucket enum. */
                        enum DistanceBucket {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WITHIN_700M = 2,
                            WITHIN_1KM = 3,
                            WITHIN_5KM = 4,
                            WITHIN_10KM = 5,
                            WITHIN_15KM = 6,
                            WITHIN_20KM = 7,
                            WITHIN_25KM = 8,
                            WITHIN_30KM = 9,
                            WITHIN_35KM = 10,
                            WITHIN_40KM = 11,
                            WITHIN_45KM = 12,
                            WITHIN_50KM = 13,
                            WITHIN_55KM = 14,
                            WITHIN_60KM = 15,
                            WITHIN_65KM = 16,
                            BEYOND_65KM = 17,
                            WITHIN_0_7MILES = 18,
                            WITHIN_1MILE = 19,
                            WITHIN_5MILES = 20,
                            WITHIN_10MILES = 21,
                            WITHIN_15MILES = 22,
                            WITHIN_20MILES = 23,
                            WITHIN_25MILES = 24,
                            WITHIN_30MILES = 25,
                            WITHIN_35MILES = 26,
                            WITHIN_40MILES = 27,
                            BEYOND_40MILES = 28
                        }
                    }

                    /** Properties of an EuPoliticalAdvertisingStatusEnum. */
                    interface IEuPoliticalAdvertisingStatusEnum {
                    }

                    /** Represents an EuPoliticalAdvertisingStatusEnum. */
                    class EuPoliticalAdvertisingStatusEnum implements IEuPoliticalAdvertisingStatusEnum {

                        /**
                         * Constructs a new EuPoliticalAdvertisingStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IEuPoliticalAdvertisingStatusEnum);

                        /**
                         * Creates a new EuPoliticalAdvertisingStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EuPoliticalAdvertisingStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IEuPoliticalAdvertisingStatusEnum): google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum;

                        /**
                         * Encodes the specified EuPoliticalAdvertisingStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum.verify|verify} messages.
                         * @param message EuPoliticalAdvertisingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IEuPoliticalAdvertisingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EuPoliticalAdvertisingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum.verify|verify} messages.
                         * @param message EuPoliticalAdvertisingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IEuPoliticalAdvertisingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EuPoliticalAdvertisingStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EuPoliticalAdvertisingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum;

                        /**
                         * Decodes an EuPoliticalAdvertisingStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EuPoliticalAdvertisingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum;

                        /**
                         * Verifies an EuPoliticalAdvertisingStatusEnum message.
                         * @param message Plain 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 EuPoliticalAdvertisingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EuPoliticalAdvertisingStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum;

                        /**
                         * Creates a plain object from an EuPoliticalAdvertisingStatusEnum message. Also converts values to other types if specified.
                         * @param message EuPoliticalAdvertisingStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EuPoliticalAdvertisingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EuPoliticalAdvertisingStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace EuPoliticalAdvertisingStatusEnum {

                        /** EuPoliticalAdvertisingStatus enum. */
                        enum EuPoliticalAdvertisingStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONTAINS_EU_POLITICAL_ADVERTISING = 2,
                            DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING = 3
                        }
                    }

                    /** Properties of an ExperimentStatusEnum. */
                    interface IExperimentStatusEnum {
                    }

                    /** Represents an ExperimentStatusEnum. */
                    class ExperimentStatusEnum implements IExperimentStatusEnum {

                        /**
                         * Constructs a new ExperimentStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IExperimentStatusEnum);

                        /**
                         * Creates a new ExperimentStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IExperimentStatusEnum): google.ads.googleads.v23.enums.ExperimentStatusEnum;

                        /**
                         * Encodes the specified ExperimentStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentStatusEnum.verify|verify} messages.
                         * @param message ExperimentStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IExperimentStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentStatusEnum.verify|verify} messages.
                         * @param message ExperimentStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IExperimentStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ExperimentStatusEnum;

                        /**
                         * Decodes an ExperimentStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ExperimentStatusEnum;

                        /**
                         * Verifies an ExperimentStatusEnum message.
                         * @param message Plain 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 ExperimentStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ExperimentStatusEnum;

                        /**
                         * Creates a plain object from an ExperimentStatusEnum message. Also converts values to other types if specified.
                         * @param message ExperimentStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ExperimentStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExperimentStatusEnum {

                        /** ExperimentStatus enum. */
                        enum ExperimentStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3,
                            HALTED = 4,
                            PROMOTED = 5,
                            SETUP = 6,
                            INITIATED = 7,
                            GRADUATED = 8
                        }
                    }

                    /** Properties of an ExperimentTypeEnum. */
                    interface IExperimentTypeEnum {
                    }

                    /** Represents an ExperimentTypeEnum. */
                    class ExperimentTypeEnum implements IExperimentTypeEnum {

                        /**
                         * Constructs a new ExperimentTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IExperimentTypeEnum);

                        /**
                         * Creates a new ExperimentTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IExperimentTypeEnum): google.ads.googleads.v23.enums.ExperimentTypeEnum;

                        /**
                         * Encodes the specified ExperimentTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentTypeEnum.verify|verify} messages.
                         * @param message ExperimentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IExperimentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ExperimentTypeEnum.verify|verify} messages.
                         * @param message ExperimentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IExperimentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ExperimentTypeEnum;

                        /**
                         * Decodes an ExperimentTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ExperimentTypeEnum;

                        /**
                         * Verifies an ExperimentTypeEnum message.
                         * @param message Plain 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 ExperimentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ExperimentTypeEnum;

                        /**
                         * Creates a plain object from an ExperimentTypeEnum message. Also converts values to other types if specified.
                         * @param message ExperimentTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ExperimentTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExperimentTypeEnum {

                        /** ExperimentType enum. */
                        enum ExperimentType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DISPLAY_AND_VIDEO_360 = 2,
                            AD_VARIATION = 3,
                            YOUTUBE_CUSTOM = 5,
                            DISPLAY_CUSTOM = 6,
                            SEARCH_CUSTOM = 7,
                            DISPLAY_AUTOMATED_BIDDING_STRATEGY = 8,
                            SEARCH_AUTOMATED_BIDDING_STRATEGY = 9,
                            SHOPPING_AUTOMATED_BIDDING_STRATEGY = 10,
                            SMART_MATCHING = 11,
                            HOTEL_CUSTOM = 12
                        }
                    }

                    /** Properties of a GeoTargetConstantStatusEnum. */
                    interface IGeoTargetConstantStatusEnum {
                    }

                    /** Represents a GeoTargetConstantStatusEnum. */
                    class GeoTargetConstantStatusEnum implements IGeoTargetConstantStatusEnum {

                        /**
                         * Constructs a new GeoTargetConstantStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGeoTargetConstantStatusEnum);

                        /**
                         * Creates a new GeoTargetConstantStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetConstantStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGeoTargetConstantStatusEnum): google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum;

                        /**
                         * Encodes the specified GeoTargetConstantStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum.verify|verify} messages.
                         * @param message GeoTargetConstantStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGeoTargetConstantStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstantStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum.verify|verify} messages.
                         * @param message GeoTargetConstantStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGeoTargetConstantStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstantStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeoTargetConstantStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum;

                        /**
                         * Decodes a GeoTargetConstantStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeoTargetConstantStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum;

                        /**
                         * Verifies a GeoTargetConstantStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstantStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeoTargetConstantStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum;

                        /**
                         * Creates a plain object from a GeoTargetConstantStatusEnum message. Also converts values to other types if specified.
                         * @param message GeoTargetConstantStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstantStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeoTargetConstantStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GeoTargetConstantStatusEnum {

                        /** GeoTargetConstantStatus enum. */
                        enum GeoTargetConstantStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVAL_PLANNED = 3
                        }
                    }

                    /** Properties of a GeoTargetingTypeEnum. */
                    interface IGeoTargetingTypeEnum {
                    }

                    /** Represents a GeoTargetingTypeEnum. */
                    class GeoTargetingTypeEnum implements IGeoTargetingTypeEnum {

                        /**
                         * Constructs a new GeoTargetingTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGeoTargetingTypeEnum);

                        /**
                         * Creates a new GeoTargetingTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetingTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGeoTargetingTypeEnum): google.ads.googleads.v23.enums.GeoTargetingTypeEnum;

                        /**
                         * Encodes the specified GeoTargetingTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GeoTargetingTypeEnum.verify|verify} messages.
                         * @param message GeoTargetingTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGeoTargetingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetingTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GeoTargetingTypeEnum.verify|verify} messages.
                         * @param message GeoTargetingTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGeoTargetingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetingTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeoTargetingTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GeoTargetingTypeEnum;

                        /**
                         * Decodes a GeoTargetingTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeoTargetingTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GeoTargetingTypeEnum;

                        /**
                         * Verifies a GeoTargetingTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetingTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeoTargetingTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GeoTargetingTypeEnum;

                        /**
                         * Creates a plain object from a GeoTargetingTypeEnum message. Also converts values to other types if specified.
                         * @param message GeoTargetingTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GeoTargetingTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetingTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeoTargetingTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GeoTargetingTypeEnum {

                        /** GeoTargetingType enum. */
                        enum GeoTargetingType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AREA_OF_INTEREST = 2,
                            LOCATION_OF_PRESENCE = 3
                        }
                    }

                    /** Properties of a GoalConfigLevelEnum. */
                    interface IGoalConfigLevelEnum {
                    }

                    /** Represents a GoalConfigLevelEnum. */
                    class GoalConfigLevelEnum implements IGoalConfigLevelEnum {

                        /**
                         * Constructs a new GoalConfigLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGoalConfigLevelEnum);

                        /**
                         * Creates a new GoalConfigLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoalConfigLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGoalConfigLevelEnum): google.ads.googleads.v23.enums.GoalConfigLevelEnum;

                        /**
                         * Encodes the specified GoalConfigLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GoalConfigLevelEnum.verify|verify} messages.
                         * @param message GoalConfigLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGoalConfigLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoalConfigLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GoalConfigLevelEnum.verify|verify} messages.
                         * @param message GoalConfigLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGoalConfigLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoalConfigLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoalConfigLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GoalConfigLevelEnum;

                        /**
                         * Decodes a GoalConfigLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoalConfigLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GoalConfigLevelEnum;

                        /**
                         * Verifies a GoalConfigLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoalConfigLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoalConfigLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GoalConfigLevelEnum;

                        /**
                         * Creates a plain object from a GoalConfigLevelEnum message. Also converts values to other types if specified.
                         * @param message GoalConfigLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GoalConfigLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoalConfigLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoalConfigLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoalConfigLevelEnum {

                        /** GoalConfigLevel enum. */
                        enum GoalConfigLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER = 2,
                            CAMPAIGN = 3
                        }
                    }

                    /** Properties of a GoalOptimizationEligibilityEnum. */
                    interface IGoalOptimizationEligibilityEnum {
                    }

                    /** Represents a GoalOptimizationEligibilityEnum. */
                    class GoalOptimizationEligibilityEnum implements IGoalOptimizationEligibilityEnum {

                        /**
                         * Constructs a new GoalOptimizationEligibilityEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGoalOptimizationEligibilityEnum);

                        /**
                         * Creates a new GoalOptimizationEligibilityEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoalOptimizationEligibilityEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGoalOptimizationEligibilityEnum): google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum;

                        /**
                         * Encodes the specified GoalOptimizationEligibilityEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum.verify|verify} messages.
                         * @param message GoalOptimizationEligibilityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGoalOptimizationEligibilityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoalOptimizationEligibilityEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum.verify|verify} messages.
                         * @param message GoalOptimizationEligibilityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGoalOptimizationEligibilityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoalOptimizationEligibilityEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoalOptimizationEligibilityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum;

                        /**
                         * Decodes a GoalOptimizationEligibilityEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoalOptimizationEligibilityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum;

                        /**
                         * Verifies a GoalOptimizationEligibilityEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoalOptimizationEligibilityEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoalOptimizationEligibilityEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum;

                        /**
                         * Creates a plain object from a GoalOptimizationEligibilityEnum message. Also converts values to other types if specified.
                         * @param message GoalOptimizationEligibilityEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoalOptimizationEligibilityEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoalOptimizationEligibilityEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoalOptimizationEligibilityEnum {

                        /** GoalOptimizationEligibility enum. */
                        enum GoalOptimizationEligibility {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ELIGIBLE = 2,
                            INELIGIBLE = 3
                        }
                    }

                    /** Properties of a GoalTypeEnum. */
                    interface IGoalTypeEnum {
                    }

                    /** Represents a GoalTypeEnum. */
                    class GoalTypeEnum implements IGoalTypeEnum {

                        /**
                         * Constructs a new GoalTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGoalTypeEnum);

                        /**
                         * Creates a new GoalTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoalTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGoalTypeEnum): google.ads.googleads.v23.enums.GoalTypeEnum;

                        /**
                         * Encodes the specified GoalTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GoalTypeEnum.verify|verify} messages.
                         * @param message GoalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GoalTypeEnum.verify|verify} messages.
                         * @param message GoalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoalTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GoalTypeEnum;

                        /**
                         * Decodes a GoalTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GoalTypeEnum;

                        /**
                         * Verifies a GoalTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoalTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GoalTypeEnum;

                        /**
                         * Creates a plain object from a GoalTypeEnum message. Also converts values to other types if specified.
                         * @param message GoalTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GoalTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoalTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoalTypeEnum {

                        /** GoalType enum. */
                        enum GoalType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER_RETENTION = 3
                        }
                    }

                    /** Properties of a GoogleAdsFieldCategoryEnum. */
                    interface IGoogleAdsFieldCategoryEnum {
                    }

                    /** Represents a GoogleAdsFieldCategoryEnum. */
                    class GoogleAdsFieldCategoryEnum implements IGoogleAdsFieldCategoryEnum {

                        /**
                         * Constructs a new GoogleAdsFieldCategoryEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGoogleAdsFieldCategoryEnum);

                        /**
                         * Creates a new GoogleAdsFieldCategoryEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsFieldCategoryEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGoogleAdsFieldCategoryEnum): google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum;

                        /**
                         * Encodes the specified GoogleAdsFieldCategoryEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum.verify|verify} messages.
                         * @param message GoogleAdsFieldCategoryEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGoogleAdsFieldCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsFieldCategoryEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum.verify|verify} messages.
                         * @param message GoogleAdsFieldCategoryEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGoogleAdsFieldCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsFieldCategoryEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleAdsFieldCategoryEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum;

                        /**
                         * Decodes a GoogleAdsFieldCategoryEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsFieldCategoryEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum;

                        /**
                         * Verifies a GoogleAdsFieldCategoryEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsFieldCategoryEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleAdsFieldCategoryEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum;

                        /**
                         * Creates a plain object from a GoogleAdsFieldCategoryEnum message. Also converts values to other types if specified.
                         * @param message GoogleAdsFieldCategoryEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsFieldCategoryEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleAdsFieldCategoryEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoogleAdsFieldCategoryEnum {

                        /** GoogleAdsFieldCategory enum. */
                        enum GoogleAdsFieldCategory {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RESOURCE = 2,
                            ATTRIBUTE = 3,
                            SEGMENT = 5,
                            METRIC = 6
                        }
                    }

                    /** Properties of a GoogleAdsFieldDataTypeEnum. */
                    interface IGoogleAdsFieldDataTypeEnum {
                    }

                    /** Represents a GoogleAdsFieldDataTypeEnum. */
                    class GoogleAdsFieldDataTypeEnum implements IGoogleAdsFieldDataTypeEnum {

                        /**
                         * Constructs a new GoogleAdsFieldDataTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGoogleAdsFieldDataTypeEnum);

                        /**
                         * Creates a new GoogleAdsFieldDataTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsFieldDataTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGoogleAdsFieldDataTypeEnum): google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum;

                        /**
                         * Encodes the specified GoogleAdsFieldDataTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum.verify|verify} messages.
                         * @param message GoogleAdsFieldDataTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGoogleAdsFieldDataTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsFieldDataTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum.verify|verify} messages.
                         * @param message GoogleAdsFieldDataTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGoogleAdsFieldDataTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsFieldDataTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleAdsFieldDataTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum;

                        /**
                         * Decodes a GoogleAdsFieldDataTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsFieldDataTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum;

                        /**
                         * Verifies a GoogleAdsFieldDataTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsFieldDataTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleAdsFieldDataTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum;

                        /**
                         * Creates a plain object from a GoogleAdsFieldDataTypeEnum message. Also converts values to other types if specified.
                         * @param message GoogleAdsFieldDataTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsFieldDataTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleAdsFieldDataTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoogleAdsFieldDataTypeEnum {

                        /** GoogleAdsFieldDataType enum. */
                        enum GoogleAdsFieldDataType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BOOLEAN = 2,
                            DATE = 3,
                            DOUBLE = 4,
                            ENUM = 5,
                            FLOAT = 6,
                            INT32 = 7,
                            INT64 = 8,
                            MESSAGE = 9,
                            RESOURCE_NAME = 10,
                            STRING = 11,
                            UINT64 = 12
                        }
                    }

                    /** Properties of a GoogleVoiceCallStatusEnum. */
                    interface IGoogleVoiceCallStatusEnum {
                    }

                    /** Represents a GoogleVoiceCallStatusEnum. */
                    class GoogleVoiceCallStatusEnum implements IGoogleVoiceCallStatusEnum {

                        /**
                         * Constructs a new GoogleVoiceCallStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IGoogleVoiceCallStatusEnum);

                        /**
                         * Creates a new GoogleVoiceCallStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleVoiceCallStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IGoogleVoiceCallStatusEnum): google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum;

                        /**
                         * Encodes the specified GoogleVoiceCallStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum.verify|verify} messages.
                         * @param message GoogleVoiceCallStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IGoogleVoiceCallStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleVoiceCallStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum.verify|verify} messages.
                         * @param message GoogleVoiceCallStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IGoogleVoiceCallStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleVoiceCallStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleVoiceCallStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum;

                        /**
                         * Decodes a GoogleVoiceCallStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleVoiceCallStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum;

                        /**
                         * Verifies a GoogleVoiceCallStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleVoiceCallStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleVoiceCallStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum;

                        /**
                         * Creates a plain object from a GoogleVoiceCallStatusEnum message. Also converts values to other types if specified.
                         * @param message GoogleVoiceCallStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleVoiceCallStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleVoiceCallStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoogleVoiceCallStatusEnum {

                        /** GoogleVoiceCallStatus enum. */
                        enum GoogleVoiceCallStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MISSED = 2,
                            RECEIVED = 3
                        }
                    }

                    /** Properties of a HotelAssetSuggestionStatusEnum. */
                    interface IHotelAssetSuggestionStatusEnum {
                    }

                    /** Represents a HotelAssetSuggestionStatusEnum. */
                    class HotelAssetSuggestionStatusEnum implements IHotelAssetSuggestionStatusEnum {

                        /**
                         * Constructs a new HotelAssetSuggestionStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IHotelAssetSuggestionStatusEnum);

                        /**
                         * Creates a new HotelAssetSuggestionStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelAssetSuggestionStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IHotelAssetSuggestionStatusEnum): google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum;

                        /**
                         * Encodes the specified HotelAssetSuggestionStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum.verify|verify} messages.
                         * @param message HotelAssetSuggestionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IHotelAssetSuggestionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelAssetSuggestionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum.verify|verify} messages.
                         * @param message HotelAssetSuggestionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IHotelAssetSuggestionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelAssetSuggestionStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelAssetSuggestionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum;

                        /**
                         * Decodes a HotelAssetSuggestionStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelAssetSuggestionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum;

                        /**
                         * Verifies a HotelAssetSuggestionStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelAssetSuggestionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelAssetSuggestionStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum;

                        /**
                         * Creates a plain object from a HotelAssetSuggestionStatusEnum message. Also converts values to other types if specified.
                         * @param message HotelAssetSuggestionStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelAssetSuggestionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelAssetSuggestionStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace HotelAssetSuggestionStatusEnum {

                        /** HotelAssetSuggestionStatus enum. */
                        enum HotelAssetSuggestionStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SUCCESS = 2,
                            HOTEL_NOT_FOUND = 3,
                            INVALID_PLACE_ID = 4
                        }
                    }

                    /** Properties of a HotelReconciliationStatusEnum. */
                    interface IHotelReconciliationStatusEnum {
                    }

                    /** Represents a HotelReconciliationStatusEnum. */
                    class HotelReconciliationStatusEnum implements IHotelReconciliationStatusEnum {

                        /**
                         * Constructs a new HotelReconciliationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IHotelReconciliationStatusEnum);

                        /**
                         * Creates a new HotelReconciliationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelReconciliationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IHotelReconciliationStatusEnum): google.ads.googleads.v23.enums.HotelReconciliationStatusEnum;

                        /**
                         * Encodes the specified HotelReconciliationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.HotelReconciliationStatusEnum.verify|verify} messages.
                         * @param message HotelReconciliationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IHotelReconciliationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelReconciliationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.HotelReconciliationStatusEnum.verify|verify} messages.
                         * @param message HotelReconciliationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IHotelReconciliationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelReconciliationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelReconciliationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.HotelReconciliationStatusEnum;

                        /**
                         * Decodes a HotelReconciliationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelReconciliationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.HotelReconciliationStatusEnum;

                        /**
                         * Verifies a HotelReconciliationStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelReconciliationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelReconciliationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.HotelReconciliationStatusEnum;

                        /**
                         * Creates a plain object from a HotelReconciliationStatusEnum message. Also converts values to other types if specified.
                         * @param message HotelReconciliationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.HotelReconciliationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelReconciliationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelReconciliationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace HotelReconciliationStatusEnum {

                        /** HotelReconciliationStatus enum. */
                        enum HotelReconciliationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RESERVATION_ENABLED = 2,
                            RECONCILIATION_NEEDED = 3,
                            RECONCILED = 4,
                            CANCELED = 5
                        }
                    }

                    /** Properties of an IdentityVerificationProgramEnum. */
                    interface IIdentityVerificationProgramEnum {
                    }

                    /** Represents an IdentityVerificationProgramEnum. */
                    class IdentityVerificationProgramEnum implements IIdentityVerificationProgramEnum {

                        /**
                         * Constructs a new IdentityVerificationProgramEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IIdentityVerificationProgramEnum);

                        /**
                         * Creates a new IdentityVerificationProgramEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IdentityVerificationProgramEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IIdentityVerificationProgramEnum): google.ads.googleads.v23.enums.IdentityVerificationProgramEnum;

                        /**
                         * Encodes the specified IdentityVerificationProgramEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.verify|verify} messages.
                         * @param message IdentityVerificationProgramEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IIdentityVerificationProgramEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdentityVerificationProgramEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.verify|verify} messages.
                         * @param message IdentityVerificationProgramEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IIdentityVerificationProgramEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdentityVerificationProgramEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IdentityVerificationProgramEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.IdentityVerificationProgramEnum;

                        /**
                         * Decodes an IdentityVerificationProgramEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IdentityVerificationProgramEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.IdentityVerificationProgramEnum;

                        /**
                         * Verifies an IdentityVerificationProgramEnum message.
                         * @param message Plain 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 IdentityVerificationProgramEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IdentityVerificationProgramEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.IdentityVerificationProgramEnum;

                        /**
                         * Creates a plain object from an IdentityVerificationProgramEnum message. Also converts values to other types if specified.
                         * @param message IdentityVerificationProgramEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.IdentityVerificationProgramEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdentityVerificationProgramEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IdentityVerificationProgramEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IdentityVerificationProgramEnum {

                        /** IdentityVerificationProgram enum. */
                        enum IdentityVerificationProgram {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADVERTISER_IDENTITY_VERIFICATION = 2
                        }
                    }

                    /** Properties of an IdentityVerificationProgramStatusEnum. */
                    interface IIdentityVerificationProgramStatusEnum {
                    }

                    /** Represents an IdentityVerificationProgramStatusEnum. */
                    class IdentityVerificationProgramStatusEnum implements IIdentityVerificationProgramStatusEnum {

                        /**
                         * Constructs a new IdentityVerificationProgramStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IIdentityVerificationProgramStatusEnum);

                        /**
                         * Creates a new IdentityVerificationProgramStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IdentityVerificationProgramStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IIdentityVerificationProgramStatusEnum): google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum;

                        /**
                         * Encodes the specified IdentityVerificationProgramStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum.verify|verify} messages.
                         * @param message IdentityVerificationProgramStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IIdentityVerificationProgramStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdentityVerificationProgramStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum.verify|verify} messages.
                         * @param message IdentityVerificationProgramStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IIdentityVerificationProgramStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdentityVerificationProgramStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IdentityVerificationProgramStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum;

                        /**
                         * Decodes an IdentityVerificationProgramStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IdentityVerificationProgramStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum;

                        /**
                         * Verifies an IdentityVerificationProgramStatusEnum message.
                         * @param message Plain 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 IdentityVerificationProgramStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IdentityVerificationProgramStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum;

                        /**
                         * Creates a plain object from an IdentityVerificationProgramStatusEnum message. Also converts values to other types if specified.
                         * @param message IdentityVerificationProgramStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdentityVerificationProgramStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IdentityVerificationProgramStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IdentityVerificationProgramStatusEnum {

                        /** IdentityVerificationProgramStatus enum. */
                        enum IdentityVerificationProgramStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING_USER_ACTION = 2,
                            PENDING_REVIEW = 3,
                            SUCCESS = 4,
                            FAILURE = 5
                        }
                    }

                    /** Properties of an IncentiveStateEnum. */
                    interface IIncentiveStateEnum {
                    }

                    /** Represents an IncentiveStateEnum. */
                    class IncentiveStateEnum implements IIncentiveStateEnum {

                        /**
                         * Constructs a new IncentiveStateEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IIncentiveStateEnum);

                        /**
                         * Creates a new IncentiveStateEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IncentiveStateEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IIncentiveStateEnum): google.ads.googleads.v23.enums.IncentiveStateEnum;

                        /**
                         * Encodes the specified IncentiveStateEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.IncentiveStateEnum.verify|verify} messages.
                         * @param message IncentiveStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IIncentiveStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncentiveStateEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.IncentiveStateEnum.verify|verify} messages.
                         * @param message IncentiveStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IIncentiveStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncentiveStateEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IncentiveStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.IncentiveStateEnum;

                        /**
                         * Decodes an IncentiveStateEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IncentiveStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.IncentiveStateEnum;

                        /**
                         * Verifies an IncentiveStateEnum message.
                         * @param message Plain 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 IncentiveStateEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IncentiveStateEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.IncentiveStateEnum;

                        /**
                         * Creates a plain object from an IncentiveStateEnum message. Also converts values to other types if specified.
                         * @param message IncentiveStateEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.IncentiveStateEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncentiveStateEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IncentiveStateEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IncentiveStateEnum {

                        /** IncentiveState enum. */
                        enum IncentiveState {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REDEEMED = 2,
                            FULFILLED = 3,
                            REWARD_GRANTED = 4,
                            EXPIRED = 5,
                            REWARD_EXPIRED = 6,
                            INVALIDATED = 7,
                            REWARD_EXHAUSTED = 8
                        }
                    }

                    /** Properties of an InsightsTrendEnum. */
                    interface IInsightsTrendEnum {
                    }

                    /** Represents an InsightsTrendEnum. */
                    class InsightsTrendEnum implements IInsightsTrendEnum {

                        /**
                         * Constructs a new InsightsTrendEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IInsightsTrendEnum);

                        /**
                         * Creates a new InsightsTrendEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsightsTrendEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IInsightsTrendEnum): google.ads.googleads.v23.enums.InsightsTrendEnum;

                        /**
                         * Encodes the specified InsightsTrendEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.InsightsTrendEnum.verify|verify} messages.
                         * @param message InsightsTrendEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IInsightsTrendEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsightsTrendEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.InsightsTrendEnum.verify|verify} messages.
                         * @param message InsightsTrendEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IInsightsTrendEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsightsTrendEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsightsTrendEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.InsightsTrendEnum;

                        /**
                         * Decodes an InsightsTrendEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsightsTrendEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.InsightsTrendEnum;

                        /**
                         * Verifies an InsightsTrendEnum message.
                         * @param message Plain 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 InsightsTrendEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsightsTrendEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.InsightsTrendEnum;

                        /**
                         * Creates a plain object from an InsightsTrendEnum message. Also converts values to other types if specified.
                         * @param message InsightsTrendEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.InsightsTrendEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsightsTrendEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsightsTrendEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace InsightsTrendEnum {

                        /** InsightsTrend enum. */
                        enum InsightsTrend {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EMERGING = 2,
                            RISING = 3,
                            SUSTAINED = 4,
                            DECLINING = 5
                        }
                    }

                    /** Properties of an InvoiceTypeEnum. */
                    interface IInvoiceTypeEnum {
                    }

                    /** Represents an InvoiceTypeEnum. */
                    class InvoiceTypeEnum implements IInvoiceTypeEnum {

                        /**
                         * Constructs a new InvoiceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IInvoiceTypeEnum);

                        /**
                         * Creates a new InvoiceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InvoiceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IInvoiceTypeEnum): google.ads.googleads.v23.enums.InvoiceTypeEnum;

                        /**
                         * Encodes the specified InvoiceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.InvoiceTypeEnum.verify|verify} messages.
                         * @param message InvoiceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IInvoiceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InvoiceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.InvoiceTypeEnum.verify|verify} messages.
                         * @param message InvoiceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IInvoiceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InvoiceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InvoiceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.InvoiceTypeEnum;

                        /**
                         * Decodes an InvoiceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InvoiceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.InvoiceTypeEnum;

                        /**
                         * Verifies an InvoiceTypeEnum message.
                         * @param message Plain 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 InvoiceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InvoiceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.InvoiceTypeEnum;

                        /**
                         * Creates a plain object from an InvoiceTypeEnum message. Also converts values to other types if specified.
                         * @param message InvoiceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.InvoiceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InvoiceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InvoiceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace InvoiceTypeEnum {

                        /** InvoiceType enum. */
                        enum InvoiceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CREDIT_MEMO = 2,
                            INVOICE = 3
                        }
                    }

                    /** Properties of a KeywordPlanForecastIntervalEnum. */
                    interface IKeywordPlanForecastIntervalEnum {
                    }

                    /** Represents a KeywordPlanForecastIntervalEnum. */
                    class KeywordPlanForecastIntervalEnum implements IKeywordPlanForecastIntervalEnum {

                        /**
                         * Constructs a new KeywordPlanForecastIntervalEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IKeywordPlanForecastIntervalEnum);

                        /**
                         * Creates a new KeywordPlanForecastIntervalEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanForecastIntervalEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IKeywordPlanForecastIntervalEnum): google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum;

                        /**
                         * Encodes the specified KeywordPlanForecastIntervalEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum.verify|verify} messages.
                         * @param message KeywordPlanForecastIntervalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IKeywordPlanForecastIntervalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanForecastIntervalEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum.verify|verify} messages.
                         * @param message KeywordPlanForecastIntervalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IKeywordPlanForecastIntervalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanForecastIntervalEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanForecastIntervalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum;

                        /**
                         * Decodes a KeywordPlanForecastIntervalEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanForecastIntervalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum;

                        /**
                         * Verifies a KeywordPlanForecastIntervalEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanForecastIntervalEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanForecastIntervalEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum;

                        /**
                         * Creates a plain object from a KeywordPlanForecastIntervalEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanForecastIntervalEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanForecastIntervalEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanForecastIntervalEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanForecastIntervalEnum {

                        /** KeywordPlanForecastInterval enum. */
                        enum KeywordPlanForecastInterval {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEXT_WEEK = 3,
                            NEXT_MONTH = 4,
                            NEXT_QUARTER = 5
                        }
                    }

                    /** Properties of a KeywordPlanKeywordAnnotationEnum. */
                    interface IKeywordPlanKeywordAnnotationEnum {
                    }

                    /** Represents a KeywordPlanKeywordAnnotationEnum. */
                    class KeywordPlanKeywordAnnotationEnum implements IKeywordPlanKeywordAnnotationEnum {

                        /**
                         * Constructs a new KeywordPlanKeywordAnnotationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IKeywordPlanKeywordAnnotationEnum);

                        /**
                         * Creates a new KeywordPlanKeywordAnnotationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanKeywordAnnotationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IKeywordPlanKeywordAnnotationEnum): google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum;

                        /**
                         * Encodes the specified KeywordPlanKeywordAnnotationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum.verify|verify} messages.
                         * @param message KeywordPlanKeywordAnnotationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IKeywordPlanKeywordAnnotationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanKeywordAnnotationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum.verify|verify} messages.
                         * @param message KeywordPlanKeywordAnnotationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IKeywordPlanKeywordAnnotationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanKeywordAnnotationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanKeywordAnnotationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum;

                        /**
                         * Decodes a KeywordPlanKeywordAnnotationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanKeywordAnnotationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum;

                        /**
                         * Verifies a KeywordPlanKeywordAnnotationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanKeywordAnnotationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanKeywordAnnotationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum;

                        /**
                         * Creates a plain object from a KeywordPlanKeywordAnnotationEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanKeywordAnnotationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanKeywordAnnotationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanKeywordAnnotationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanKeywordAnnotationEnum {

                        /** KeywordPlanKeywordAnnotation enum. */
                        enum KeywordPlanKeywordAnnotation {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            KEYWORD_CONCEPT = 2
                        }
                    }

                    /** Properties of a KeywordPlanNetworkEnum. */
                    interface IKeywordPlanNetworkEnum {
                    }

                    /** Represents a KeywordPlanNetworkEnum. */
                    class KeywordPlanNetworkEnum implements IKeywordPlanNetworkEnum {

                        /**
                         * Constructs a new KeywordPlanNetworkEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IKeywordPlanNetworkEnum);

                        /**
                         * Creates a new KeywordPlanNetworkEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanNetworkEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IKeywordPlanNetworkEnum): google.ads.googleads.v23.enums.KeywordPlanNetworkEnum;

                        /**
                         * Encodes the specified KeywordPlanNetworkEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.verify|verify} messages.
                         * @param message KeywordPlanNetworkEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IKeywordPlanNetworkEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanNetworkEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.verify|verify} messages.
                         * @param message KeywordPlanNetworkEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IKeywordPlanNetworkEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanNetworkEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanNetworkEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.KeywordPlanNetworkEnum;

                        /**
                         * Decodes a KeywordPlanNetworkEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanNetworkEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.KeywordPlanNetworkEnum;

                        /**
                         * Verifies a KeywordPlanNetworkEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanNetworkEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanNetworkEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.KeywordPlanNetworkEnum;

                        /**
                         * Creates a plain object from a KeywordPlanNetworkEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanNetworkEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.KeywordPlanNetworkEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanNetworkEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanNetworkEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanNetworkEnum {

                        /** KeywordPlanNetwork enum. */
                        enum KeywordPlanNetwork {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GOOGLE_SEARCH = 2,
                            GOOGLE_SEARCH_AND_PARTNERS = 3
                        }
                    }

                    /** Properties of a LabelStatusEnum. */
                    interface ILabelStatusEnum {
                    }

                    /** Represents a LabelStatusEnum. */
                    class LabelStatusEnum implements ILabelStatusEnum {

                        /**
                         * Constructs a new LabelStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILabelStatusEnum);

                        /**
                         * Creates a new LabelStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LabelStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILabelStatusEnum): google.ads.googleads.v23.enums.LabelStatusEnum;

                        /**
                         * Encodes the specified LabelStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LabelStatusEnum.verify|verify} messages.
                         * @param message LabelStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILabelStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LabelStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LabelStatusEnum.verify|verify} messages.
                         * @param message LabelStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILabelStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LabelStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LabelStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LabelStatusEnum;

                        /**
                         * Decodes a LabelStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LabelStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LabelStatusEnum;

                        /**
                         * Verifies a LabelStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LabelStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LabelStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LabelStatusEnum;

                        /**
                         * Creates a plain object from a LabelStatusEnum message. Also converts values to other types if specified.
                         * @param message LabelStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LabelStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LabelStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LabelStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LabelStatusEnum {

                        /** LabelStatus enum. */
                        enum LabelStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a LinkedAccountTypeEnum. */
                    interface ILinkedAccountTypeEnum {
                    }

                    /** Represents a LinkedAccountTypeEnum. */
                    class LinkedAccountTypeEnum implements ILinkedAccountTypeEnum {

                        /**
                         * Constructs a new LinkedAccountTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILinkedAccountTypeEnum);

                        /**
                         * Creates a new LinkedAccountTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LinkedAccountTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILinkedAccountTypeEnum): google.ads.googleads.v23.enums.LinkedAccountTypeEnum;

                        /**
                         * Encodes the specified LinkedAccountTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LinkedAccountTypeEnum.verify|verify} messages.
                         * @param message LinkedAccountTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILinkedAccountTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LinkedAccountTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LinkedAccountTypeEnum.verify|verify} messages.
                         * @param message LinkedAccountTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILinkedAccountTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LinkedAccountTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LinkedAccountTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LinkedAccountTypeEnum;

                        /**
                         * Decodes a LinkedAccountTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LinkedAccountTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LinkedAccountTypeEnum;

                        /**
                         * Verifies a LinkedAccountTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LinkedAccountTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LinkedAccountTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LinkedAccountTypeEnum;

                        /**
                         * Creates a plain object from a LinkedAccountTypeEnum message. Also converts values to other types if specified.
                         * @param message LinkedAccountTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LinkedAccountTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LinkedAccountTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LinkedAccountTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LinkedAccountTypeEnum {

                        /** LinkedAccountType enum. */
                        enum LinkedAccountType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            THIRD_PARTY_APP_ANALYTICS = 2
                        }
                    }

                    /** Properties of a LinkedProductTypeEnum. */
                    interface ILinkedProductTypeEnum {
                    }

                    /** Represents a LinkedProductTypeEnum. */
                    class LinkedProductTypeEnum implements ILinkedProductTypeEnum {

                        /**
                         * Constructs a new LinkedProductTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILinkedProductTypeEnum);

                        /**
                         * Creates a new LinkedProductTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LinkedProductTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILinkedProductTypeEnum): google.ads.googleads.v23.enums.LinkedProductTypeEnum;

                        /**
                         * Encodes the specified LinkedProductTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LinkedProductTypeEnum.verify|verify} messages.
                         * @param message LinkedProductTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILinkedProductTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LinkedProductTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LinkedProductTypeEnum.verify|verify} messages.
                         * @param message LinkedProductTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILinkedProductTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LinkedProductTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LinkedProductTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LinkedProductTypeEnum;

                        /**
                         * Decodes a LinkedProductTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LinkedProductTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LinkedProductTypeEnum;

                        /**
                         * Verifies a LinkedProductTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LinkedProductTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LinkedProductTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LinkedProductTypeEnum;

                        /**
                         * Creates a plain object from a LinkedProductTypeEnum message. Also converts values to other types if specified.
                         * @param message LinkedProductTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LinkedProductTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LinkedProductTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LinkedProductTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LinkedProductTypeEnum {

                        /** LinkedProductType enum. */
                        enum LinkedProductType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DATA_PARTNER = 2,
                            GOOGLE_ADS = 3,
                            HOTEL_CENTER = 7,
                            MERCHANT_CENTER = 8,
                            ADVERTISING_PARTNER = 9
                        }
                    }

                    /** Properties of a ListingGroupFilterCustomAttributeIndexEnum. */
                    interface IListingGroupFilterCustomAttributeIndexEnum {
                    }

                    /** Represents a ListingGroupFilterCustomAttributeIndexEnum. */
                    class ListingGroupFilterCustomAttributeIndexEnum implements IListingGroupFilterCustomAttributeIndexEnum {

                        /**
                         * Constructs a new ListingGroupFilterCustomAttributeIndexEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupFilterCustomAttributeIndexEnum);

                        /**
                         * Creates a new ListingGroupFilterCustomAttributeIndexEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterCustomAttributeIndexEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupFilterCustomAttributeIndexEnum): google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum;

                        /**
                         * Encodes the specified ListingGroupFilterCustomAttributeIndexEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum.verify|verify} messages.
                         * @param message ListingGroupFilterCustomAttributeIndexEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupFilterCustomAttributeIndexEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterCustomAttributeIndexEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum.verify|verify} messages.
                         * @param message ListingGroupFilterCustomAttributeIndexEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupFilterCustomAttributeIndexEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterCustomAttributeIndexEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterCustomAttributeIndexEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum;

                        /**
                         * Decodes a ListingGroupFilterCustomAttributeIndexEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterCustomAttributeIndexEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum;

                        /**
                         * Verifies a ListingGroupFilterCustomAttributeIndexEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterCustomAttributeIndexEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterCustomAttributeIndexEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum;

                        /**
                         * Creates a plain object from a ListingGroupFilterCustomAttributeIndexEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterCustomAttributeIndexEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterCustomAttributeIndexEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterCustomAttributeIndexEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterCustomAttributeIndexEnum {

                        /** ListingGroupFilterCustomAttributeIndex enum. */
                        enum ListingGroupFilterCustomAttributeIndex {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INDEX0 = 2,
                            INDEX1 = 3,
                            INDEX2 = 4,
                            INDEX3 = 5,
                            INDEX4 = 6
                        }
                    }

                    /** Properties of a ListingGroupFilterListingSourceEnum. */
                    interface IListingGroupFilterListingSourceEnum {
                    }

                    /** Represents a ListingGroupFilterListingSourceEnum. */
                    class ListingGroupFilterListingSourceEnum implements IListingGroupFilterListingSourceEnum {

                        /**
                         * Constructs a new ListingGroupFilterListingSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupFilterListingSourceEnum);

                        /**
                         * Creates a new ListingGroupFilterListingSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterListingSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupFilterListingSourceEnum): google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum;

                        /**
                         * Encodes the specified ListingGroupFilterListingSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum.verify|verify} messages.
                         * @param message ListingGroupFilterListingSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupFilterListingSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterListingSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum.verify|verify} messages.
                         * @param message ListingGroupFilterListingSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupFilterListingSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterListingSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterListingSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum;

                        /**
                         * Decodes a ListingGroupFilterListingSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterListingSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum;

                        /**
                         * Verifies a ListingGroupFilterListingSourceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterListingSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterListingSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum;

                        /**
                         * Creates a plain object from a ListingGroupFilterListingSourceEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterListingSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterListingSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterListingSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterListingSourceEnum {

                        /** ListingGroupFilterListingSource enum. */
                        enum ListingGroupFilterListingSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SHOPPING = 2,
                            WEBPAGE = 3
                        }
                    }

                    /** Properties of a ListingGroupFilterProductCategoryLevelEnum. */
                    interface IListingGroupFilterProductCategoryLevelEnum {
                    }

                    /** Represents a ListingGroupFilterProductCategoryLevelEnum. */
                    class ListingGroupFilterProductCategoryLevelEnum implements IListingGroupFilterProductCategoryLevelEnum {

                        /**
                         * Constructs a new ListingGroupFilterProductCategoryLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductCategoryLevelEnum);

                        /**
                         * Creates a new ListingGroupFilterProductCategoryLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterProductCategoryLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductCategoryLevelEnum): google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum;

                        /**
                         * Encodes the specified ListingGroupFilterProductCategoryLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductCategoryLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupFilterProductCategoryLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterProductCategoryLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductCategoryLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupFilterProductCategoryLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterProductCategoryLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterProductCategoryLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum;

                        /**
                         * Decodes a ListingGroupFilterProductCategoryLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterProductCategoryLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum;

                        /**
                         * Verifies a ListingGroupFilterProductCategoryLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterProductCategoryLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterProductCategoryLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum;

                        /**
                         * Creates a plain object from a ListingGroupFilterProductCategoryLevelEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterProductCategoryLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterProductCategoryLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterProductCategoryLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterProductCategoryLevelEnum {

                        /** ListingGroupFilterProductCategoryLevel enum. */
                        enum ListingGroupFilterProductCategoryLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LEVEL1 = 2,
                            LEVEL2 = 3,
                            LEVEL3 = 4,
                            LEVEL4 = 5,
                            LEVEL5 = 6
                        }
                    }

                    /** Properties of a ListingGroupFilterProductChannelEnum. */
                    interface IListingGroupFilterProductChannelEnum {
                    }

                    /** Represents a ListingGroupFilterProductChannelEnum. */
                    class ListingGroupFilterProductChannelEnum implements IListingGroupFilterProductChannelEnum {

                        /**
                         * Constructs a new ListingGroupFilterProductChannelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductChannelEnum);

                        /**
                         * Creates a new ListingGroupFilterProductChannelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterProductChannelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductChannelEnum): google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum;

                        /**
                         * Encodes the specified ListingGroupFilterProductChannelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductChannelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupFilterProductChannelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterProductChannelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductChannelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupFilterProductChannelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterProductChannelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterProductChannelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum;

                        /**
                         * Decodes a ListingGroupFilterProductChannelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterProductChannelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum;

                        /**
                         * Verifies a ListingGroupFilterProductChannelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterProductChannelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterProductChannelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum;

                        /**
                         * Creates a plain object from a ListingGroupFilterProductChannelEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterProductChannelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterProductChannelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterProductChannelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterProductChannelEnum {

                        /** ListingGroupFilterProductChannel enum. */
                        enum ListingGroupFilterProductChannel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ONLINE = 2,
                            LOCAL = 3
                        }
                    }

                    /** Properties of a ListingGroupFilterProductConditionEnum. */
                    interface IListingGroupFilterProductConditionEnum {
                    }

                    /** Represents a ListingGroupFilterProductConditionEnum. */
                    class ListingGroupFilterProductConditionEnum implements IListingGroupFilterProductConditionEnum {

                        /**
                         * Constructs a new ListingGroupFilterProductConditionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductConditionEnum);

                        /**
                         * Creates a new ListingGroupFilterProductConditionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterProductConditionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductConditionEnum): google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum;

                        /**
                         * Encodes the specified ListingGroupFilterProductConditionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductConditionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupFilterProductConditionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterProductConditionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductConditionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupFilterProductConditionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterProductConditionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterProductConditionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum;

                        /**
                         * Decodes a ListingGroupFilterProductConditionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterProductConditionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum;

                        /**
                         * Verifies a ListingGroupFilterProductConditionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterProductConditionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterProductConditionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum;

                        /**
                         * Creates a plain object from a ListingGroupFilterProductConditionEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterProductConditionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterProductConditionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterProductConditionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterProductConditionEnum {

                        /** ListingGroupFilterProductCondition enum. */
                        enum ListingGroupFilterProductCondition {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEW = 2,
                            REFURBISHED = 3,
                            USED = 4
                        }
                    }

                    /** Properties of a ListingGroupFilterProductTypeLevelEnum. */
                    interface IListingGroupFilterProductTypeLevelEnum {
                    }

                    /** Represents a ListingGroupFilterProductTypeLevelEnum. */
                    class ListingGroupFilterProductTypeLevelEnum implements IListingGroupFilterProductTypeLevelEnum {

                        /**
                         * Constructs a new ListingGroupFilterProductTypeLevelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductTypeLevelEnum);

                        /**
                         * Creates a new ListingGroupFilterProductTypeLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterProductTypeLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupFilterProductTypeLevelEnum): google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum;

                        /**
                         * Encodes the specified ListingGroupFilterProductTypeLevelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductTypeLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupFilterProductTypeLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterProductTypeLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum.verify|verify} messages.
                         * @param message ListingGroupFilterProductTypeLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupFilterProductTypeLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterProductTypeLevelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterProductTypeLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum;

                        /**
                         * Decodes a ListingGroupFilterProductTypeLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterProductTypeLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum;

                        /**
                         * Verifies a ListingGroupFilterProductTypeLevelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterProductTypeLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterProductTypeLevelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum;

                        /**
                         * Creates a plain object from a ListingGroupFilterProductTypeLevelEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterProductTypeLevelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterProductTypeLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterProductTypeLevelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterProductTypeLevelEnum {

                        /** ListingGroupFilterProductTypeLevel enum. */
                        enum ListingGroupFilterProductTypeLevel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LEVEL1 = 2,
                            LEVEL2 = 3,
                            LEVEL3 = 4,
                            LEVEL4 = 5,
                            LEVEL5 = 6
                        }
                    }

                    /** Properties of a ListingGroupFilterTypeEnum. */
                    interface IListingGroupFilterTypeEnum {
                    }

                    /** Represents a ListingGroupFilterTypeEnum. */
                    class ListingGroupFilterTypeEnum implements IListingGroupFilterTypeEnum {

                        /**
                         * Constructs a new ListingGroupFilterTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingGroupFilterTypeEnum);

                        /**
                         * Creates a new ListingGroupFilterTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingGroupFilterTypeEnum): google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum;

                        /**
                         * Encodes the specified ListingGroupFilterTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum.verify|verify} messages.
                         * @param message ListingGroupFilterTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingGroupFilterTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum.verify|verify} messages.
                         * @param message ListingGroupFilterTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingGroupFilterTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum;

                        /**
                         * Decodes a ListingGroupFilterTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum;

                        /**
                         * Verifies a ListingGroupFilterTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum;

                        /**
                         * Creates a plain object from a ListingGroupFilterTypeEnum message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterTypeEnum {

                        /** ListingGroupFilterType enum. */
                        enum ListingGroupFilterType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SUBDIVISION = 2,
                            UNIT_INCLUDED = 3,
                            UNIT_EXCLUDED = 4
                        }
                    }

                    /** Properties of a ListingTypeEnum. */
                    interface IListingTypeEnum {
                    }

                    /** Represents a ListingTypeEnum. */
                    class ListingTypeEnum implements IListingTypeEnum {

                        /**
                         * Constructs a new ListingTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IListingTypeEnum);

                        /**
                         * Creates a new ListingTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IListingTypeEnum): google.ads.googleads.v23.enums.ListingTypeEnum;

                        /**
                         * Encodes the specified ListingTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ListingTypeEnum.verify|verify} messages.
                         * @param message ListingTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IListingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ListingTypeEnum.verify|verify} messages.
                         * @param message ListingTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IListingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ListingTypeEnum;

                        /**
                         * Decodes a ListingTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ListingTypeEnum;

                        /**
                         * Verifies a ListingTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ListingTypeEnum;

                        /**
                         * Creates a plain object from a ListingTypeEnum message. Also converts values to other types if specified.
                         * @param message ListingTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ListingTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingTypeEnum {

                        /** ListingType enum. */
                        enum ListingType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VEHICLES = 2
                        }
                    }

                    /** Properties of a LocalServicesBusinessRegistrationCheckRejectionReasonEnum. */
                    interface ILocalServicesBusinessRegistrationCheckRejectionReasonEnum {
                    }

                    /** Represents a LocalServicesBusinessRegistrationCheckRejectionReasonEnum. */
                    class LocalServicesBusinessRegistrationCheckRejectionReasonEnum implements ILocalServicesBusinessRegistrationCheckRejectionReasonEnum {

                        /**
                         * Constructs a new LocalServicesBusinessRegistrationCheckRejectionReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationCheckRejectionReasonEnum);

                        /**
                         * Creates a new LocalServicesBusinessRegistrationCheckRejectionReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesBusinessRegistrationCheckRejectionReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationCheckRejectionReasonEnum): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum;

                        /**
                         * Encodes the specified LocalServicesBusinessRegistrationCheckRejectionReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum.verify|verify} messages.
                         * @param message LocalServicesBusinessRegistrationCheckRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationCheckRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesBusinessRegistrationCheckRejectionReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum.verify|verify} messages.
                         * @param message LocalServicesBusinessRegistrationCheckRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationCheckRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesBusinessRegistrationCheckRejectionReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesBusinessRegistrationCheckRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum;

                        /**
                         * Decodes a LocalServicesBusinessRegistrationCheckRejectionReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesBusinessRegistrationCheckRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum;

                        /**
                         * Verifies a LocalServicesBusinessRegistrationCheckRejectionReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesBusinessRegistrationCheckRejectionReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesBusinessRegistrationCheckRejectionReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum;

                        /**
                         * Creates a plain object from a LocalServicesBusinessRegistrationCheckRejectionReasonEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesBusinessRegistrationCheckRejectionReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesBusinessRegistrationCheckRejectionReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesBusinessRegistrationCheckRejectionReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesBusinessRegistrationCheckRejectionReasonEnum {

                        /** LocalServicesBusinessRegistrationCheckRejectionReason enum. */
                        enum LocalServicesBusinessRegistrationCheckRejectionReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_NAME_MISMATCH = 2,
                            BUSINESS_DETAILS_MISMATCH = 3,
                            ID_NOT_FOUND = 4,
                            POOR_DOCUMENT_IMAGE_QUALITY = 5,
                            DOCUMENT_EXPIRED = 6,
                            DOCUMENT_INVALID = 7,
                            DOCUMENT_TYPE_MISMATCH = 8,
                            DOCUMENT_UNVERIFIABLE = 9,
                            OTHER = 10
                        }
                    }

                    /** Properties of a LocalServicesBusinessRegistrationTypeEnum. */
                    interface ILocalServicesBusinessRegistrationTypeEnum {
                    }

                    /** Represents a LocalServicesBusinessRegistrationTypeEnum. */
                    class LocalServicesBusinessRegistrationTypeEnum implements ILocalServicesBusinessRegistrationTypeEnum {

                        /**
                         * Constructs a new LocalServicesBusinessRegistrationTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationTypeEnum);

                        /**
                         * Creates a new LocalServicesBusinessRegistrationTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesBusinessRegistrationTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationTypeEnum): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum;

                        /**
                         * Encodes the specified LocalServicesBusinessRegistrationTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum.verify|verify} messages.
                         * @param message LocalServicesBusinessRegistrationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesBusinessRegistrationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum.verify|verify} messages.
                         * @param message LocalServicesBusinessRegistrationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesBusinessRegistrationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesBusinessRegistrationTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesBusinessRegistrationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum;

                        /**
                         * Decodes a LocalServicesBusinessRegistrationTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesBusinessRegistrationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum;

                        /**
                         * Verifies a LocalServicesBusinessRegistrationTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesBusinessRegistrationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesBusinessRegistrationTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum;

                        /**
                         * Creates a plain object from a LocalServicesBusinessRegistrationTypeEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesBusinessRegistrationTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesBusinessRegistrationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesBusinessRegistrationTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesBusinessRegistrationTypeEnum {

                        /** LocalServicesBusinessRegistrationType enum. */
                        enum LocalServicesBusinessRegistrationType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NUMBER = 2,
                            DOCUMENT = 3
                        }
                    }

                    /** Properties of a LocalServicesLeadConversationTypeEnum. */
                    interface ILocalServicesLeadConversationTypeEnum {
                    }

                    /** Represents a LocalServicesLeadConversationTypeEnum. */
                    class LocalServicesLeadConversationTypeEnum implements ILocalServicesLeadConversationTypeEnum {

                        /**
                         * Constructs a new LocalServicesLeadConversationTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadConversationTypeEnum);

                        /**
                         * Creates a new LocalServicesLeadConversationTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadConversationTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadConversationTypeEnum): google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum;

                        /**
                         * Encodes the specified LocalServicesLeadConversationTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum.verify|verify} messages.
                         * @param message LocalServicesLeadConversationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLeadConversationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadConversationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum.verify|verify} messages.
                         * @param message LocalServicesLeadConversationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLeadConversationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadConversationTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadConversationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum;

                        /**
                         * Decodes a LocalServicesLeadConversationTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadConversationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum;

                        /**
                         * Verifies a LocalServicesLeadConversationTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadConversationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadConversationTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum;

                        /**
                         * Creates a plain object from a LocalServicesLeadConversationTypeEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadConversationTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadConversationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadConversationTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLeadConversationTypeEnum {

                        /** ConversationType enum. */
                        enum ConversationType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EMAIL = 2,
                            MESSAGE = 3,
                            PHONE_CALL = 4,
                            SMS = 5,
                            BOOKING = 6,
                            WHATSAPP = 7,
                            ADS_API = 8
                        }
                    }

                    /** Properties of a LocalServicesEmployeeStatusEnum. */
                    interface ILocalServicesEmployeeStatusEnum {
                    }

                    /** Represents a LocalServicesEmployeeStatusEnum. */
                    class LocalServicesEmployeeStatusEnum implements ILocalServicesEmployeeStatusEnum {

                        /**
                         * Constructs a new LocalServicesEmployeeStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesEmployeeStatusEnum);

                        /**
                         * Creates a new LocalServicesEmployeeStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesEmployeeStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesEmployeeStatusEnum): google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum;

                        /**
                         * Encodes the specified LocalServicesEmployeeStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum.verify|verify} messages.
                         * @param message LocalServicesEmployeeStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesEmployeeStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesEmployeeStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum.verify|verify} messages.
                         * @param message LocalServicesEmployeeStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesEmployeeStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesEmployeeStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesEmployeeStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum;

                        /**
                         * Decodes a LocalServicesEmployeeStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesEmployeeStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum;

                        /**
                         * Verifies a LocalServicesEmployeeStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesEmployeeStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesEmployeeStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum;

                        /**
                         * Creates a plain object from a LocalServicesEmployeeStatusEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesEmployeeStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesEmployeeStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesEmployeeStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesEmployeeStatusEnum {

                        /** LocalServicesEmployeeStatus enum. */
                        enum LocalServicesEmployeeStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a LocalServicesEmployeeTypeEnum. */
                    interface ILocalServicesEmployeeTypeEnum {
                    }

                    /** Represents a LocalServicesEmployeeTypeEnum. */
                    class LocalServicesEmployeeTypeEnum implements ILocalServicesEmployeeTypeEnum {

                        /**
                         * Constructs a new LocalServicesEmployeeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesEmployeeTypeEnum);

                        /**
                         * Creates a new LocalServicesEmployeeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesEmployeeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesEmployeeTypeEnum): google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum;

                        /**
                         * Encodes the specified LocalServicesEmployeeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum.verify|verify} messages.
                         * @param message LocalServicesEmployeeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesEmployeeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesEmployeeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum.verify|verify} messages.
                         * @param message LocalServicesEmployeeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesEmployeeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesEmployeeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesEmployeeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum;

                        /**
                         * Decodes a LocalServicesEmployeeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesEmployeeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum;

                        /**
                         * Verifies a LocalServicesEmployeeTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesEmployeeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesEmployeeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum;

                        /**
                         * Creates a plain object from a LocalServicesEmployeeTypeEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesEmployeeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesEmployeeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesEmployeeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesEmployeeTypeEnum {

                        /** LocalServicesEmployeeType enum. */
                        enum LocalServicesEmployeeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_OWNER = 2,
                            EMPLOYEE = 3
                        }
                    }

                    /** Properties of a LocalServicesInsuranceRejectionReasonEnum. */
                    interface ILocalServicesInsuranceRejectionReasonEnum {
                    }

                    /** Represents a LocalServicesInsuranceRejectionReasonEnum. */
                    class LocalServicesInsuranceRejectionReasonEnum implements ILocalServicesInsuranceRejectionReasonEnum {

                        /**
                         * Constructs a new LocalServicesInsuranceRejectionReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesInsuranceRejectionReasonEnum);

                        /**
                         * Creates a new LocalServicesInsuranceRejectionReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesInsuranceRejectionReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesInsuranceRejectionReasonEnum): google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum;

                        /**
                         * Encodes the specified LocalServicesInsuranceRejectionReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum.verify|verify} messages.
                         * @param message LocalServicesInsuranceRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesInsuranceRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesInsuranceRejectionReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum.verify|verify} messages.
                         * @param message LocalServicesInsuranceRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesInsuranceRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesInsuranceRejectionReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesInsuranceRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum;

                        /**
                         * Decodes a LocalServicesInsuranceRejectionReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesInsuranceRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum;

                        /**
                         * Verifies a LocalServicesInsuranceRejectionReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesInsuranceRejectionReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesInsuranceRejectionReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum;

                        /**
                         * Creates a plain object from a LocalServicesInsuranceRejectionReasonEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesInsuranceRejectionReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesInsuranceRejectionReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesInsuranceRejectionReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesInsuranceRejectionReasonEnum {

                        /** LocalServicesInsuranceRejectionReason enum. */
                        enum LocalServicesInsuranceRejectionReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_NAME_MISMATCH = 2,
                            INSURANCE_AMOUNT_INSUFFICIENT = 3,
                            EXPIRED = 4,
                            NO_SIGNATURE = 5,
                            NO_POLICY_NUMBER = 6,
                            NO_COMMERCIAL_GENERAL_LIABILITY = 7,
                            EDITABLE_FORMAT = 8,
                            CATEGORY_MISMATCH = 9,
                            MISSING_EXPIRATION_DATE = 10,
                            POOR_QUALITY = 11,
                            POTENTIALLY_EDITED = 12,
                            WRONG_DOCUMENT_TYPE = 13,
                            NON_FINAL = 14,
                            OTHER = 15
                        }
                    }

                    /** Properties of a LocalServicesLeadCreditIssuanceDecisionEnum. */
                    interface ILocalServicesLeadCreditIssuanceDecisionEnum {
                    }

                    /** Represents a LocalServicesLeadCreditIssuanceDecisionEnum. */
                    class LocalServicesLeadCreditIssuanceDecisionEnum implements ILocalServicesLeadCreditIssuanceDecisionEnum {

                        /**
                         * Constructs a new LocalServicesLeadCreditIssuanceDecisionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadCreditIssuanceDecisionEnum);

                        /**
                         * Creates a new LocalServicesLeadCreditIssuanceDecisionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadCreditIssuanceDecisionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadCreditIssuanceDecisionEnum): google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum;

                        /**
                         * Encodes the specified LocalServicesLeadCreditIssuanceDecisionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum.verify|verify} messages.
                         * @param message LocalServicesLeadCreditIssuanceDecisionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLeadCreditIssuanceDecisionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadCreditIssuanceDecisionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum.verify|verify} messages.
                         * @param message LocalServicesLeadCreditIssuanceDecisionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLeadCreditIssuanceDecisionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadCreditIssuanceDecisionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadCreditIssuanceDecisionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum;

                        /**
                         * Decodes a LocalServicesLeadCreditIssuanceDecisionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadCreditIssuanceDecisionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum;

                        /**
                         * Verifies a LocalServicesLeadCreditIssuanceDecisionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadCreditIssuanceDecisionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadCreditIssuanceDecisionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum;

                        /**
                         * Creates a plain object from a LocalServicesLeadCreditIssuanceDecisionEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadCreditIssuanceDecisionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadCreditIssuanceDecisionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadCreditIssuanceDecisionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLeadCreditIssuanceDecisionEnum {

                        /** CreditIssuanceDecision enum. */
                        enum CreditIssuanceDecision {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SUCCESS_NOT_REACHED_THRESHOLD = 2,
                            SUCCESS_REACHED_THRESHOLD = 3,
                            FAIL_OVER_THRESHOLD = 4,
                            FAIL_NOT_ELIGIBLE = 5
                        }
                    }

                    /** Properties of a LocalServicesCreditStateEnum. */
                    interface ILocalServicesCreditStateEnum {
                    }

                    /** Represents a LocalServicesCreditStateEnum. */
                    class LocalServicesCreditStateEnum implements ILocalServicesCreditStateEnum {

                        /**
                         * Constructs a new LocalServicesCreditStateEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesCreditStateEnum);

                        /**
                         * Creates a new LocalServicesCreditStateEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesCreditStateEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesCreditStateEnum): google.ads.googleads.v23.enums.LocalServicesCreditStateEnum;

                        /**
                         * Encodes the specified LocalServicesCreditStateEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesCreditStateEnum.verify|verify} messages.
                         * @param message LocalServicesCreditStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesCreditStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesCreditStateEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesCreditStateEnum.verify|verify} messages.
                         * @param message LocalServicesCreditStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesCreditStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesCreditStateEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesCreditStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesCreditStateEnum;

                        /**
                         * Decodes a LocalServicesCreditStateEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesCreditStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesCreditStateEnum;

                        /**
                         * Verifies a LocalServicesCreditStateEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesCreditStateEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesCreditStateEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesCreditStateEnum;

                        /**
                         * Creates a plain object from a LocalServicesCreditStateEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesCreditStateEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesCreditStateEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesCreditStateEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesCreditStateEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesCreditStateEnum {

                        /** CreditState enum. */
                        enum CreditState {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            CREDITED = 3
                        }
                    }

                    /** Properties of a LocalServicesLeadStatusEnum. */
                    interface ILocalServicesLeadStatusEnum {
                    }

                    /** Represents a LocalServicesLeadStatusEnum. */
                    class LocalServicesLeadStatusEnum implements ILocalServicesLeadStatusEnum {

                        /**
                         * Constructs a new LocalServicesLeadStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadStatusEnum);

                        /**
                         * Creates a new LocalServicesLeadStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadStatusEnum): google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum;

                        /**
                         * Encodes the specified LocalServicesLeadStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum.verify|verify} messages.
                         * @param message LocalServicesLeadStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLeadStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum.verify|verify} messages.
                         * @param message LocalServicesLeadStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLeadStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum;

                        /**
                         * Decodes a LocalServicesLeadStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum;

                        /**
                         * Verifies a LocalServicesLeadStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum;

                        /**
                         * Creates a plain object from a LocalServicesLeadStatusEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLeadStatusEnum {

                        /** LeadStatus enum. */
                        enum LeadStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEW = 2,
                            ACTIVE = 3,
                            BOOKED = 4,
                            DECLINED = 5,
                            EXPIRED = 6,
                            DISABLED = 7,
                            CONSUMER_DECLINED = 8,
                            WIPED_OUT = 9
                        }
                    }

                    /** Properties of a LocalServicesLeadSurveyAnswerEnum. */
                    interface ILocalServicesLeadSurveyAnswerEnum {
                    }

                    /** Represents a LocalServicesLeadSurveyAnswerEnum. */
                    class LocalServicesLeadSurveyAnswerEnum implements ILocalServicesLeadSurveyAnswerEnum {

                        /**
                         * Constructs a new LocalServicesLeadSurveyAnswerEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyAnswerEnum);

                        /**
                         * Creates a new LocalServicesLeadSurveyAnswerEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadSurveyAnswerEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyAnswerEnum): google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum;

                        /**
                         * Encodes the specified LocalServicesLeadSurveyAnswerEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum.verify|verify} messages.
                         * @param message LocalServicesLeadSurveyAnswerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyAnswerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadSurveyAnswerEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum.verify|verify} messages.
                         * @param message LocalServicesLeadSurveyAnswerEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyAnswerEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadSurveyAnswerEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadSurveyAnswerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum;

                        /**
                         * Decodes a LocalServicesLeadSurveyAnswerEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadSurveyAnswerEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum;

                        /**
                         * Verifies a LocalServicesLeadSurveyAnswerEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadSurveyAnswerEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadSurveyAnswerEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum;

                        /**
                         * Creates a plain object from a LocalServicesLeadSurveyAnswerEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadSurveyAnswerEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadSurveyAnswerEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadSurveyAnswerEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLeadSurveyAnswerEnum {

                        /** SurveyAnswer enum. */
                        enum SurveyAnswer {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VERY_SATISFIED = 2,
                            SATISFIED = 3,
                            NEUTRAL = 4,
                            DISSATISFIED = 5,
                            VERY_DISSATISFIED = 6
                        }
                    }

                    /** Properties of a LocalServicesLeadSurveyDissatisfiedReasonEnum. */
                    interface ILocalServicesLeadSurveyDissatisfiedReasonEnum {
                    }

                    /** Represents a LocalServicesLeadSurveyDissatisfiedReasonEnum. */
                    class LocalServicesLeadSurveyDissatisfiedReasonEnum implements ILocalServicesLeadSurveyDissatisfiedReasonEnum {

                        /**
                         * Constructs a new LocalServicesLeadSurveyDissatisfiedReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyDissatisfiedReasonEnum);

                        /**
                         * Creates a new LocalServicesLeadSurveyDissatisfiedReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadSurveyDissatisfiedReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyDissatisfiedReasonEnum): google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum;

                        /**
                         * Encodes the specified LocalServicesLeadSurveyDissatisfiedReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum.verify|verify} messages.
                         * @param message LocalServicesLeadSurveyDissatisfiedReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyDissatisfiedReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadSurveyDissatisfiedReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum.verify|verify} messages.
                         * @param message LocalServicesLeadSurveyDissatisfiedReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLeadSurveyDissatisfiedReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadSurveyDissatisfiedReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadSurveyDissatisfiedReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum;

                        /**
                         * Decodes a LocalServicesLeadSurveyDissatisfiedReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadSurveyDissatisfiedReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum;

                        /**
                         * Verifies a LocalServicesLeadSurveyDissatisfiedReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadSurveyDissatisfiedReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadSurveyDissatisfiedReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum;

                        /**
                         * Creates a plain object from a LocalServicesLeadSurveyDissatisfiedReasonEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadSurveyDissatisfiedReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadSurveyDissatisfiedReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadSurveyDissatisfiedReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLeadSurveyDissatisfiedReasonEnum {

                        /** SurveyDissatisfiedReason enum. */
                        enum SurveyDissatisfiedReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OTHER_DISSATISFIED_REASON = 2,
                            GEO_MISMATCH = 3,
                            JOB_TYPE_MISMATCH = 4,
                            NOT_READY_TO_BOOK = 5,
                            SPAM = 6,
                            DUPLICATE = 7,
                            SOLICITATION = 8
                        }
                    }

                    /** Properties of a LocalServicesLeadSurveySatisfiedReasonEnum. */
                    interface ILocalServicesLeadSurveySatisfiedReasonEnum {
                    }

                    /** Represents a LocalServicesLeadSurveySatisfiedReasonEnum. */
                    class LocalServicesLeadSurveySatisfiedReasonEnum implements ILocalServicesLeadSurveySatisfiedReasonEnum {

                        /**
                         * Constructs a new LocalServicesLeadSurveySatisfiedReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadSurveySatisfiedReasonEnum);

                        /**
                         * Creates a new LocalServicesLeadSurveySatisfiedReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadSurveySatisfiedReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadSurveySatisfiedReasonEnum): google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum;

                        /**
                         * Encodes the specified LocalServicesLeadSurveySatisfiedReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum.verify|verify} messages.
                         * @param message LocalServicesLeadSurveySatisfiedReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLeadSurveySatisfiedReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadSurveySatisfiedReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum.verify|verify} messages.
                         * @param message LocalServicesLeadSurveySatisfiedReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLeadSurveySatisfiedReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadSurveySatisfiedReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadSurveySatisfiedReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum;

                        /**
                         * Decodes a LocalServicesLeadSurveySatisfiedReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadSurveySatisfiedReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum;

                        /**
                         * Verifies a LocalServicesLeadSurveySatisfiedReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadSurveySatisfiedReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadSurveySatisfiedReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum;

                        /**
                         * Creates a plain object from a LocalServicesLeadSurveySatisfiedReasonEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadSurveySatisfiedReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadSurveySatisfiedReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadSurveySatisfiedReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLeadSurveySatisfiedReasonEnum {

                        /** SurveySatisfiedReason enum. */
                        enum SurveySatisfiedReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OTHER_SATISFIED_REASON = 2,
                            BOOKED_CUSTOMER = 3,
                            LIKELY_BOOKED_CUSTOMER = 4,
                            SERVICE_RELATED = 5,
                            HIGH_VALUE_SERVICE = 6
                        }
                    }

                    /** Properties of a LocalServicesLeadTypeEnum. */
                    interface ILocalServicesLeadTypeEnum {
                    }

                    /** Represents a LocalServicesLeadTypeEnum. */
                    class LocalServicesLeadTypeEnum implements ILocalServicesLeadTypeEnum {

                        /**
                         * Constructs a new LocalServicesLeadTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadTypeEnum);

                        /**
                         * Creates a new LocalServicesLeadTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLeadTypeEnum): google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum;

                        /**
                         * Encodes the specified LocalServicesLeadTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum.verify|verify} messages.
                         * @param message LocalServicesLeadTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLeadTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum.verify|verify} messages.
                         * @param message LocalServicesLeadTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLeadTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum;

                        /**
                         * Decodes a LocalServicesLeadTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum;

                        /**
                         * Verifies a LocalServicesLeadTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum;

                        /**
                         * Creates a plain object from a LocalServicesLeadTypeEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLeadTypeEnum {

                        /** LeadType enum. */
                        enum LeadType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MESSAGE = 2,
                            PHONE_CALL = 3,
                            BOOKING = 4
                        }
                    }

                    /** Properties of a LocalServicesLicenseRejectionReasonEnum. */
                    interface ILocalServicesLicenseRejectionReasonEnum {
                    }

                    /** Represents a LocalServicesLicenseRejectionReasonEnum. */
                    class LocalServicesLicenseRejectionReasonEnum implements ILocalServicesLicenseRejectionReasonEnum {

                        /**
                         * Constructs a new LocalServicesLicenseRejectionReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesLicenseRejectionReasonEnum);

                        /**
                         * Creates a new LocalServicesLicenseRejectionReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLicenseRejectionReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesLicenseRejectionReasonEnum): google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum;

                        /**
                         * Encodes the specified LocalServicesLicenseRejectionReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum.verify|verify} messages.
                         * @param message LocalServicesLicenseRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesLicenseRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLicenseRejectionReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum.verify|verify} messages.
                         * @param message LocalServicesLicenseRejectionReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesLicenseRejectionReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLicenseRejectionReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLicenseRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum;

                        /**
                         * Decodes a LocalServicesLicenseRejectionReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLicenseRejectionReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum;

                        /**
                         * Verifies a LocalServicesLicenseRejectionReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLicenseRejectionReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLicenseRejectionReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum;

                        /**
                         * Creates a plain object from a LocalServicesLicenseRejectionReasonEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesLicenseRejectionReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLicenseRejectionReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLicenseRejectionReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesLicenseRejectionReasonEnum {

                        /** LocalServicesLicenseRejectionReason enum. */
                        enum LocalServicesLicenseRejectionReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_NAME_MISMATCH = 2,
                            UNAUTHORIZED = 3,
                            EXPIRED = 4,
                            POOR_QUALITY = 5,
                            UNVERIFIABLE = 6,
                            WRONG_DOCUMENT_OR_ID = 7,
                            OTHER = 8
                        }
                    }

                    /** Properties of a LocalServicesParticipantTypeEnum. */
                    interface ILocalServicesParticipantTypeEnum {
                    }

                    /** Represents a LocalServicesParticipantTypeEnum. */
                    class LocalServicesParticipantTypeEnum implements ILocalServicesParticipantTypeEnum {

                        /**
                         * Constructs a new LocalServicesParticipantTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesParticipantTypeEnum);

                        /**
                         * Creates a new LocalServicesParticipantTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesParticipantTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesParticipantTypeEnum): google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum;

                        /**
                         * Encodes the specified LocalServicesParticipantTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum.verify|verify} messages.
                         * @param message LocalServicesParticipantTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesParticipantTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesParticipantTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum.verify|verify} messages.
                         * @param message LocalServicesParticipantTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesParticipantTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesParticipantTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesParticipantTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum;

                        /**
                         * Decodes a LocalServicesParticipantTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesParticipantTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum;

                        /**
                         * Verifies a LocalServicesParticipantTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesParticipantTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesParticipantTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum;

                        /**
                         * Creates a plain object from a LocalServicesParticipantTypeEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesParticipantTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesParticipantTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesParticipantTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesParticipantTypeEnum {

                        /** ParticipantType enum. */
                        enum ParticipantType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADVERTISER = 2,
                            CONSUMER = 3
                        }
                    }

                    /** Properties of a LocalServicesVerificationArtifactStatusEnum. */
                    interface ILocalServicesVerificationArtifactStatusEnum {
                    }

                    /** Represents a LocalServicesVerificationArtifactStatusEnum. */
                    class LocalServicesVerificationArtifactStatusEnum implements ILocalServicesVerificationArtifactStatusEnum {

                        /**
                         * Constructs a new LocalServicesVerificationArtifactStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactStatusEnum);

                        /**
                         * Creates a new LocalServicesVerificationArtifactStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesVerificationArtifactStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactStatusEnum): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum;

                        /**
                         * Encodes the specified LocalServicesVerificationArtifactStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum.verify|verify} messages.
                         * @param message LocalServicesVerificationArtifactStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesVerificationArtifactStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum.verify|verify} messages.
                         * @param message LocalServicesVerificationArtifactStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesVerificationArtifactStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesVerificationArtifactStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum;

                        /**
                         * Decodes a LocalServicesVerificationArtifactStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesVerificationArtifactStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum;

                        /**
                         * Verifies a LocalServicesVerificationArtifactStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesVerificationArtifactStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesVerificationArtifactStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum;

                        /**
                         * Creates a plain object from a LocalServicesVerificationArtifactStatusEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesVerificationArtifactStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesVerificationArtifactStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesVerificationArtifactStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesVerificationArtifactStatusEnum {

                        /** LocalServicesVerificationArtifactStatus enum. */
                        enum LocalServicesVerificationArtifactStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PASSED = 2,
                            FAILED = 3,
                            PENDING = 4,
                            NO_SUBMISSION = 5,
                            CANCELLED = 6
                        }
                    }

                    /** Properties of a LocalServicesVerificationArtifactTypeEnum. */
                    interface ILocalServicesVerificationArtifactTypeEnum {
                    }

                    /** Represents a LocalServicesVerificationArtifactTypeEnum. */
                    class LocalServicesVerificationArtifactTypeEnum implements ILocalServicesVerificationArtifactTypeEnum {

                        /**
                         * Constructs a new LocalServicesVerificationArtifactTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactTypeEnum);

                        /**
                         * Creates a new LocalServicesVerificationArtifactTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesVerificationArtifactTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactTypeEnum): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum;

                        /**
                         * Encodes the specified LocalServicesVerificationArtifactTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum.verify|verify} messages.
                         * @param message LocalServicesVerificationArtifactTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesVerificationArtifactTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum.verify|verify} messages.
                         * @param message LocalServicesVerificationArtifactTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesVerificationArtifactTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesVerificationArtifactTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesVerificationArtifactTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum;

                        /**
                         * Decodes a LocalServicesVerificationArtifactTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesVerificationArtifactTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum;

                        /**
                         * Verifies a LocalServicesVerificationArtifactTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesVerificationArtifactTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesVerificationArtifactTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum;

                        /**
                         * Creates a plain object from a LocalServicesVerificationArtifactTypeEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesVerificationArtifactTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesVerificationArtifactTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesVerificationArtifactTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesVerificationArtifactTypeEnum {

                        /** LocalServicesVerificationArtifactType enum. */
                        enum LocalServicesVerificationArtifactType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BACKGROUND_CHECK = 2,
                            INSURANCE = 3,
                            LICENSE = 4,
                            BUSINESS_REGISTRATION_CHECK = 5
                        }
                    }

                    /** Properties of a LocalServicesVerificationStatusEnum. */
                    interface ILocalServicesVerificationStatusEnum {
                    }

                    /** Represents a LocalServicesVerificationStatusEnum. */
                    class LocalServicesVerificationStatusEnum implements ILocalServicesVerificationStatusEnum {

                        /**
                         * Constructs a new LocalServicesVerificationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocalServicesVerificationStatusEnum);

                        /**
                         * Creates a new LocalServicesVerificationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesVerificationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocalServicesVerificationStatusEnum): google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum;

                        /**
                         * Encodes the specified LocalServicesVerificationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.verify|verify} messages.
                         * @param message LocalServicesVerificationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocalServicesVerificationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesVerificationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.verify|verify} messages.
                         * @param message LocalServicesVerificationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocalServicesVerificationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesVerificationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesVerificationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum;

                        /**
                         * Decodes a LocalServicesVerificationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesVerificationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum;

                        /**
                         * Verifies a LocalServicesVerificationStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesVerificationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesVerificationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum;

                        /**
                         * Creates a plain object from a LocalServicesVerificationStatusEnum message. Also converts values to other types if specified.
                         * @param message LocalServicesVerificationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesVerificationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesVerificationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocalServicesVerificationStatusEnum {

                        /** LocalServicesVerificationStatus enum. */
                        enum LocalServicesVerificationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEEDS_REVIEW = 2,
                            FAILED = 3,
                            PASSED = 4,
                            NOT_APPLICABLE = 5,
                            NO_SUBMISSION = 6,
                            PARTIAL_SUBMISSION = 7,
                            PENDING_ESCALATION = 8
                        }
                    }

                    /** Properties of a LocationSourceTypeEnum. */
                    interface ILocationSourceTypeEnum {
                    }

                    /** Represents a LocationSourceTypeEnum. */
                    class LocationSourceTypeEnum implements ILocationSourceTypeEnum {

                        /**
                         * Constructs a new LocationSourceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ILocationSourceTypeEnum);

                        /**
                         * Creates a new LocationSourceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationSourceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ILocationSourceTypeEnum): google.ads.googleads.v23.enums.LocationSourceTypeEnum;

                        /**
                         * Encodes the specified LocationSourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.LocationSourceTypeEnum.verify|verify} messages.
                         * @param message LocationSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ILocationSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationSourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.LocationSourceTypeEnum.verify|verify} messages.
                         * @param message LocationSourceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ILocationSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationSourceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.LocationSourceTypeEnum;

                        /**
                         * Decodes a LocationSourceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationSourceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.LocationSourceTypeEnum;

                        /**
                         * Verifies a LocationSourceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationSourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationSourceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.LocationSourceTypeEnum;

                        /**
                         * Creates a plain object from a LocationSourceTypeEnum message. Also converts values to other types if specified.
                         * @param message LocationSourceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.LocationSourceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationSourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationSourceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LocationSourceTypeEnum {

                        /** LocationSourceType enum. */
                        enum LocationSourceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GOOGLE_MY_BUSINESS = 2,
                            AFFILIATE = 3
                        }
                    }

                    /** Properties of a ManagerLinkStatusEnum. */
                    interface IManagerLinkStatusEnum {
                    }

                    /** Represents a ManagerLinkStatusEnum. */
                    class ManagerLinkStatusEnum implements IManagerLinkStatusEnum {

                        /**
                         * Constructs a new ManagerLinkStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IManagerLinkStatusEnum);

                        /**
                         * Creates a new ManagerLinkStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManagerLinkStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IManagerLinkStatusEnum): google.ads.googleads.v23.enums.ManagerLinkStatusEnum;

                        /**
                         * Encodes the specified ManagerLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ManagerLinkStatusEnum.verify|verify} messages.
                         * @param message ManagerLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IManagerLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManagerLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ManagerLinkStatusEnum.verify|verify} messages.
                         * @param message ManagerLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IManagerLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManagerLinkStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManagerLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ManagerLinkStatusEnum;

                        /**
                         * Decodes a ManagerLinkStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManagerLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ManagerLinkStatusEnum;

                        /**
                         * Verifies a ManagerLinkStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManagerLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManagerLinkStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ManagerLinkStatusEnum;

                        /**
                         * Creates a plain object from a ManagerLinkStatusEnum message. Also converts values to other types if specified.
                         * @param message ManagerLinkStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ManagerLinkStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManagerLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManagerLinkStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ManagerLinkStatusEnum {

                        /** ManagerLinkStatus enum. */
                        enum ManagerLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACTIVE = 2,
                            INACTIVE = 3,
                            PENDING = 4,
                            REFUSED = 5,
                            CANCELED = 6
                        }
                    }

                    /** Properties of a MediaTypeEnum. */
                    interface IMediaTypeEnum {
                    }

                    /** Represents a MediaTypeEnum. */
                    class MediaTypeEnum implements IMediaTypeEnum {

                        /**
                         * Constructs a new MediaTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IMediaTypeEnum);

                        /**
                         * Creates a new MediaTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IMediaTypeEnum): google.ads.googleads.v23.enums.MediaTypeEnum;

                        /**
                         * Encodes the specified MediaTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.MediaTypeEnum.verify|verify} messages.
                         * @param message MediaTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IMediaTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.MediaTypeEnum.verify|verify} messages.
                         * @param message MediaTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IMediaTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.MediaTypeEnum;

                        /**
                         * Decodes a MediaTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.MediaTypeEnum;

                        /**
                         * Verifies a MediaTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.MediaTypeEnum;

                        /**
                         * Creates a plain object from a MediaTypeEnum message. Also converts values to other types if specified.
                         * @param message MediaTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.MediaTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MediaTypeEnum {

                        /** MediaType enum. */
                        enum MediaType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IMAGE = 2,
                            ICON = 3,
                            MEDIA_BUNDLE = 4,
                            AUDIO = 5,
                            VIDEO = 6,
                            DYNAMIC_IMAGE = 7
                        }
                    }

                    /** Properties of a MobileDeviceTypeEnum. */
                    interface IMobileDeviceTypeEnum {
                    }

                    /** Represents a MobileDeviceTypeEnum. */
                    class MobileDeviceTypeEnum implements IMobileDeviceTypeEnum {

                        /**
                         * Constructs a new MobileDeviceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IMobileDeviceTypeEnum);

                        /**
                         * Creates a new MobileDeviceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileDeviceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IMobileDeviceTypeEnum): google.ads.googleads.v23.enums.MobileDeviceTypeEnum;

                        /**
                         * Encodes the specified MobileDeviceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.MobileDeviceTypeEnum.verify|verify} messages.
                         * @param message MobileDeviceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IMobileDeviceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileDeviceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.MobileDeviceTypeEnum.verify|verify} messages.
                         * @param message MobileDeviceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IMobileDeviceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileDeviceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MobileDeviceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.MobileDeviceTypeEnum;

                        /**
                         * Decodes a MobileDeviceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MobileDeviceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.MobileDeviceTypeEnum;

                        /**
                         * Verifies a MobileDeviceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileDeviceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MobileDeviceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.MobileDeviceTypeEnum;

                        /**
                         * Creates a plain object from a MobileDeviceTypeEnum message. Also converts values to other types if specified.
                         * @param message MobileDeviceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.MobileDeviceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileDeviceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MobileDeviceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MobileDeviceTypeEnum {

                        /** MobileDeviceType enum. */
                        enum MobileDeviceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MOBILE = 2,
                            TABLET = 3
                        }
                    }

                    /** Properties of a NegativeGeoTargetTypeEnum. */
                    interface INegativeGeoTargetTypeEnum {
                    }

                    /** Represents a NegativeGeoTargetTypeEnum. */
                    class NegativeGeoTargetTypeEnum implements INegativeGeoTargetTypeEnum {

                        /**
                         * Constructs a new NegativeGeoTargetTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.INegativeGeoTargetTypeEnum);

                        /**
                         * Creates a new NegativeGeoTargetTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NegativeGeoTargetTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.INegativeGeoTargetTypeEnum): google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum;

                        /**
                         * Encodes the specified NegativeGeoTargetTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum.verify|verify} messages.
                         * @param message NegativeGeoTargetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.INegativeGeoTargetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NegativeGeoTargetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum.verify|verify} messages.
                         * @param message NegativeGeoTargetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.INegativeGeoTargetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NegativeGeoTargetTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NegativeGeoTargetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum;

                        /**
                         * Decodes a NegativeGeoTargetTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NegativeGeoTargetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum;

                        /**
                         * Verifies a NegativeGeoTargetTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NegativeGeoTargetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NegativeGeoTargetTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum;

                        /**
                         * Creates a plain object from a NegativeGeoTargetTypeEnum message. Also converts values to other types if specified.
                         * @param message NegativeGeoTargetTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NegativeGeoTargetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NegativeGeoTargetTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NegativeGeoTargetTypeEnum {

                        /** NegativeGeoTargetType enum. */
                        enum NegativeGeoTargetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PRESENCE_OR_INTEREST = 4,
                            PRESENCE = 5
                        }
                    }

                    /** Properties of a NonSkippableMaxDurationEnum. */
                    interface INonSkippableMaxDurationEnum {
                    }

                    /** Represents a NonSkippableMaxDurationEnum. */
                    class NonSkippableMaxDurationEnum implements INonSkippableMaxDurationEnum {

                        /**
                         * Constructs a new NonSkippableMaxDurationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.INonSkippableMaxDurationEnum);

                        /**
                         * Creates a new NonSkippableMaxDurationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NonSkippableMaxDurationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.INonSkippableMaxDurationEnum): google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum;

                        /**
                         * Encodes the specified NonSkippableMaxDurationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum.verify|verify} messages.
                         * @param message NonSkippableMaxDurationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.INonSkippableMaxDurationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NonSkippableMaxDurationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum.verify|verify} messages.
                         * @param message NonSkippableMaxDurationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.INonSkippableMaxDurationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NonSkippableMaxDurationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NonSkippableMaxDurationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum;

                        /**
                         * Decodes a NonSkippableMaxDurationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NonSkippableMaxDurationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum;

                        /**
                         * Verifies a NonSkippableMaxDurationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NonSkippableMaxDurationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NonSkippableMaxDurationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum;

                        /**
                         * Creates a plain object from a NonSkippableMaxDurationEnum message. Also converts values to other types if specified.
                         * @param message NonSkippableMaxDurationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NonSkippableMaxDurationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NonSkippableMaxDurationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NonSkippableMaxDurationEnum {

                        /** NonSkippableMaxDuration enum. */
                        enum NonSkippableMaxDuration {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MAX_DURATION_FIFTEEN_SECONDS = 2,
                            MAX_DURATION_THIRTY_SECONDS = 3,
                            MAX_DURATION_SIXTY_SECONDS = 4
                        }
                    }

                    /** Properties of a NonSkippableMinDurationEnum. */
                    interface INonSkippableMinDurationEnum {
                    }

                    /** Represents a NonSkippableMinDurationEnum. */
                    class NonSkippableMinDurationEnum implements INonSkippableMinDurationEnum {

                        /**
                         * Constructs a new NonSkippableMinDurationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.INonSkippableMinDurationEnum);

                        /**
                         * Creates a new NonSkippableMinDurationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NonSkippableMinDurationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.INonSkippableMinDurationEnum): google.ads.googleads.v23.enums.NonSkippableMinDurationEnum;

                        /**
                         * Encodes the specified NonSkippableMinDurationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.NonSkippableMinDurationEnum.verify|verify} messages.
                         * @param message NonSkippableMinDurationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.INonSkippableMinDurationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NonSkippableMinDurationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.NonSkippableMinDurationEnum.verify|verify} messages.
                         * @param message NonSkippableMinDurationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.INonSkippableMinDurationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NonSkippableMinDurationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NonSkippableMinDurationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.NonSkippableMinDurationEnum;

                        /**
                         * Decodes a NonSkippableMinDurationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NonSkippableMinDurationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.NonSkippableMinDurationEnum;

                        /**
                         * Verifies a NonSkippableMinDurationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NonSkippableMinDurationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NonSkippableMinDurationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.NonSkippableMinDurationEnum;

                        /**
                         * Creates a plain object from a NonSkippableMinDurationEnum message. Also converts values to other types if specified.
                         * @param message NonSkippableMinDurationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.NonSkippableMinDurationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NonSkippableMinDurationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NonSkippableMinDurationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NonSkippableMinDurationEnum {

                        /** NonSkippableMinDuration enum. */
                        enum NonSkippableMinDuration {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MIN_DURATION_FIVE_SECONDS = 2,
                            MIN_DURATION_SEVEN_SECONDS = 3,
                            MIN_DURATION_SIXTEEN_SECONDS = 4,
                            MIN_DURATION_THIRTY_ONE_SECONDS = 5
                        }
                    }

                    /** Properties of an OfflineConversionDiagnosticStatusEnum. */
                    interface IOfflineConversionDiagnosticStatusEnum {
                    }

                    /** Represents an OfflineConversionDiagnosticStatusEnum. */
                    class OfflineConversionDiagnosticStatusEnum implements IOfflineConversionDiagnosticStatusEnum {

                        /**
                         * Constructs a new OfflineConversionDiagnosticStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOfflineConversionDiagnosticStatusEnum);

                        /**
                         * Creates a new OfflineConversionDiagnosticStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineConversionDiagnosticStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOfflineConversionDiagnosticStatusEnum): google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum;

                        /**
                         * Encodes the specified OfflineConversionDiagnosticStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.verify|verify} messages.
                         * @param message OfflineConversionDiagnosticStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOfflineConversionDiagnosticStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineConversionDiagnosticStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.verify|verify} messages.
                         * @param message OfflineConversionDiagnosticStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOfflineConversionDiagnosticStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineConversionDiagnosticStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineConversionDiagnosticStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum;

                        /**
                         * Decodes an OfflineConversionDiagnosticStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineConversionDiagnosticStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum;

                        /**
                         * Verifies an OfflineConversionDiagnosticStatusEnum message.
                         * @param message Plain 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 OfflineConversionDiagnosticStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineConversionDiagnosticStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum;

                        /**
                         * Creates a plain object from an OfflineConversionDiagnosticStatusEnum message. Also converts values to other types if specified.
                         * @param message OfflineConversionDiagnosticStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineConversionDiagnosticStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineConversionDiagnosticStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OfflineConversionDiagnosticStatusEnum {

                        /** OfflineConversionDiagnosticStatus enum. */
                        enum OfflineConversionDiagnosticStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXCELLENT = 2,
                            GOOD = 3,
                            NEEDS_ATTENTION = 4,
                            NO_RECENT_UPLOAD = 6
                        }
                    }

                    /** Properties of an OfflineEventUploadClientEnum. */
                    interface IOfflineEventUploadClientEnum {
                    }

                    /** Represents an OfflineEventUploadClientEnum. */
                    class OfflineEventUploadClientEnum implements IOfflineEventUploadClientEnum {

                        /**
                         * Constructs a new OfflineEventUploadClientEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOfflineEventUploadClientEnum);

                        /**
                         * Creates a new OfflineEventUploadClientEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineEventUploadClientEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOfflineEventUploadClientEnum): google.ads.googleads.v23.enums.OfflineEventUploadClientEnum;

                        /**
                         * Encodes the specified OfflineEventUploadClientEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.verify|verify} messages.
                         * @param message OfflineEventUploadClientEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOfflineEventUploadClientEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineEventUploadClientEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.verify|verify} messages.
                         * @param message OfflineEventUploadClientEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOfflineEventUploadClientEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineEventUploadClientEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineEventUploadClientEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OfflineEventUploadClientEnum;

                        /**
                         * Decodes an OfflineEventUploadClientEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineEventUploadClientEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OfflineEventUploadClientEnum;

                        /**
                         * Verifies an OfflineEventUploadClientEnum message.
                         * @param message Plain 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 OfflineEventUploadClientEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineEventUploadClientEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OfflineEventUploadClientEnum;

                        /**
                         * Creates a plain object from an OfflineEventUploadClientEnum message. Also converts values to other types if specified.
                         * @param message OfflineEventUploadClientEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OfflineEventUploadClientEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineEventUploadClientEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineEventUploadClientEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OfflineEventUploadClientEnum {

                        /** OfflineEventUploadClient enum. */
                        enum OfflineEventUploadClient {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GOOGLE_ADS_API = 2,
                            GOOGLE_ADS_WEB_CLIENT = 3,
                            ADS_DATA_CONNECTOR = 4
                        }
                    }

                    /** Properties of an OfflineUserDataJobFailureReasonEnum. */
                    interface IOfflineUserDataJobFailureReasonEnum {
                    }

                    /** Represents an OfflineUserDataJobFailureReasonEnum. */
                    class OfflineUserDataJobFailureReasonEnum implements IOfflineUserDataJobFailureReasonEnum {

                        /**
                         * Constructs a new OfflineUserDataJobFailureReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobFailureReasonEnum);

                        /**
                         * Creates a new OfflineUserDataJobFailureReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJobFailureReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobFailureReasonEnum): google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobFailureReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobFailureReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOfflineUserDataJobFailureReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobFailureReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobFailureReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOfflineUserDataJobFailureReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobFailureReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJobFailureReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum;

                        /**
                         * Decodes an OfflineUserDataJobFailureReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJobFailureReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum;

                        /**
                         * Verifies an OfflineUserDataJobFailureReasonEnum message.
                         * @param message Plain 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 OfflineUserDataJobFailureReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJobFailureReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobFailureReasonEnum message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJobFailureReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobFailureReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJobFailureReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OfflineUserDataJobFailureReasonEnum {

                        /** OfflineUserDataJobFailureReason enum. */
                        enum OfflineUserDataJobFailureReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INSUFFICIENT_MATCHED_TRANSACTIONS = 2,
                            INSUFFICIENT_TRANSACTIONS = 3,
                            HIGH_AVERAGE_TRANSACTION_VALUE = 4,
                            LOW_AVERAGE_TRANSACTION_VALUE = 5,
                            NEWLY_OBSERVED_CURRENCY_CODE = 6
                        }
                    }

                    /** Properties of an OfflineUserDataJobMatchRateRangeEnum. */
                    interface IOfflineUserDataJobMatchRateRangeEnum {
                    }

                    /** Represents an OfflineUserDataJobMatchRateRangeEnum. */
                    class OfflineUserDataJobMatchRateRangeEnum implements IOfflineUserDataJobMatchRateRangeEnum {

                        /**
                         * Constructs a new OfflineUserDataJobMatchRateRangeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobMatchRateRangeEnum);

                        /**
                         * Creates a new OfflineUserDataJobMatchRateRangeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJobMatchRateRangeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobMatchRateRangeEnum): google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobMatchRateRangeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobMatchRateRangeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOfflineUserDataJobMatchRateRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobMatchRateRangeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobMatchRateRangeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOfflineUserDataJobMatchRateRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobMatchRateRangeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJobMatchRateRangeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum;

                        /**
                         * Decodes an OfflineUserDataJobMatchRateRangeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJobMatchRateRangeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum;

                        /**
                         * Verifies an OfflineUserDataJobMatchRateRangeEnum message.
                         * @param message Plain 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 OfflineUserDataJobMatchRateRangeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJobMatchRateRangeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobMatchRateRangeEnum message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJobMatchRateRangeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobMatchRateRangeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJobMatchRateRangeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OfflineUserDataJobMatchRateRangeEnum {

                        /** OfflineUserDataJobMatchRateRange enum. */
                        enum OfflineUserDataJobMatchRateRange {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MATCH_RANGE_LESS_THAN_20 = 2,
                            MATCH_RANGE_20_TO_30 = 3,
                            MATCH_RANGE_31_TO_40 = 4,
                            MATCH_RANGE_41_TO_50 = 5,
                            MATCH_RANGE_51_TO_60 = 6,
                            MATCH_RANGE_61_TO_70 = 7,
                            MATCH_RANGE_71_TO_80 = 8,
                            MATCH_RANGE_81_TO_90 = 9,
                            MATCH_RANGE_91_TO_100 = 10
                        }
                    }

                    /** Properties of an OfflineUserDataJobStatusEnum. */
                    interface IOfflineUserDataJobStatusEnum {
                    }

                    /** Represents an OfflineUserDataJobStatusEnum. */
                    class OfflineUserDataJobStatusEnum implements IOfflineUserDataJobStatusEnum {

                        /**
                         * Constructs a new OfflineUserDataJobStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobStatusEnum);

                        /**
                         * Creates a new OfflineUserDataJobStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJobStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobStatusEnum): google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOfflineUserDataJobStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOfflineUserDataJobStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJobStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum;

                        /**
                         * Decodes an OfflineUserDataJobStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJobStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum;

                        /**
                         * Verifies an OfflineUserDataJobStatusEnum message.
                         * @param message Plain 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 OfflineUserDataJobStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJobStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobStatusEnum message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJobStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJobStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OfflineUserDataJobStatusEnum {

                        /** OfflineUserDataJobStatus enum. */
                        enum OfflineUserDataJobStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            RUNNING = 3,
                            SUCCESS = 4,
                            FAILED = 5
                        }
                    }

                    /** Properties of an OfflineUserDataJobTypeEnum. */
                    interface IOfflineUserDataJobTypeEnum {
                    }

                    /** Represents an OfflineUserDataJobTypeEnum. */
                    class OfflineUserDataJobTypeEnum implements IOfflineUserDataJobTypeEnum {

                        /**
                         * Constructs a new OfflineUserDataJobTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobTypeEnum);

                        /**
                         * Creates a new OfflineUserDataJobTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJobTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOfflineUserDataJobTypeEnum): google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOfflineUserDataJobTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOfflineUserDataJobTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJobTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum;

                        /**
                         * Decodes an OfflineUserDataJobTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJobTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum;

                        /**
                         * Verifies an OfflineUserDataJobTypeEnum message.
                         * @param message Plain 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 OfflineUserDataJobTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJobTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobTypeEnum message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJobTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJobTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OfflineUserDataJobTypeEnum {

                        /** OfflineUserDataJobType enum. */
                        enum OfflineUserDataJobType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STORE_SALES_UPLOAD_FIRST_PARTY = 2,
                            STORE_SALES_UPLOAD_THIRD_PARTY = 3,
                            CUSTOMER_MATCH_USER_LIST = 4,
                            CUSTOMER_MATCH_WITH_ATTRIBUTES = 5
                        }
                    }

                    /** Properties of an OperatingSystemVersionOperatorTypeEnum. */
                    interface IOperatingSystemVersionOperatorTypeEnum {
                    }

                    /** Represents an OperatingSystemVersionOperatorTypeEnum. */
                    class OperatingSystemVersionOperatorTypeEnum implements IOperatingSystemVersionOperatorTypeEnum {

                        /**
                         * Constructs a new OperatingSystemVersionOperatorTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOperatingSystemVersionOperatorTypeEnum);

                        /**
                         * Creates a new OperatingSystemVersionOperatorTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperatingSystemVersionOperatorTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOperatingSystemVersionOperatorTypeEnum): google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum;

                        /**
                         * Encodes the specified OperatingSystemVersionOperatorTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum.verify|verify} messages.
                         * @param message OperatingSystemVersionOperatorTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOperatingSystemVersionOperatorTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatingSystemVersionOperatorTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum.verify|verify} messages.
                         * @param message OperatingSystemVersionOperatorTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOperatingSystemVersionOperatorTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatingSystemVersionOperatorTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperatingSystemVersionOperatorTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum;

                        /**
                         * Decodes an OperatingSystemVersionOperatorTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperatingSystemVersionOperatorTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum;

                        /**
                         * Verifies an OperatingSystemVersionOperatorTypeEnum message.
                         * @param message Plain 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 OperatingSystemVersionOperatorTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OperatingSystemVersionOperatorTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum;

                        /**
                         * Creates a plain object from an OperatingSystemVersionOperatorTypeEnum message. Also converts values to other types if specified.
                         * @param message OperatingSystemVersionOperatorTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatingSystemVersionOperatorTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OperatingSystemVersionOperatorTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OperatingSystemVersionOperatorTypeEnum {

                        /** OperatingSystemVersionOperatorType enum. */
                        enum OperatingSystemVersionOperatorType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EQUALS_TO = 2,
                            GREATER_THAN_EQUALS_TO = 4
                        }
                    }

                    /** Properties of an OptimizationGoalTypeEnum. */
                    interface IOptimizationGoalTypeEnum {
                    }

                    /** Represents an OptimizationGoalTypeEnum. */
                    class OptimizationGoalTypeEnum implements IOptimizationGoalTypeEnum {

                        /**
                         * Constructs a new OptimizationGoalTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IOptimizationGoalTypeEnum);

                        /**
                         * Creates a new OptimizationGoalTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OptimizationGoalTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IOptimizationGoalTypeEnum): google.ads.googleads.v23.enums.OptimizationGoalTypeEnum;

                        /**
                         * Encodes the specified OptimizationGoalTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.OptimizationGoalTypeEnum.verify|verify} messages.
                         * @param message OptimizationGoalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IOptimizationGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OptimizationGoalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.OptimizationGoalTypeEnum.verify|verify} messages.
                         * @param message OptimizationGoalTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IOptimizationGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OptimizationGoalTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OptimizationGoalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.OptimizationGoalTypeEnum;

                        /**
                         * Decodes an OptimizationGoalTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OptimizationGoalTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.OptimizationGoalTypeEnum;

                        /**
                         * Verifies an OptimizationGoalTypeEnum message.
                         * @param message Plain 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 OptimizationGoalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OptimizationGoalTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.OptimizationGoalTypeEnum;

                        /**
                         * Creates a plain object from an OptimizationGoalTypeEnum message. Also converts values to other types if specified.
                         * @param message OptimizationGoalTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.OptimizationGoalTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OptimizationGoalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OptimizationGoalTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OptimizationGoalTypeEnum {

                        /** OptimizationGoalType enum. */
                        enum OptimizationGoalType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CALL_CLICKS = 2,
                            DRIVING_DIRECTIONS = 3,
                            APP_PRE_REGISTRATION = 4
                        }
                    }

                    /** Properties of a PaymentModeEnum. */
                    interface IPaymentModeEnum {
                    }

                    /** Represents a PaymentModeEnum. */
                    class PaymentModeEnum implements IPaymentModeEnum {

                        /**
                         * Constructs a new PaymentModeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPaymentModeEnum);

                        /**
                         * Creates a new PaymentModeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PaymentModeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPaymentModeEnum): google.ads.googleads.v23.enums.PaymentModeEnum;

                        /**
                         * Encodes the specified PaymentModeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PaymentModeEnum.verify|verify} messages.
                         * @param message PaymentModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPaymentModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaymentModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PaymentModeEnum.verify|verify} messages.
                         * @param message PaymentModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPaymentModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaymentModeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PaymentModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PaymentModeEnum;

                        /**
                         * Decodes a PaymentModeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PaymentModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PaymentModeEnum;

                        /**
                         * Verifies a PaymentModeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaymentModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PaymentModeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PaymentModeEnum;

                        /**
                         * Creates a plain object from a PaymentModeEnum message. Also converts values to other types if specified.
                         * @param message PaymentModeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PaymentModeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaymentModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PaymentModeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PaymentModeEnum {

                        /** PaymentMode enum. */
                        enum PaymentMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CLICKS = 4,
                            CONVERSION_VALUE = 5,
                            CONVERSIONS = 6,
                            GUEST_STAY = 7
                        }
                    }

                    /** Properties of a PerformanceMaxUpgradeStatusEnum. */
                    interface IPerformanceMaxUpgradeStatusEnum {
                    }

                    /** Represents a PerformanceMaxUpgradeStatusEnum. */
                    class PerformanceMaxUpgradeStatusEnum implements IPerformanceMaxUpgradeStatusEnum {

                        /**
                         * Constructs a new PerformanceMaxUpgradeStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPerformanceMaxUpgradeStatusEnum);

                        /**
                         * Creates a new PerformanceMaxUpgradeStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PerformanceMaxUpgradeStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPerformanceMaxUpgradeStatusEnum): google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum;

                        /**
                         * Encodes the specified PerformanceMaxUpgradeStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum.verify|verify} messages.
                         * @param message PerformanceMaxUpgradeStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPerformanceMaxUpgradeStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PerformanceMaxUpgradeStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum.verify|verify} messages.
                         * @param message PerformanceMaxUpgradeStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPerformanceMaxUpgradeStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PerformanceMaxUpgradeStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PerformanceMaxUpgradeStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum;

                        /**
                         * Decodes a PerformanceMaxUpgradeStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PerformanceMaxUpgradeStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum;

                        /**
                         * Verifies a PerformanceMaxUpgradeStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PerformanceMaxUpgradeStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PerformanceMaxUpgradeStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum;

                        /**
                         * Creates a plain object from a PerformanceMaxUpgradeStatusEnum message. Also converts values to other types if specified.
                         * @param message PerformanceMaxUpgradeStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PerformanceMaxUpgradeStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PerformanceMaxUpgradeStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PerformanceMaxUpgradeStatusEnum {

                        /** PerformanceMaxUpgradeStatus enum. */
                        enum PerformanceMaxUpgradeStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UPGRADE_IN_PROGRESS = 3,
                            UPGRADE_COMPLETE = 4,
                            UPGRADE_FAILED = 5,
                            UPGRADE_ELIGIBLE = 6
                        }
                    }

                    /** Properties of a PlacementTypeEnum. */
                    interface IPlacementTypeEnum {
                    }

                    /** Represents a PlacementTypeEnum. */
                    class PlacementTypeEnum implements IPlacementTypeEnum {

                        /**
                         * Constructs a new PlacementTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPlacementTypeEnum);

                        /**
                         * Creates a new PlacementTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlacementTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPlacementTypeEnum): google.ads.googleads.v23.enums.PlacementTypeEnum;

                        /**
                         * Encodes the specified PlacementTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PlacementTypeEnum.verify|verify} messages.
                         * @param message PlacementTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPlacementTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlacementTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PlacementTypeEnum.verify|verify} messages.
                         * @param message PlacementTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPlacementTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlacementTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlacementTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PlacementTypeEnum;

                        /**
                         * Decodes a PlacementTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlacementTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PlacementTypeEnum;

                        /**
                         * Verifies a PlacementTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlacementTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlacementTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PlacementTypeEnum;

                        /**
                         * Creates a plain object from a PlacementTypeEnum message. Also converts values to other types if specified.
                         * @param message PlacementTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PlacementTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlacementTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlacementTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PlacementTypeEnum {

                        /** PlacementType enum. */
                        enum PlacementType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WEBSITE = 2,
                            MOBILE_APP_CATEGORY = 3,
                            MOBILE_APPLICATION = 4,
                            YOUTUBE_VIDEO = 5,
                            YOUTUBE_CHANNEL = 6,
                            GOOGLE_PRODUCTS = 7
                        }
                    }

                    /** Properties of a PositiveGeoTargetTypeEnum. */
                    interface IPositiveGeoTargetTypeEnum {
                    }

                    /** Represents a PositiveGeoTargetTypeEnum. */
                    class PositiveGeoTargetTypeEnum implements IPositiveGeoTargetTypeEnum {

                        /**
                         * Constructs a new PositiveGeoTargetTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IPositiveGeoTargetTypeEnum);

                        /**
                         * Creates a new PositiveGeoTargetTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PositiveGeoTargetTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IPositiveGeoTargetTypeEnum): google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum;

                        /**
                         * Encodes the specified PositiveGeoTargetTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum.verify|verify} messages.
                         * @param message PositiveGeoTargetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IPositiveGeoTargetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PositiveGeoTargetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum.verify|verify} messages.
                         * @param message PositiveGeoTargetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IPositiveGeoTargetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PositiveGeoTargetTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PositiveGeoTargetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum;

                        /**
                         * Decodes a PositiveGeoTargetTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PositiveGeoTargetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum;

                        /**
                         * Verifies a PositiveGeoTargetTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PositiveGeoTargetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PositiveGeoTargetTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum;

                        /**
                         * Creates a plain object from a PositiveGeoTargetTypeEnum message. Also converts values to other types if specified.
                         * @param message PositiveGeoTargetTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PositiveGeoTargetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PositiveGeoTargetTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PositiveGeoTargetTypeEnum {

                        /** PositiveGeoTargetType enum. */
                        enum PositiveGeoTargetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PRESENCE_OR_INTEREST = 5,
                            SEARCH_INTEREST = 6,
                            PRESENCE = 7
                        }
                    }

                    /** Properties of a ProductAvailabilityEnum. */
                    interface IProductAvailabilityEnum {
                    }

                    /** Represents a ProductAvailabilityEnum. */
                    class ProductAvailabilityEnum implements IProductAvailabilityEnum {

                        /**
                         * Constructs a new ProductAvailabilityEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductAvailabilityEnum);

                        /**
                         * Creates a new ProductAvailabilityEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductAvailabilityEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductAvailabilityEnum): google.ads.googleads.v23.enums.ProductAvailabilityEnum;

                        /**
                         * Encodes the specified ProductAvailabilityEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductAvailabilityEnum.verify|verify} messages.
                         * @param message ProductAvailabilityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductAvailabilityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductAvailabilityEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductAvailabilityEnum.verify|verify} messages.
                         * @param message ProductAvailabilityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductAvailabilityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductAvailabilityEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductAvailabilityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductAvailabilityEnum;

                        /**
                         * Decodes a ProductAvailabilityEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductAvailabilityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductAvailabilityEnum;

                        /**
                         * Verifies a ProductAvailabilityEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductAvailabilityEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductAvailabilityEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductAvailabilityEnum;

                        /**
                         * Creates a plain object from a ProductAvailabilityEnum message. Also converts values to other types if specified.
                         * @param message ProductAvailabilityEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductAvailabilityEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductAvailabilityEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductAvailabilityEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductAvailabilityEnum {

                        /** ProductAvailability enum. */
                        enum ProductAvailability {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IN_STOCK = 2,
                            OUT_OF_STOCK = 3,
                            PREORDER = 4
                        }
                    }

                    /** Properties of a ProductCategoryStateEnum. */
                    interface IProductCategoryStateEnum {
                    }

                    /** Represents a ProductCategoryStateEnum. */
                    class ProductCategoryStateEnum implements IProductCategoryStateEnum {

                        /**
                         * Constructs a new ProductCategoryStateEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductCategoryStateEnum);

                        /**
                         * Creates a new ProductCategoryStateEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductCategoryStateEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductCategoryStateEnum): google.ads.googleads.v23.enums.ProductCategoryStateEnum;

                        /**
                         * Encodes the specified ProductCategoryStateEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductCategoryStateEnum.verify|verify} messages.
                         * @param message ProductCategoryStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductCategoryStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCategoryStateEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductCategoryStateEnum.verify|verify} messages.
                         * @param message ProductCategoryStateEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductCategoryStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCategoryStateEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductCategoryStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductCategoryStateEnum;

                        /**
                         * Decodes a ProductCategoryStateEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductCategoryStateEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductCategoryStateEnum;

                        /**
                         * Verifies a ProductCategoryStateEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductCategoryStateEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductCategoryStateEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductCategoryStateEnum;

                        /**
                         * Creates a plain object from a ProductCategoryStateEnum message. Also converts values to other types if specified.
                         * @param message ProductCategoryStateEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductCategoryStateEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCategoryStateEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductCategoryStateEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductCategoryStateEnum {

                        /** ProductCategoryState enum. */
                        enum ProductCategoryState {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            OBSOLETE = 3
                        }
                    }

                    /** Properties of a ProductIssueSeverityEnum. */
                    interface IProductIssueSeverityEnum {
                    }

                    /** Represents a ProductIssueSeverityEnum. */
                    class ProductIssueSeverityEnum implements IProductIssueSeverityEnum {

                        /**
                         * Constructs a new ProductIssueSeverityEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductIssueSeverityEnum);

                        /**
                         * Creates a new ProductIssueSeverityEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductIssueSeverityEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductIssueSeverityEnum): google.ads.googleads.v23.enums.ProductIssueSeverityEnum;

                        /**
                         * Encodes the specified ProductIssueSeverityEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductIssueSeverityEnum.verify|verify} messages.
                         * @param message ProductIssueSeverityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductIssueSeverityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductIssueSeverityEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductIssueSeverityEnum.verify|verify} messages.
                         * @param message ProductIssueSeverityEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductIssueSeverityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductIssueSeverityEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductIssueSeverityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductIssueSeverityEnum;

                        /**
                         * Decodes a ProductIssueSeverityEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductIssueSeverityEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductIssueSeverityEnum;

                        /**
                         * Verifies a ProductIssueSeverityEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductIssueSeverityEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductIssueSeverityEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductIssueSeverityEnum;

                        /**
                         * Creates a plain object from a ProductIssueSeverityEnum message. Also converts values to other types if specified.
                         * @param message ProductIssueSeverityEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductIssueSeverityEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductIssueSeverityEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductIssueSeverityEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductIssueSeverityEnum {

                        /** ProductIssueSeverity enum. */
                        enum ProductIssueSeverity {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WARNING = 2,
                            ERROR = 3
                        }
                    }

                    /** Properties of a ProductLinkInvitationStatusEnum. */
                    interface IProductLinkInvitationStatusEnum {
                    }

                    /** Represents a ProductLinkInvitationStatusEnum. */
                    class ProductLinkInvitationStatusEnum implements IProductLinkInvitationStatusEnum {

                        /**
                         * Constructs a new ProductLinkInvitationStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductLinkInvitationStatusEnum);

                        /**
                         * Creates a new ProductLinkInvitationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductLinkInvitationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductLinkInvitationStatusEnum): google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum;

                        /**
                         * Encodes the specified ProductLinkInvitationStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.verify|verify} messages.
                         * @param message ProductLinkInvitationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductLinkInvitationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductLinkInvitationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.verify|verify} messages.
                         * @param message ProductLinkInvitationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductLinkInvitationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductLinkInvitationStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductLinkInvitationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum;

                        /**
                         * Decodes a ProductLinkInvitationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductLinkInvitationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum;

                        /**
                         * Verifies a ProductLinkInvitationStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductLinkInvitationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductLinkInvitationStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum;

                        /**
                         * Creates a plain object from a ProductLinkInvitationStatusEnum message. Also converts values to other types if specified.
                         * @param message ProductLinkInvitationStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductLinkInvitationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductLinkInvitationStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductLinkInvitationStatusEnum {

                        /** ProductLinkInvitationStatus enum. */
                        enum ProductLinkInvitationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACCEPTED = 2,
                            REQUESTED = 3,
                            PENDING_APPROVAL = 4,
                            REVOKED = 5,
                            REJECTED = 6,
                            EXPIRED = 7
                        }
                    }

                    /** Properties of a ProductStatusEnum. */
                    interface IProductStatusEnum {
                    }

                    /** Represents a ProductStatusEnum. */
                    class ProductStatusEnum implements IProductStatusEnum {

                        /**
                         * Constructs a new ProductStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IProductStatusEnum);

                        /**
                         * Creates a new ProductStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IProductStatusEnum): google.ads.googleads.v23.enums.ProductStatusEnum;

                        /**
                         * Encodes the specified ProductStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ProductStatusEnum.verify|verify} messages.
                         * @param message ProductStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IProductStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ProductStatusEnum.verify|verify} messages.
                         * @param message ProductStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IProductStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ProductStatusEnum;

                        /**
                         * Decodes a ProductStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ProductStatusEnum;

                        /**
                         * Verifies a ProductStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ProductStatusEnum;

                        /**
                         * Creates a plain object from a ProductStatusEnum message. Also converts values to other types if specified.
                         * @param message ProductStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ProductStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductStatusEnum {

                        /** ProductStatus enum. */
                        enum ProductStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_ELIGIBLE = 2,
                            ELIGIBLE_LIMITED = 3,
                            ELIGIBLE = 4
                        }
                    }

                    /** Properties of a ReachPlanAgeRangeEnum. */
                    interface IReachPlanAgeRangeEnum {
                    }

                    /** Represents a ReachPlanAgeRangeEnum. */
                    class ReachPlanAgeRangeEnum implements IReachPlanAgeRangeEnum {

                        /**
                         * Constructs a new ReachPlanAgeRangeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IReachPlanAgeRangeEnum);

                        /**
                         * Creates a new ReachPlanAgeRangeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachPlanAgeRangeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IReachPlanAgeRangeEnum): google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum;

                        /**
                         * Encodes the specified ReachPlanAgeRangeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.verify|verify} messages.
                         * @param message ReachPlanAgeRangeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IReachPlanAgeRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanAgeRangeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.verify|verify} messages.
                         * @param message ReachPlanAgeRangeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IReachPlanAgeRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanAgeRangeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachPlanAgeRangeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum;

                        /**
                         * Decodes a ReachPlanAgeRangeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachPlanAgeRangeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum;

                        /**
                         * Verifies a ReachPlanAgeRangeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanAgeRangeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachPlanAgeRangeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum;

                        /**
                         * Creates a plain object from a ReachPlanAgeRangeEnum message. Also converts values to other types if specified.
                         * @param message ReachPlanAgeRangeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanAgeRangeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachPlanAgeRangeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ReachPlanAgeRangeEnum {

                        /** ReachPlanAgeRange enum. */
                        enum ReachPlanAgeRange {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AGE_RANGE_18_24 = 503001,
                            AGE_RANGE_18_34 = 2,
                            AGE_RANGE_18_44 = 3,
                            AGE_RANGE_18_49 = 4,
                            AGE_RANGE_18_54 = 5,
                            AGE_RANGE_18_64 = 6,
                            AGE_RANGE_18_65_UP = 7,
                            AGE_RANGE_21_34 = 8,
                            AGE_RANGE_25_34 = 503002,
                            AGE_RANGE_25_44 = 9,
                            AGE_RANGE_25_49 = 10,
                            AGE_RANGE_25_54 = 11,
                            AGE_RANGE_25_64 = 12,
                            AGE_RANGE_25_65_UP = 13,
                            AGE_RANGE_35_44 = 503003,
                            AGE_RANGE_35_49 = 14,
                            AGE_RANGE_35_54 = 15,
                            AGE_RANGE_35_64 = 16,
                            AGE_RANGE_35_65_UP = 17,
                            AGE_RANGE_45_54 = 503004,
                            AGE_RANGE_45_64 = 18,
                            AGE_RANGE_45_65_UP = 19,
                            AGE_RANGE_50_65_UP = 20,
                            AGE_RANGE_55_64 = 503005,
                            AGE_RANGE_55_65_UP = 21,
                            AGE_RANGE_65_UP = 503006
                        }
                    }

                    /** Properties of a ReachPlanConversionRateModelEnum. */
                    interface IReachPlanConversionRateModelEnum {
                    }

                    /** Represents a ReachPlanConversionRateModelEnum. */
                    class ReachPlanConversionRateModelEnum implements IReachPlanConversionRateModelEnum {

                        /**
                         * Constructs a new ReachPlanConversionRateModelEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IReachPlanConversionRateModelEnum);

                        /**
                         * Creates a new ReachPlanConversionRateModelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachPlanConversionRateModelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IReachPlanConversionRateModelEnum): google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum;

                        /**
                         * Encodes the specified ReachPlanConversionRateModelEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum.verify|verify} messages.
                         * @param message ReachPlanConversionRateModelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IReachPlanConversionRateModelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanConversionRateModelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum.verify|verify} messages.
                         * @param message ReachPlanConversionRateModelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IReachPlanConversionRateModelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanConversionRateModelEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachPlanConversionRateModelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum;

                        /**
                         * Decodes a ReachPlanConversionRateModelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachPlanConversionRateModelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum;

                        /**
                         * Verifies a ReachPlanConversionRateModelEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanConversionRateModelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachPlanConversionRateModelEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum;

                        /**
                         * Creates a plain object from a ReachPlanConversionRateModelEnum message. Also converts values to other types if specified.
                         * @param message ReachPlanConversionRateModelEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanConversionRateModelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachPlanConversionRateModelEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ReachPlanConversionRateModelEnum {

                        /** ReachPlanConversionRateModel enum. */
                        enum ReachPlanConversionRateModel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER_HISTORY = 2,
                            INVENTORY_AGGRESSIVE = 3,
                            INVENTORY_CONSERVATIVE = 4,
                            INVENTORY_MEDIAN = 5
                        }
                    }

                    /** Properties of a ReachPlanNetworkEnum. */
                    interface IReachPlanNetworkEnum {
                    }

                    /** Represents a ReachPlanNetworkEnum. */
                    class ReachPlanNetworkEnum implements IReachPlanNetworkEnum {

                        /**
                         * Constructs a new ReachPlanNetworkEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IReachPlanNetworkEnum);

                        /**
                         * Creates a new ReachPlanNetworkEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachPlanNetworkEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IReachPlanNetworkEnum): google.ads.googleads.v23.enums.ReachPlanNetworkEnum;

                        /**
                         * Encodes the specified ReachPlanNetworkEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanNetworkEnum.verify|verify} messages.
                         * @param message ReachPlanNetworkEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IReachPlanNetworkEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanNetworkEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanNetworkEnum.verify|verify} messages.
                         * @param message ReachPlanNetworkEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IReachPlanNetworkEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanNetworkEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachPlanNetworkEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ReachPlanNetworkEnum;

                        /**
                         * Decodes a ReachPlanNetworkEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachPlanNetworkEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ReachPlanNetworkEnum;

                        /**
                         * Verifies a ReachPlanNetworkEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanNetworkEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachPlanNetworkEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ReachPlanNetworkEnum;

                        /**
                         * Creates a plain object from a ReachPlanNetworkEnum message. Also converts values to other types if specified.
                         * @param message ReachPlanNetworkEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ReachPlanNetworkEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanNetworkEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachPlanNetworkEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ReachPlanNetworkEnum {

                        /** ReachPlanNetwork enum. */
                        enum ReachPlanNetwork {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            YOUTUBE = 2,
                            GOOGLE_VIDEO_PARTNERS = 3,
                            YOUTUBE_AND_GOOGLE_VIDEO_PARTNERS = 4
                        }
                    }

                    /** Properties of a ReachPlanPlannableUserListStatusEnum. */
                    interface IReachPlanPlannableUserListStatusEnum {
                    }

                    /** Represents a ReachPlanPlannableUserListStatusEnum. */
                    class ReachPlanPlannableUserListStatusEnum implements IReachPlanPlannableUserListStatusEnum {

                        /**
                         * Constructs a new ReachPlanPlannableUserListStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IReachPlanPlannableUserListStatusEnum);

                        /**
                         * Creates a new ReachPlanPlannableUserListStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachPlanPlannableUserListStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IReachPlanPlannableUserListStatusEnum): google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum;

                        /**
                         * Encodes the specified ReachPlanPlannableUserListStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum.verify|verify} messages.
                         * @param message ReachPlanPlannableUserListStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IReachPlanPlannableUserListStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanPlannableUserListStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum.verify|verify} messages.
                         * @param message ReachPlanPlannableUserListStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IReachPlanPlannableUserListStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanPlannableUserListStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachPlanPlannableUserListStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum;

                        /**
                         * Decodes a ReachPlanPlannableUserListStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachPlanPlannableUserListStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum;

                        /**
                         * Verifies a ReachPlanPlannableUserListStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanPlannableUserListStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachPlanPlannableUserListStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum;

                        /**
                         * Creates a plain object from a ReachPlanPlannableUserListStatusEnum message. Also converts values to other types if specified.
                         * @param message ReachPlanPlannableUserListStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanPlannableUserListStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachPlanPlannableUserListStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ReachPlanPlannableUserListStatusEnum {

                        /** ReachPlanPlannableUserListStatus enum. */
                        enum ReachPlanPlannableUserListStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PLANNABLE = 2,
                            UNPLANNABLE = 3
                        }
                    }

                    /** Properties of a ReachPlanSurfaceEnum. */
                    interface IReachPlanSurfaceEnum {
                    }

                    /** Represents a ReachPlanSurfaceEnum. */
                    class ReachPlanSurfaceEnum implements IReachPlanSurfaceEnum {

                        /**
                         * Constructs a new ReachPlanSurfaceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IReachPlanSurfaceEnum);

                        /**
                         * Creates a new ReachPlanSurfaceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachPlanSurfaceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IReachPlanSurfaceEnum): google.ads.googleads.v23.enums.ReachPlanSurfaceEnum;

                        /**
                         * Encodes the specified ReachPlanSurfaceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanSurfaceEnum.verify|verify} messages.
                         * @param message ReachPlanSurfaceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IReachPlanSurfaceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanSurfaceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ReachPlanSurfaceEnum.verify|verify} messages.
                         * @param message ReachPlanSurfaceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IReachPlanSurfaceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanSurfaceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachPlanSurfaceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ReachPlanSurfaceEnum;

                        /**
                         * Decodes a ReachPlanSurfaceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachPlanSurfaceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ReachPlanSurfaceEnum;

                        /**
                         * Verifies a ReachPlanSurfaceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanSurfaceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachPlanSurfaceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ReachPlanSurfaceEnum;

                        /**
                         * Creates a plain object from a ReachPlanSurfaceEnum message. Also converts values to other types if specified.
                         * @param message ReachPlanSurfaceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ReachPlanSurfaceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanSurfaceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachPlanSurfaceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ReachPlanSurfaceEnum {

                        /** ReachPlanSurface enum. */
                        enum ReachPlanSurface {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DISCOVER_FEED = 7,
                            GMAIL = 8,
                            IN_FEED = 2,
                            IN_STREAM_BUMPER = 3,
                            IN_STREAM_NON_SKIPPABLE = 4,
                            IN_STREAM_SKIPPABLE = 5,
                            SHORTS = 6
                        }
                    }

                    /** Properties of a RecommendationSubscriptionStatusEnum. */
                    interface IRecommendationSubscriptionStatusEnum {
                    }

                    /** Represents a RecommendationSubscriptionStatusEnum. */
                    class RecommendationSubscriptionStatusEnum implements IRecommendationSubscriptionStatusEnum {

                        /**
                         * Constructs a new RecommendationSubscriptionStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IRecommendationSubscriptionStatusEnum);

                        /**
                         * Creates a new RecommendationSubscriptionStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecommendationSubscriptionStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IRecommendationSubscriptionStatusEnum): google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum;

                        /**
                         * Encodes the specified RecommendationSubscriptionStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum.verify|verify} messages.
                         * @param message RecommendationSubscriptionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IRecommendationSubscriptionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationSubscriptionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum.verify|verify} messages.
                         * @param message RecommendationSubscriptionStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IRecommendationSubscriptionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationSubscriptionStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecommendationSubscriptionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum;

                        /**
                         * Decodes a RecommendationSubscriptionStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecommendationSubscriptionStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum;

                        /**
                         * Verifies a RecommendationSubscriptionStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationSubscriptionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecommendationSubscriptionStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum;

                        /**
                         * Creates a plain object from a RecommendationSubscriptionStatusEnum message. Also converts values to other types if specified.
                         * @param message RecommendationSubscriptionStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationSubscriptionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecommendationSubscriptionStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RecommendationSubscriptionStatusEnum {

                        /** RecommendationSubscriptionStatus enum. */
                        enum RecommendationSubscriptionStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3
                        }
                    }

                    /** Properties of a RegulatoryFeeTypeEnum. */
                    interface IRegulatoryFeeTypeEnum {
                    }

                    /** Represents a RegulatoryFeeTypeEnum. */
                    class RegulatoryFeeTypeEnum implements IRegulatoryFeeTypeEnum {

                        /**
                         * Constructs a new RegulatoryFeeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IRegulatoryFeeTypeEnum);

                        /**
                         * Creates a new RegulatoryFeeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RegulatoryFeeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IRegulatoryFeeTypeEnum): google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum;

                        /**
                         * Encodes the specified RegulatoryFeeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum.verify|verify} messages.
                         * @param message RegulatoryFeeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IRegulatoryFeeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RegulatoryFeeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum.verify|verify} messages.
                         * @param message RegulatoryFeeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IRegulatoryFeeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RegulatoryFeeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RegulatoryFeeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum;

                        /**
                         * Decodes a RegulatoryFeeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RegulatoryFeeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum;

                        /**
                         * Verifies a RegulatoryFeeTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RegulatoryFeeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RegulatoryFeeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum;

                        /**
                         * Creates a plain object from a RegulatoryFeeTypeEnum message. Also converts values to other types if specified.
                         * @param message RegulatoryFeeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RegulatoryFeeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RegulatoryFeeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RegulatoryFeeTypeEnum {

                        /** RegulatoryFeeType enum. */
                        enum RegulatoryFeeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AUSTRIA_DST_FEE = 2,
                            TURKIYE_REGULATORY_OPERATING_COST = 3,
                            UK_DST_FEE = 4,
                            SPAIN_REGULATORY_OPERATING_COST = 5,
                            FRANCE_REGULATORY_OPERATING_COST = 6,
                            ITALY_REGULATORY_OPERATING_COST = 7,
                            INDIA_REGULATORY_OPERATING_COST = 8,
                            POLAND_REGULATORY_OPERATING_COST = 9,
                            OPERATING_CHARGES = 10,
                            CANADA_DST_FEE = 11
                        }
                    }

                    /** Properties of a ResourceChangeOperationEnum. */
                    interface IResourceChangeOperationEnum {
                    }

                    /** Represents a ResourceChangeOperationEnum. */
                    class ResourceChangeOperationEnum implements IResourceChangeOperationEnum {

                        /**
                         * Constructs a new ResourceChangeOperationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IResourceChangeOperationEnum);

                        /**
                         * Creates a new ResourceChangeOperationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResourceChangeOperationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IResourceChangeOperationEnum): google.ads.googleads.v23.enums.ResourceChangeOperationEnum;

                        /**
                         * Encodes the specified ResourceChangeOperationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ResourceChangeOperationEnum.verify|verify} messages.
                         * @param message ResourceChangeOperationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IResourceChangeOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceChangeOperationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ResourceChangeOperationEnum.verify|verify} messages.
                         * @param message ResourceChangeOperationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IResourceChangeOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceChangeOperationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ResourceChangeOperationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ResourceChangeOperationEnum;

                        /**
                         * Decodes a ResourceChangeOperationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ResourceChangeOperationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ResourceChangeOperationEnum;

                        /**
                         * Verifies a ResourceChangeOperationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceChangeOperationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ResourceChangeOperationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ResourceChangeOperationEnum;

                        /**
                         * Creates a plain object from a ResourceChangeOperationEnum message. Also converts values to other types if specified.
                         * @param message ResourceChangeOperationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ResourceChangeOperationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceChangeOperationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ResourceChangeOperationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ResourceChangeOperationEnum {

                        /** ResourceChangeOperation enum. */
                        enum ResourceChangeOperation {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CREATE = 2,
                            UPDATE = 3,
                            REMOVE = 4
                        }
                    }

                    /** Properties of a ResourceLimitTypeEnum. */
                    interface IResourceLimitTypeEnum {
                    }

                    /** Represents a ResourceLimitTypeEnum. */
                    class ResourceLimitTypeEnum implements IResourceLimitTypeEnum {

                        /**
                         * Constructs a new ResourceLimitTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IResourceLimitTypeEnum);

                        /**
                         * Creates a new ResourceLimitTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResourceLimitTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IResourceLimitTypeEnum): google.ads.googleads.v23.enums.ResourceLimitTypeEnum;

                        /**
                         * Encodes the specified ResourceLimitTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ResourceLimitTypeEnum.verify|verify} messages.
                         * @param message ResourceLimitTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IResourceLimitTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceLimitTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ResourceLimitTypeEnum.verify|verify} messages.
                         * @param message ResourceLimitTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IResourceLimitTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceLimitTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ResourceLimitTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ResourceLimitTypeEnum;

                        /**
                         * Decodes a ResourceLimitTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ResourceLimitTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ResourceLimitTypeEnum;

                        /**
                         * Verifies a ResourceLimitTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceLimitTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ResourceLimitTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ResourceLimitTypeEnum;

                        /**
                         * Creates a plain object from a ResourceLimitTypeEnum message. Also converts values to other types if specified.
                         * @param message ResourceLimitTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ResourceLimitTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceLimitTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ResourceLimitTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ResourceLimitTypeEnum {

                        /** ResourceLimitType enum. */
                        enum ResourceLimitType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGNS_PER_CUSTOMER = 2,
                            BASE_CAMPAIGNS_PER_CUSTOMER = 3,
                            EXPERIMENT_CAMPAIGNS_PER_CUSTOMER = 105,
                            HOTEL_CAMPAIGNS_PER_CUSTOMER = 4,
                            SMART_SHOPPING_CAMPAIGNS_PER_CUSTOMER = 5,
                            AD_GROUPS_PER_CAMPAIGN = 6,
                            AD_GROUPS_PER_SHOPPING_CAMPAIGN = 8,
                            AD_GROUPS_PER_HOTEL_CAMPAIGN = 9,
                            REPORTING_AD_GROUPS_PER_LOCAL_CAMPAIGN = 10,
                            REPORTING_AD_GROUPS_PER_APP_CAMPAIGN = 11,
                            MANAGED_AD_GROUPS_PER_SMART_CAMPAIGN = 52,
                            AD_GROUP_CRITERIA_PER_CUSTOMER = 12,
                            BASE_AD_GROUP_CRITERIA_PER_CUSTOMER = 13,
                            EXPERIMENT_AD_GROUP_CRITERIA_PER_CUSTOMER = 107,
                            AD_GROUP_CRITERIA_PER_CAMPAIGN = 14,
                            CAMPAIGN_CRITERIA_PER_CUSTOMER = 15,
                            BASE_CAMPAIGN_CRITERIA_PER_CUSTOMER = 16,
                            EXPERIMENT_CAMPAIGN_CRITERIA_PER_CUSTOMER = 108,
                            WEBPAGE_CRITERIA_PER_CUSTOMER = 17,
                            BASE_WEBPAGE_CRITERIA_PER_CUSTOMER = 18,
                            EXPERIMENT_WEBPAGE_CRITERIA_PER_CUSTOMER = 19,
                            COMBINED_AUDIENCE_CRITERIA_PER_AD_GROUP = 20,
                            CUSTOMER_NEGATIVE_PLACEMENT_CRITERIA_PER_CUSTOMER = 21,
                            CUSTOMER_NEGATIVE_YOUTUBE_CHANNEL_CRITERIA_PER_CUSTOMER = 22,
                            CRITERIA_PER_AD_GROUP = 23,
                            LISTING_GROUPS_PER_AD_GROUP = 24,
                            EXPLICITLY_SHARED_BUDGETS_PER_CUSTOMER = 25,
                            IMPLICITLY_SHARED_BUDGETS_PER_CUSTOMER = 26,
                            COMBINED_AUDIENCE_CRITERIA_PER_CAMPAIGN = 27,
                            NEGATIVE_KEYWORDS_PER_CAMPAIGN = 28,
                            NEGATIVE_PLACEMENTS_PER_CAMPAIGN = 29,
                            GEO_TARGETS_PER_CAMPAIGN = 30,
                            NEGATIVE_IP_BLOCKS_PER_CAMPAIGN = 32,
                            PROXIMITIES_PER_CAMPAIGN = 33,
                            LISTING_SCOPES_PER_SHOPPING_CAMPAIGN = 34,
                            LISTING_SCOPES_PER_NON_SHOPPING_CAMPAIGN = 35,
                            NEGATIVE_KEYWORDS_PER_SHARED_SET = 36,
                            NEGATIVE_PLACEMENTS_PER_SHARED_SET = 37,
                            SHARED_SETS_PER_CUSTOMER_FOR_TYPE_DEFAULT = 40,
                            SHARED_SETS_PER_CUSTOMER_FOR_NEGATIVE_PLACEMENT_LIST_LOWER = 41,
                            HOTEL_ADVANCE_BOOKING_WINDOW_BID_MODIFIERS_PER_AD_GROUP = 44,
                            BIDDING_STRATEGIES_PER_CUSTOMER = 45,
                            BASIC_USER_LISTS_PER_CUSTOMER = 47,
                            LOGICAL_USER_LISTS_PER_CUSTOMER = 48,
                            RULE_BASED_USER_LISTS_PER_CUSTOMER = 153,
                            BASE_AD_GROUP_ADS_PER_CUSTOMER = 53,
                            EXPERIMENT_AD_GROUP_ADS_PER_CUSTOMER = 54,
                            AD_GROUP_ADS_PER_CAMPAIGN = 55,
                            TEXT_AND_OTHER_ADS_PER_AD_GROUP = 56,
                            IMAGE_ADS_PER_AD_GROUP = 57,
                            SHOPPING_SMART_ADS_PER_AD_GROUP = 58,
                            RESPONSIVE_SEARCH_ADS_PER_AD_GROUP = 59,
                            APP_ADS_PER_AD_GROUP = 60,
                            APP_ENGAGEMENT_ADS_PER_AD_GROUP = 61,
                            LOCAL_ADS_PER_AD_GROUP = 62,
                            VIDEO_ADS_PER_AD_GROUP = 63,
                            LEAD_FORM_CAMPAIGN_ASSETS_PER_CAMPAIGN = 143,
                            PROMOTION_CUSTOMER_ASSETS_PER_CUSTOMER = 79,
                            PROMOTION_CAMPAIGN_ASSETS_PER_CAMPAIGN = 80,
                            PROMOTION_AD_GROUP_ASSETS_PER_AD_GROUP = 81,
                            CALLOUT_CUSTOMER_ASSETS_PER_CUSTOMER = 134,
                            CALLOUT_CAMPAIGN_ASSETS_PER_CAMPAIGN = 135,
                            CALLOUT_AD_GROUP_ASSETS_PER_AD_GROUP = 136,
                            SITELINK_CUSTOMER_ASSETS_PER_CUSTOMER = 137,
                            SITELINK_CAMPAIGN_ASSETS_PER_CAMPAIGN = 138,
                            SITELINK_AD_GROUP_ASSETS_PER_AD_GROUP = 139,
                            STRUCTURED_SNIPPET_CUSTOMER_ASSETS_PER_CUSTOMER = 140,
                            STRUCTURED_SNIPPET_CAMPAIGN_ASSETS_PER_CAMPAIGN = 141,
                            STRUCTURED_SNIPPET_AD_GROUP_ASSETS_PER_AD_GROUP = 142,
                            MOBILE_APP_CUSTOMER_ASSETS_PER_CUSTOMER = 144,
                            MOBILE_APP_CAMPAIGN_ASSETS_PER_CAMPAIGN = 145,
                            MOBILE_APP_AD_GROUP_ASSETS_PER_AD_GROUP = 146,
                            HOTEL_CALLOUT_CUSTOMER_ASSETS_PER_CUSTOMER = 147,
                            HOTEL_CALLOUT_CAMPAIGN_ASSETS_PER_CAMPAIGN = 148,
                            HOTEL_CALLOUT_AD_GROUP_ASSETS_PER_AD_GROUP = 149,
                            CALL_CUSTOMER_ASSETS_PER_CUSTOMER = 150,
                            CALL_CAMPAIGN_ASSETS_PER_CAMPAIGN = 151,
                            CALL_AD_GROUP_ASSETS_PER_AD_GROUP = 152,
                            PRICE_CUSTOMER_ASSETS_PER_CUSTOMER = 154,
                            PRICE_CAMPAIGN_ASSETS_PER_CAMPAIGN = 155,
                            PRICE_AD_GROUP_ASSETS_PER_AD_GROUP = 156,
                            AD_IMAGE_CAMPAIGN_ASSETS_PER_CAMPAIGN = 175,
                            AD_IMAGE_AD_GROUP_ASSETS_PER_AD_GROUP = 176,
                            PAGE_FEED_ASSET_SETS_PER_CUSTOMER = 157,
                            DYNAMIC_EDUCATION_FEED_ASSET_SETS_PER_CUSTOMER = 158,
                            ASSETS_PER_PAGE_FEED_ASSET_SET = 159,
                            ASSETS_PER_DYNAMIC_EDUCATION_FEED_ASSET_SET = 160,
                            DYNAMIC_REAL_ESTATE_ASSET_SETS_PER_CUSTOMER = 161,
                            ASSETS_PER_DYNAMIC_REAL_ESTATE_ASSET_SET = 162,
                            DYNAMIC_CUSTOM_ASSET_SETS_PER_CUSTOMER = 163,
                            ASSETS_PER_DYNAMIC_CUSTOM_ASSET_SET = 164,
                            DYNAMIC_HOTELS_AND_RENTALS_ASSET_SETS_PER_CUSTOMER = 165,
                            ASSETS_PER_DYNAMIC_HOTELS_AND_RENTALS_ASSET_SET = 166,
                            DYNAMIC_LOCAL_ASSET_SETS_PER_CUSTOMER = 167,
                            ASSETS_PER_DYNAMIC_LOCAL_ASSET_SET = 168,
                            DYNAMIC_FLIGHTS_ASSET_SETS_PER_CUSTOMER = 169,
                            ASSETS_PER_DYNAMIC_FLIGHTS_ASSET_SET = 170,
                            DYNAMIC_TRAVEL_ASSET_SETS_PER_CUSTOMER = 171,
                            ASSETS_PER_DYNAMIC_TRAVEL_ASSET_SET = 172,
                            DYNAMIC_JOBS_ASSET_SETS_PER_CUSTOMER = 173,
                            ASSETS_PER_DYNAMIC_JOBS_ASSET_SET = 174,
                            BUSINESS_NAME_CAMPAIGN_ASSETS_PER_CAMPAIGN = 179,
                            BUSINESS_LOGO_CAMPAIGN_ASSETS_PER_CAMPAIGN = 180,
                            VERSIONS_PER_AD = 82,
                            USER_FEEDS_PER_CUSTOMER = 90,
                            SYSTEM_FEEDS_PER_CUSTOMER = 91,
                            FEED_ATTRIBUTES_PER_FEED = 92,
                            FEED_ITEMS_PER_CUSTOMER = 94,
                            CAMPAIGN_FEEDS_PER_CUSTOMER = 95,
                            BASE_CAMPAIGN_FEEDS_PER_CUSTOMER = 96,
                            EXPERIMENT_CAMPAIGN_FEEDS_PER_CUSTOMER = 109,
                            AD_GROUP_FEEDS_PER_CUSTOMER = 97,
                            BASE_AD_GROUP_FEEDS_PER_CUSTOMER = 98,
                            EXPERIMENT_AD_GROUP_FEEDS_PER_CUSTOMER = 110,
                            AD_GROUP_FEEDS_PER_CAMPAIGN = 99,
                            FEED_ITEM_SETS_PER_CUSTOMER = 100,
                            FEED_ITEMS_PER_FEED_ITEM_SET = 101,
                            CAMPAIGN_EXPERIMENTS_PER_CUSTOMER = 112,
                            EXPERIMENT_ARMS_PER_VIDEO_EXPERIMENT = 113,
                            OWNED_LABELS_PER_CUSTOMER = 115,
                            LABELS_PER_CAMPAIGN = 117,
                            LABELS_PER_AD_GROUP = 118,
                            LABELS_PER_AD_GROUP_AD = 119,
                            LABELS_PER_AD_GROUP_CRITERION = 120,
                            TARGET_CUSTOMERS_PER_LABEL = 121,
                            KEYWORD_PLANS_PER_USER_PER_CUSTOMER = 122,
                            KEYWORD_PLAN_AD_GROUP_KEYWORDS_PER_KEYWORD_PLAN = 123,
                            KEYWORD_PLAN_AD_GROUPS_PER_KEYWORD_PLAN = 124,
                            KEYWORD_PLAN_NEGATIVE_KEYWORDS_PER_KEYWORD_PLAN = 125,
                            KEYWORD_PLAN_CAMPAIGNS_PER_KEYWORD_PLAN = 126,
                            CONVERSION_ACTIONS_PER_CUSTOMER = 128,
                            BATCH_JOB_OPERATIONS_PER_JOB = 130,
                            BATCH_JOBS_PER_CUSTOMER = 131,
                            HOTEL_CHECK_IN_DATE_RANGE_BID_MODIFIERS_PER_AD_GROUP = 132,
                            SHARED_SETS_PER_ACCOUNT_FOR_ACCOUNT_LEVEL_NEGATIVE_KEYWORDS = 177,
                            ACCOUNT_LEVEL_NEGATIVE_KEYWORDS_PER_SHARED_SET = 178,
                            ENABLED_ASSET_PER_HOTEL_PROPERTY_ASSET_SET = 181,
                            ENABLED_HOTEL_PROPERTY_ASSET_LINKS_PER_ASSET_GROUP = 182,
                            BRANDS_PER_SHARED_SET = 183,
                            ENABLED_BRAND_LIST_CRITERIA_PER_CAMPAIGN = 184,
                            SHARED_SETS_PER_ACCOUNT_FOR_BRAND = 185,
                            LOOKALIKE_USER_LISTS_PER_CUSTOMER = 186,
                            LOGO_CAMPAIGN_ASSETS_PER_CAMPAIGN = 187,
                            BUSINESS_MESSAGE_ASSET_LINKS_PER_CUSTOMER = 188,
                            WHATSAPP_BUSINESS_MESSAGE_ASSET_LINKS_PER_CAMPAIGN = 189,
                            WHATSAPP_BUSINESS_MESSAGE_ASSET_LINKS_PER_AD_GROUP = 190,
                            BRAND_LIST_CRITERIA_PER_AD_GROUP = 193
                        }
                    }

                    /** Properties of a ResponseContentTypeEnum. */
                    interface IResponseContentTypeEnum {
                    }

                    /** Represents a ResponseContentTypeEnum. */
                    class ResponseContentTypeEnum implements IResponseContentTypeEnum {

                        /**
                         * Constructs a new ResponseContentTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IResponseContentTypeEnum);

                        /**
                         * Creates a new ResponseContentTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResponseContentTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IResponseContentTypeEnum): google.ads.googleads.v23.enums.ResponseContentTypeEnum;

                        /**
                         * Encodes the specified ResponseContentTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ResponseContentTypeEnum.verify|verify} messages.
                         * @param message ResponseContentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IResponseContentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResponseContentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ResponseContentTypeEnum.verify|verify} messages.
                         * @param message ResponseContentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IResponseContentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResponseContentTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ResponseContentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ResponseContentTypeEnum;

                        /**
                         * Decodes a ResponseContentTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ResponseContentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ResponseContentTypeEnum;

                        /**
                         * Verifies a ResponseContentTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResponseContentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ResponseContentTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ResponseContentTypeEnum;

                        /**
                         * Creates a plain object from a ResponseContentTypeEnum message. Also converts values to other types if specified.
                         * @param message ResponseContentTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ResponseContentTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResponseContentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ResponseContentTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ResponseContentTypeEnum {

                        /** ResponseContentType enum. */
                        enum ResponseContentType {
                            UNSPECIFIED = 0,
                            RESOURCE_NAME_ONLY = 1,
                            MUTABLE_RESOURCE = 2
                        }
                    }

                    /** Properties of a SeasonalityEventScopeEnum. */
                    interface ISeasonalityEventScopeEnum {
                    }

                    /** Represents a SeasonalityEventScopeEnum. */
                    class SeasonalityEventScopeEnum implements ISeasonalityEventScopeEnum {

                        /**
                         * Constructs a new SeasonalityEventScopeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISeasonalityEventScopeEnum);

                        /**
                         * Creates a new SeasonalityEventScopeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SeasonalityEventScopeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISeasonalityEventScopeEnum): google.ads.googleads.v23.enums.SeasonalityEventScopeEnum;

                        /**
                         * Encodes the specified SeasonalityEventScopeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.verify|verify} messages.
                         * @param message SeasonalityEventScopeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISeasonalityEventScopeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SeasonalityEventScopeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.verify|verify} messages.
                         * @param message SeasonalityEventScopeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISeasonalityEventScopeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SeasonalityEventScopeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SeasonalityEventScopeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SeasonalityEventScopeEnum;

                        /**
                         * Decodes a SeasonalityEventScopeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SeasonalityEventScopeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SeasonalityEventScopeEnum;

                        /**
                         * Verifies a SeasonalityEventScopeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SeasonalityEventScopeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SeasonalityEventScopeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SeasonalityEventScopeEnum;

                        /**
                         * Creates a plain object from a SeasonalityEventScopeEnum message. Also converts values to other types if specified.
                         * @param message SeasonalityEventScopeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SeasonalityEventScopeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SeasonalityEventScopeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SeasonalityEventScopeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SeasonalityEventScopeEnum {

                        /** SeasonalityEventScope enum. */
                        enum SeasonalityEventScope {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER = 2,
                            CAMPAIGN = 4,
                            CHANNEL = 5
                        }
                    }

                    /** Properties of a SeasonalityEventStatusEnum. */
                    interface ISeasonalityEventStatusEnum {
                    }

                    /** Represents a SeasonalityEventStatusEnum. */
                    class SeasonalityEventStatusEnum implements ISeasonalityEventStatusEnum {

                        /**
                         * Constructs a new SeasonalityEventStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISeasonalityEventStatusEnum);

                        /**
                         * Creates a new SeasonalityEventStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SeasonalityEventStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISeasonalityEventStatusEnum): google.ads.googleads.v23.enums.SeasonalityEventStatusEnum;

                        /**
                         * Encodes the specified SeasonalityEventStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.verify|verify} messages.
                         * @param message SeasonalityEventStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISeasonalityEventStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SeasonalityEventStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.verify|verify} messages.
                         * @param message SeasonalityEventStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISeasonalityEventStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SeasonalityEventStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SeasonalityEventStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SeasonalityEventStatusEnum;

                        /**
                         * Decodes a SeasonalityEventStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SeasonalityEventStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SeasonalityEventStatusEnum;

                        /**
                         * Verifies a SeasonalityEventStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SeasonalityEventStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SeasonalityEventStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SeasonalityEventStatusEnum;

                        /**
                         * Creates a plain object from a SeasonalityEventStatusEnum message. Also converts values to other types if specified.
                         * @param message SeasonalityEventStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SeasonalityEventStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SeasonalityEventStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SeasonalityEventStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SeasonalityEventStatusEnum {

                        /** SeasonalityEventStatus enum. */
                        enum SeasonalityEventStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 4
                        }
                    }

                    /** Properties of a SharedSetStatusEnum. */
                    interface ISharedSetStatusEnum {
                    }

                    /** Represents a SharedSetStatusEnum. */
                    class SharedSetStatusEnum implements ISharedSetStatusEnum {

                        /**
                         * Constructs a new SharedSetStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISharedSetStatusEnum);

                        /**
                         * Creates a new SharedSetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedSetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISharedSetStatusEnum): google.ads.googleads.v23.enums.SharedSetStatusEnum;

                        /**
                         * Encodes the specified SharedSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SharedSetStatusEnum.verify|verify} messages.
                         * @param message SharedSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISharedSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SharedSetStatusEnum.verify|verify} messages.
                         * @param message SharedSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISharedSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SharedSetStatusEnum;

                        /**
                         * Decodes a SharedSetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SharedSetStatusEnum;

                        /**
                         * Verifies a SharedSetStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedSetStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SharedSetStatusEnum;

                        /**
                         * Creates a plain object from a SharedSetStatusEnum message. Also converts values to other types if specified.
                         * @param message SharedSetStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SharedSetStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedSetStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SharedSetStatusEnum {

                        /** SharedSetStatus enum. */
                        enum SharedSetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a SharedSetTypeEnum. */
                    interface ISharedSetTypeEnum {
                    }

                    /** Represents a SharedSetTypeEnum. */
                    class SharedSetTypeEnum implements ISharedSetTypeEnum {

                        /**
                         * Constructs a new SharedSetTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISharedSetTypeEnum);

                        /**
                         * Creates a new SharedSetTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedSetTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISharedSetTypeEnum): google.ads.googleads.v23.enums.SharedSetTypeEnum;

                        /**
                         * Encodes the specified SharedSetTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SharedSetTypeEnum.verify|verify} messages.
                         * @param message SharedSetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISharedSetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SharedSetTypeEnum.verify|verify} messages.
                         * @param message SharedSetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISharedSetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedSetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SharedSetTypeEnum;

                        /**
                         * Decodes a SharedSetTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedSetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SharedSetTypeEnum;

                        /**
                         * Verifies a SharedSetTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedSetTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SharedSetTypeEnum;

                        /**
                         * Creates a plain object from a SharedSetTypeEnum message. Also converts values to other types if specified.
                         * @param message SharedSetTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SharedSetTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedSetTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SharedSetTypeEnum {

                        /** SharedSetType enum. */
                        enum SharedSetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEGATIVE_KEYWORDS = 2,
                            NEGATIVE_PLACEMENTS = 3,
                            ACCOUNT_LEVEL_NEGATIVE_KEYWORDS = 4,
                            BRANDS = 5,
                            WEBPAGES = 6,
                            VERTICAL_ADS_ITEM_GROUP_RULE_LIST = 7
                        }
                    }

                    /** Properties of a ShoppingAddProductsToCampaignRecommendationEnum. */
                    interface IShoppingAddProductsToCampaignRecommendationEnum {
                    }

                    /** Represents a ShoppingAddProductsToCampaignRecommendationEnum. */
                    class ShoppingAddProductsToCampaignRecommendationEnum implements IShoppingAddProductsToCampaignRecommendationEnum {

                        /**
                         * Constructs a new ShoppingAddProductsToCampaignRecommendationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IShoppingAddProductsToCampaignRecommendationEnum);

                        /**
                         * Creates a new ShoppingAddProductsToCampaignRecommendationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingAddProductsToCampaignRecommendationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IShoppingAddProductsToCampaignRecommendationEnum): google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum;

                        /**
                         * Encodes the specified ShoppingAddProductsToCampaignRecommendationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum.verify|verify} messages.
                         * @param message ShoppingAddProductsToCampaignRecommendationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IShoppingAddProductsToCampaignRecommendationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingAddProductsToCampaignRecommendationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum.verify|verify} messages.
                         * @param message ShoppingAddProductsToCampaignRecommendationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IShoppingAddProductsToCampaignRecommendationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingAddProductsToCampaignRecommendationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShoppingAddProductsToCampaignRecommendationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum;

                        /**
                         * Decodes a ShoppingAddProductsToCampaignRecommendationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShoppingAddProductsToCampaignRecommendationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum;

                        /**
                         * Verifies a ShoppingAddProductsToCampaignRecommendationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShoppingAddProductsToCampaignRecommendationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShoppingAddProductsToCampaignRecommendationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum;

                        /**
                         * Creates a plain object from a ShoppingAddProductsToCampaignRecommendationEnum message. Also converts values to other types if specified.
                         * @param message ShoppingAddProductsToCampaignRecommendationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShoppingAddProductsToCampaignRecommendationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShoppingAddProductsToCampaignRecommendationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ShoppingAddProductsToCampaignRecommendationEnum {

                        /** Reason enum. */
                        enum Reason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MERCHANT_CENTER_ACCOUNT_HAS_NO_SUBMITTED_PRODUCTS = 2,
                            MERCHANT_CENTER_ACCOUNT_HAS_NO_SUBMITTED_PRODUCTS_IN_FEED = 3,
                            ADS_ACCOUNT_EXCLUDES_OFFERS_FROM_CAMPAIGN = 4,
                            ALL_PRODUCTS_ARE_EXCLUDED_FROM_CAMPAIGN = 5
                        }
                    }

                    /** Properties of a SimulationModificationMethodEnum. */
                    interface ISimulationModificationMethodEnum {
                    }

                    /** Represents a SimulationModificationMethodEnum. */
                    class SimulationModificationMethodEnum implements ISimulationModificationMethodEnum {

                        /**
                         * Constructs a new SimulationModificationMethodEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISimulationModificationMethodEnum);

                        /**
                         * Creates a new SimulationModificationMethodEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SimulationModificationMethodEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISimulationModificationMethodEnum): google.ads.googleads.v23.enums.SimulationModificationMethodEnum;

                        /**
                         * Encodes the specified SimulationModificationMethodEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SimulationModificationMethodEnum.verify|verify} messages.
                         * @param message SimulationModificationMethodEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISimulationModificationMethodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SimulationModificationMethodEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SimulationModificationMethodEnum.verify|verify} messages.
                         * @param message SimulationModificationMethodEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISimulationModificationMethodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SimulationModificationMethodEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SimulationModificationMethodEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SimulationModificationMethodEnum;

                        /**
                         * Decodes a SimulationModificationMethodEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SimulationModificationMethodEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SimulationModificationMethodEnum;

                        /**
                         * Verifies a SimulationModificationMethodEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SimulationModificationMethodEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SimulationModificationMethodEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SimulationModificationMethodEnum;

                        /**
                         * Creates a plain object from a SimulationModificationMethodEnum message. Also converts values to other types if specified.
                         * @param message SimulationModificationMethodEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SimulationModificationMethodEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SimulationModificationMethodEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SimulationModificationMethodEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SimulationModificationMethodEnum {

                        /** SimulationModificationMethod enum. */
                        enum SimulationModificationMethod {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNIFORM = 2,
                            DEFAULT = 3,
                            SCALING = 4
                        }
                    }

                    /** Properties of a SimulationTypeEnum. */
                    interface ISimulationTypeEnum {
                    }

                    /** Represents a SimulationTypeEnum. */
                    class SimulationTypeEnum implements ISimulationTypeEnum {

                        /**
                         * Constructs a new SimulationTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISimulationTypeEnum);

                        /**
                         * Creates a new SimulationTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SimulationTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISimulationTypeEnum): google.ads.googleads.v23.enums.SimulationTypeEnum;

                        /**
                         * Encodes the specified SimulationTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SimulationTypeEnum.verify|verify} messages.
                         * @param message SimulationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISimulationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SimulationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SimulationTypeEnum.verify|verify} messages.
                         * @param message SimulationTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISimulationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SimulationTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SimulationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SimulationTypeEnum;

                        /**
                         * Decodes a SimulationTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SimulationTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SimulationTypeEnum;

                        /**
                         * Verifies a SimulationTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SimulationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SimulationTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SimulationTypeEnum;

                        /**
                         * Creates a plain object from a SimulationTypeEnum message. Also converts values to other types if specified.
                         * @param message SimulationTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SimulationTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SimulationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SimulationTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SimulationTypeEnum {

                        /** SimulationType enum. */
                        enum SimulationType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CPC_BID = 2,
                            CPV_BID = 3,
                            TARGET_CPA = 4,
                            BID_MODIFIER = 5,
                            TARGET_ROAS = 6,
                            PERCENT_CPC_BID = 7,
                            TARGET_IMPRESSION_SHARE = 8,
                            BUDGET = 9
                        }
                    }

                    /** Properties of a SmartCampaignNotEligibleReasonEnum. */
                    interface ISmartCampaignNotEligibleReasonEnum {
                    }

                    /** Represents a SmartCampaignNotEligibleReasonEnum. */
                    class SmartCampaignNotEligibleReasonEnum implements ISmartCampaignNotEligibleReasonEnum {

                        /**
                         * Constructs a new SmartCampaignNotEligibleReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISmartCampaignNotEligibleReasonEnum);

                        /**
                         * Creates a new SmartCampaignNotEligibleReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignNotEligibleReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISmartCampaignNotEligibleReasonEnum): google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum;

                        /**
                         * Encodes the specified SmartCampaignNotEligibleReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum.verify|verify} messages.
                         * @param message SmartCampaignNotEligibleReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISmartCampaignNotEligibleReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignNotEligibleReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum.verify|verify} messages.
                         * @param message SmartCampaignNotEligibleReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISmartCampaignNotEligibleReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignNotEligibleReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignNotEligibleReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum;

                        /**
                         * Decodes a SmartCampaignNotEligibleReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignNotEligibleReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum;

                        /**
                         * Verifies a SmartCampaignNotEligibleReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignNotEligibleReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignNotEligibleReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum;

                        /**
                         * Creates a plain object from a SmartCampaignNotEligibleReasonEnum message. Also converts values to other types if specified.
                         * @param message SmartCampaignNotEligibleReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignNotEligibleReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignNotEligibleReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SmartCampaignNotEligibleReasonEnum {

                        /** SmartCampaignNotEligibleReason enum. */
                        enum SmartCampaignNotEligibleReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACCOUNT_ISSUE = 2,
                            BILLING_ISSUE = 3,
                            BUSINESS_PROFILE_LOCATION_REMOVED = 4,
                            ALL_ADS_DISAPPROVED = 5
                        }
                    }

                    /** Properties of a SmartCampaignStatusEnum. */
                    interface ISmartCampaignStatusEnum {
                    }

                    /** Represents a SmartCampaignStatusEnum. */
                    class SmartCampaignStatusEnum implements ISmartCampaignStatusEnum {

                        /**
                         * Constructs a new SmartCampaignStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISmartCampaignStatusEnum);

                        /**
                         * Creates a new SmartCampaignStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISmartCampaignStatusEnum): google.ads.googleads.v23.enums.SmartCampaignStatusEnum;

                        /**
                         * Encodes the specified SmartCampaignStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SmartCampaignStatusEnum.verify|verify} messages.
                         * @param message SmartCampaignStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISmartCampaignStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SmartCampaignStatusEnum.verify|verify} messages.
                         * @param message SmartCampaignStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISmartCampaignStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SmartCampaignStatusEnum;

                        /**
                         * Decodes a SmartCampaignStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SmartCampaignStatusEnum;

                        /**
                         * Verifies a SmartCampaignStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SmartCampaignStatusEnum;

                        /**
                         * Creates a plain object from a SmartCampaignStatusEnum message. Also converts values to other types if specified.
                         * @param message SmartCampaignStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SmartCampaignStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SmartCampaignStatusEnum {

                        /** SmartCampaignStatus enum. */
                        enum SmartCampaignStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PAUSED = 2,
                            NOT_ELIGIBLE = 3,
                            PENDING = 4,
                            ELIGIBLE = 5,
                            REMOVED = 6,
                            ENDED = 7
                        }
                    }

                    /** Properties of a SpendingLimitTypeEnum. */
                    interface ISpendingLimitTypeEnum {
                    }

                    /** Represents a SpendingLimitTypeEnum. */
                    class SpendingLimitTypeEnum implements ISpendingLimitTypeEnum {

                        /**
                         * Constructs a new SpendingLimitTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISpendingLimitTypeEnum);

                        /**
                         * Creates a new SpendingLimitTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SpendingLimitTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISpendingLimitTypeEnum): google.ads.googleads.v23.enums.SpendingLimitTypeEnum;

                        /**
                         * Encodes the specified SpendingLimitTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SpendingLimitTypeEnum.verify|verify} messages.
                         * @param message SpendingLimitTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISpendingLimitTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SpendingLimitTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SpendingLimitTypeEnum.verify|verify} messages.
                         * @param message SpendingLimitTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISpendingLimitTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SpendingLimitTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SpendingLimitTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SpendingLimitTypeEnum;

                        /**
                         * Decodes a SpendingLimitTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SpendingLimitTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SpendingLimitTypeEnum;

                        /**
                         * Verifies a SpendingLimitTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SpendingLimitTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SpendingLimitTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SpendingLimitTypeEnum;

                        /**
                         * Creates a plain object from a SpendingLimitTypeEnum message. Also converts values to other types if specified.
                         * @param message SpendingLimitTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SpendingLimitTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SpendingLimitTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SpendingLimitTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SpendingLimitTypeEnum {

                        /** SpendingLimitType enum. */
                        enum SpendingLimitType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INFINITE = 2
                        }
                    }

                    /** Properties of a SummaryRowSettingEnum. */
                    interface ISummaryRowSettingEnum {
                    }

                    /** Represents a SummaryRowSettingEnum. */
                    class SummaryRowSettingEnum implements ISummaryRowSettingEnum {

                        /**
                         * Constructs a new SummaryRowSettingEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISummaryRowSettingEnum);

                        /**
                         * Creates a new SummaryRowSettingEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SummaryRowSettingEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISummaryRowSettingEnum): google.ads.googleads.v23.enums.SummaryRowSettingEnum;

                        /**
                         * Encodes the specified SummaryRowSettingEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SummaryRowSettingEnum.verify|verify} messages.
                         * @param message SummaryRowSettingEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISummaryRowSettingEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SummaryRowSettingEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SummaryRowSettingEnum.verify|verify} messages.
                         * @param message SummaryRowSettingEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISummaryRowSettingEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SummaryRowSettingEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SummaryRowSettingEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SummaryRowSettingEnum;

                        /**
                         * Decodes a SummaryRowSettingEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SummaryRowSettingEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SummaryRowSettingEnum;

                        /**
                         * Verifies a SummaryRowSettingEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SummaryRowSettingEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SummaryRowSettingEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SummaryRowSettingEnum;

                        /**
                         * Creates a plain object from a SummaryRowSettingEnum message. Also converts values to other types if specified.
                         * @param message SummaryRowSettingEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SummaryRowSettingEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SummaryRowSettingEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SummaryRowSettingEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SummaryRowSettingEnum {

                        /** SummaryRowSetting enum. */
                        enum SummaryRowSetting {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_SUMMARY_ROW = 2,
                            SUMMARY_ROW_WITH_RESULTS = 3,
                            SUMMARY_ROW_ONLY = 4
                        }
                    }

                    /** Properties of a SystemManagedResourceSourceEnum. */
                    interface ISystemManagedResourceSourceEnum {
                    }

                    /** Represents a SystemManagedResourceSourceEnum. */
                    class SystemManagedResourceSourceEnum implements ISystemManagedResourceSourceEnum {

                        /**
                         * Constructs a new SystemManagedResourceSourceEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ISystemManagedResourceSourceEnum);

                        /**
                         * Creates a new SystemManagedResourceSourceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SystemManagedResourceSourceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ISystemManagedResourceSourceEnum): google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum;

                        /**
                         * Encodes the specified SystemManagedResourceSourceEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum.verify|verify} messages.
                         * @param message SystemManagedResourceSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ISystemManagedResourceSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SystemManagedResourceSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum.verify|verify} messages.
                         * @param message SystemManagedResourceSourceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ISystemManagedResourceSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SystemManagedResourceSourceEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SystemManagedResourceSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum;

                        /**
                         * Decodes a SystemManagedResourceSourceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SystemManagedResourceSourceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum;

                        /**
                         * Verifies a SystemManagedResourceSourceEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SystemManagedResourceSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SystemManagedResourceSourceEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum;

                        /**
                         * Creates a plain object from a SystemManagedResourceSourceEnum message. Also converts values to other types if specified.
                         * @param message SystemManagedResourceSourceEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SystemManagedResourceSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SystemManagedResourceSourceEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SystemManagedResourceSourceEnum {

                        /** SystemManagedResourceSource enum. */
                        enum SystemManagedResourceSource {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_VARIATIONS = 2
                        }
                    }

                    /** Properties of a TargetCpaOptInRecommendationGoalEnum. */
                    interface ITargetCpaOptInRecommendationGoalEnum {
                    }

                    /** Represents a TargetCpaOptInRecommendationGoalEnum. */
                    class TargetCpaOptInRecommendationGoalEnum implements ITargetCpaOptInRecommendationGoalEnum {

                        /**
                         * Constructs a new TargetCpaOptInRecommendationGoalEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ITargetCpaOptInRecommendationGoalEnum);

                        /**
                         * Creates a new TargetCpaOptInRecommendationGoalEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpaOptInRecommendationGoalEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ITargetCpaOptInRecommendationGoalEnum): google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum;

                        /**
                         * Encodes the specified TargetCpaOptInRecommendationGoalEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum.verify|verify} messages.
                         * @param message TargetCpaOptInRecommendationGoalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ITargetCpaOptInRecommendationGoalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpaOptInRecommendationGoalEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum.verify|verify} messages.
                         * @param message TargetCpaOptInRecommendationGoalEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ITargetCpaOptInRecommendationGoalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpaOptInRecommendationGoalEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetCpaOptInRecommendationGoalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum;

                        /**
                         * Decodes a TargetCpaOptInRecommendationGoalEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetCpaOptInRecommendationGoalEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum;

                        /**
                         * Verifies a TargetCpaOptInRecommendationGoalEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpaOptInRecommendationGoalEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetCpaOptInRecommendationGoalEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum;

                        /**
                         * Creates a plain object from a TargetCpaOptInRecommendationGoalEnum message. Also converts values to other types if specified.
                         * @param message TargetCpaOptInRecommendationGoalEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpaOptInRecommendationGoalEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetCpaOptInRecommendationGoalEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TargetCpaOptInRecommendationGoalEnum {

                        /** TargetCpaOptInRecommendationGoal enum. */
                        enum TargetCpaOptInRecommendationGoal {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SAME_COST = 2,
                            SAME_CONVERSIONS = 3,
                            SAME_CPA = 4,
                            CLOSEST_CPA = 5
                        }
                    }

                    /** Properties of a TimeTypeEnum. */
                    interface ITimeTypeEnum {
                    }

                    /** Represents a TimeTypeEnum. */
                    class TimeTypeEnum implements ITimeTypeEnum {

                        /**
                         * Constructs a new TimeTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.ITimeTypeEnum);

                        /**
                         * Creates a new TimeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TimeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.ITimeTypeEnum): google.ads.googleads.v23.enums.TimeTypeEnum;

                        /**
                         * Encodes the specified TimeTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.TimeTypeEnum.verify|verify} messages.
                         * @param message TimeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.ITimeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TimeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.TimeTypeEnum.verify|verify} messages.
                         * @param message TimeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.ITimeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TimeTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TimeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.TimeTypeEnum;

                        /**
                         * Decodes a TimeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TimeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.TimeTypeEnum;

                        /**
                         * Verifies a TimeTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TimeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TimeTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.TimeTypeEnum;

                        /**
                         * Creates a plain object from a TimeTypeEnum message. Also converts values to other types if specified.
                         * @param message TimeTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.TimeTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TimeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TimeTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TimeTypeEnum {

                        /** TimeType enum. */
                        enum TimeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOW = 2,
                            FOREVER = 3
                        }
                    }

                    /** Properties of an UnitOfMeasureEnum. */
                    interface IUnitOfMeasureEnum {
                    }

                    /** Represents an UnitOfMeasureEnum. */
                    class UnitOfMeasureEnum implements IUnitOfMeasureEnum {

                        /**
                         * Constructs a new UnitOfMeasureEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUnitOfMeasureEnum);

                        /**
                         * Creates a new UnitOfMeasureEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UnitOfMeasureEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUnitOfMeasureEnum): google.ads.googleads.v23.enums.UnitOfMeasureEnum;

                        /**
                         * Encodes the specified UnitOfMeasureEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UnitOfMeasureEnum.verify|verify} messages.
                         * @param message UnitOfMeasureEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUnitOfMeasureEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UnitOfMeasureEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UnitOfMeasureEnum.verify|verify} messages.
                         * @param message UnitOfMeasureEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUnitOfMeasureEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UnitOfMeasureEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UnitOfMeasureEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UnitOfMeasureEnum;

                        /**
                         * Decodes an UnitOfMeasureEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UnitOfMeasureEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UnitOfMeasureEnum;

                        /**
                         * Verifies an UnitOfMeasureEnum message.
                         * @param message Plain 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 UnitOfMeasureEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UnitOfMeasureEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UnitOfMeasureEnum;

                        /**
                         * Creates a plain object from an UnitOfMeasureEnum message. Also converts values to other types if specified.
                         * @param message UnitOfMeasureEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UnitOfMeasureEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UnitOfMeasureEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UnitOfMeasureEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UnitOfMeasureEnum {

                        /** UnitOfMeasure enum. */
                        enum UnitOfMeasure {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CLICKS = 2,
                            IMPRESSIONS = 3,
                            ACQUISITIONS = 4,
                            PHONE_CALLS = 5,
                            VIDEO_PLAYS = 6,
                            DAYS = 7,
                            AUDIO_PLAYS = 8,
                            ENGAGEMENTS = 9,
                            SECONDS = 10,
                            LEADS = 11,
                            GUEST_STAYS = 12,
                            HOURS = 13
                        }
                    }

                    /** Properties of a UserInterestTaxonomyTypeEnum. */
                    interface IUserInterestTaxonomyTypeEnum {
                    }

                    /** Represents a UserInterestTaxonomyTypeEnum. */
                    class UserInterestTaxonomyTypeEnum implements IUserInterestTaxonomyTypeEnum {

                        /**
                         * Constructs a new UserInterestTaxonomyTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserInterestTaxonomyTypeEnum);

                        /**
                         * Creates a new UserInterestTaxonomyTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserInterestTaxonomyTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserInterestTaxonomyTypeEnum): google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum;

                        /**
                         * Encodes the specified UserInterestTaxonomyTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.verify|verify} messages.
                         * @param message UserInterestTaxonomyTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserInterestTaxonomyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterestTaxonomyTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.verify|verify} messages.
                         * @param message UserInterestTaxonomyTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserInterestTaxonomyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterestTaxonomyTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserInterestTaxonomyTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum;

                        /**
                         * Decodes a UserInterestTaxonomyTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserInterestTaxonomyTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum;

                        /**
                         * Verifies a UserInterestTaxonomyTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterestTaxonomyTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserInterestTaxonomyTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum;

                        /**
                         * Creates a plain object from a UserInterestTaxonomyTypeEnum message. Also converts values to other types if specified.
                         * @param message UserInterestTaxonomyTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterestTaxonomyTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserInterestTaxonomyTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserInterestTaxonomyTypeEnum {

                        /** UserInterestTaxonomyType enum. */
                        enum UserInterestTaxonomyType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AFFINITY = 2,
                            IN_MARKET = 3,
                            MOBILE_APP_INSTALL_USER = 4,
                            VERTICAL_GEO = 5,
                            NEW_SMART_PHONE_USER = 6
                        }
                    }

                    /** Properties of a UserListAccessStatusEnum. */
                    interface IUserListAccessStatusEnum {
                    }

                    /** Represents a UserListAccessStatusEnum. */
                    class UserListAccessStatusEnum implements IUserListAccessStatusEnum {

                        /**
                         * Constructs a new UserListAccessStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListAccessStatusEnum);

                        /**
                         * Creates a new UserListAccessStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListAccessStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListAccessStatusEnum): google.ads.googleads.v23.enums.UserListAccessStatusEnum;

                        /**
                         * Encodes the specified UserListAccessStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListAccessStatusEnum.verify|verify} messages.
                         * @param message UserListAccessStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListAccessStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListAccessStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListAccessStatusEnum.verify|verify} messages.
                         * @param message UserListAccessStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListAccessStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListAccessStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListAccessStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListAccessStatusEnum;

                        /**
                         * Decodes a UserListAccessStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListAccessStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListAccessStatusEnum;

                        /**
                         * Verifies a UserListAccessStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListAccessStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListAccessStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListAccessStatusEnum;

                        /**
                         * Creates a plain object from a UserListAccessStatusEnum message. Also converts values to other types if specified.
                         * @param message UserListAccessStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListAccessStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListAccessStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListAccessStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListAccessStatusEnum {

                        /** UserListAccessStatus enum. */
                        enum UserListAccessStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            DISABLED = 3
                        }
                    }

                    /** Properties of a UserListClosingReasonEnum. */
                    interface IUserListClosingReasonEnum {
                    }

                    /** Represents a UserListClosingReasonEnum. */
                    class UserListClosingReasonEnum implements IUserListClosingReasonEnum {

                        /**
                         * Constructs a new UserListClosingReasonEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListClosingReasonEnum);

                        /**
                         * Creates a new UserListClosingReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListClosingReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListClosingReasonEnum): google.ads.googleads.v23.enums.UserListClosingReasonEnum;

                        /**
                         * Encodes the specified UserListClosingReasonEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListClosingReasonEnum.verify|verify} messages.
                         * @param message UserListClosingReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListClosingReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListClosingReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListClosingReasonEnum.verify|verify} messages.
                         * @param message UserListClosingReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListClosingReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListClosingReasonEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListClosingReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListClosingReasonEnum;

                        /**
                         * Decodes a UserListClosingReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListClosingReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListClosingReasonEnum;

                        /**
                         * Verifies a UserListClosingReasonEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListClosingReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListClosingReasonEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListClosingReasonEnum;

                        /**
                         * Creates a plain object from a UserListClosingReasonEnum message. Also converts values to other types if specified.
                         * @param message UserListClosingReasonEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListClosingReasonEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListClosingReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListClosingReasonEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListClosingReasonEnum {

                        /** UserListClosingReason enum. */
                        enum UserListClosingReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNUSED = 2
                        }
                    }

                    /** Properties of a UserListCustomerTypeCategoryEnum. */
                    interface IUserListCustomerTypeCategoryEnum {
                    }

                    /** Represents a UserListCustomerTypeCategoryEnum. */
                    class UserListCustomerTypeCategoryEnum implements IUserListCustomerTypeCategoryEnum {

                        /**
                         * Constructs a new UserListCustomerTypeCategoryEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListCustomerTypeCategoryEnum);

                        /**
                         * Creates a new UserListCustomerTypeCategoryEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListCustomerTypeCategoryEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListCustomerTypeCategoryEnum): google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum;

                        /**
                         * Encodes the specified UserListCustomerTypeCategoryEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum.verify|verify} messages.
                         * @param message UserListCustomerTypeCategoryEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListCustomerTypeCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListCustomerTypeCategoryEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum.verify|verify} messages.
                         * @param message UserListCustomerTypeCategoryEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListCustomerTypeCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListCustomerTypeCategoryEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListCustomerTypeCategoryEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum;

                        /**
                         * Decodes a UserListCustomerTypeCategoryEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListCustomerTypeCategoryEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum;

                        /**
                         * Verifies a UserListCustomerTypeCategoryEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListCustomerTypeCategoryEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListCustomerTypeCategoryEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum;

                        /**
                         * Creates a plain object from a UserListCustomerTypeCategoryEnum message. Also converts values to other types if specified.
                         * @param message UserListCustomerTypeCategoryEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListCustomerTypeCategoryEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListCustomerTypeCategoryEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListCustomerTypeCategoryEnum {

                        /** UserListCustomerTypeCategory enum. */
                        enum UserListCustomerTypeCategory {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ALL_CUSTOMERS = 2,
                            PURCHASERS = 3,
                            HIGH_VALUE_CUSTOMERS = 4,
                            DISENGAGED_CUSTOMERS = 5,
                            QUALIFIED_LEADS = 6,
                            CONVERTED_LEADS = 7,
                            PAID_SUBSCRIBERS = 8,
                            LOYALTY_SIGN_UPS = 9,
                            CART_ABANDONERS = 10,
                            LOYALTY_TIER_1_MEMBERS = 11,
                            LOYALTY_TIER_2_MEMBERS = 12,
                            LOYALTY_TIER_3_MEMBERS = 13,
                            LOYALTY_TIER_4_MEMBERS = 14,
                            LOYALTY_TIER_5_MEMBERS = 15,
                            LOYALTY_TIER_6_MEMBERS = 16,
                            LOYALTY_TIER_7_MEMBERS = 17
                        }
                    }

                    /** Properties of a UserListMembershipStatusEnum. */
                    interface IUserListMembershipStatusEnum {
                    }

                    /** Represents a UserListMembershipStatusEnum. */
                    class UserListMembershipStatusEnum implements IUserListMembershipStatusEnum {

                        /**
                         * Constructs a new UserListMembershipStatusEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListMembershipStatusEnum);

                        /**
                         * Creates a new UserListMembershipStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListMembershipStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListMembershipStatusEnum): google.ads.googleads.v23.enums.UserListMembershipStatusEnum;

                        /**
                         * Encodes the specified UserListMembershipStatusEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListMembershipStatusEnum.verify|verify} messages.
                         * @param message UserListMembershipStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListMembershipStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListMembershipStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListMembershipStatusEnum.verify|verify} messages.
                         * @param message UserListMembershipStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListMembershipStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListMembershipStatusEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListMembershipStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListMembershipStatusEnum;

                        /**
                         * Decodes a UserListMembershipStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListMembershipStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListMembershipStatusEnum;

                        /**
                         * Verifies a UserListMembershipStatusEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListMembershipStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListMembershipStatusEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListMembershipStatusEnum;

                        /**
                         * Creates a plain object from a UserListMembershipStatusEnum message. Also converts values to other types if specified.
                         * @param message UserListMembershipStatusEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListMembershipStatusEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListMembershipStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListMembershipStatusEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListMembershipStatusEnum {

                        /** UserListMembershipStatus enum. */
                        enum UserListMembershipStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPEN = 2,
                            CLOSED = 3
                        }
                    }

                    /** Properties of a UserListSizeRangeEnum. */
                    interface IUserListSizeRangeEnum {
                    }

                    /** Represents a UserListSizeRangeEnum. */
                    class UserListSizeRangeEnum implements IUserListSizeRangeEnum {

                        /**
                         * Constructs a new UserListSizeRangeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IUserListSizeRangeEnum);

                        /**
                         * Creates a new UserListSizeRangeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListSizeRangeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IUserListSizeRangeEnum): google.ads.googleads.v23.enums.UserListSizeRangeEnum;

                        /**
                         * Encodes the specified UserListSizeRangeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.UserListSizeRangeEnum.verify|verify} messages.
                         * @param message UserListSizeRangeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IUserListSizeRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListSizeRangeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.UserListSizeRangeEnum.verify|verify} messages.
                         * @param message UserListSizeRangeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IUserListSizeRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListSizeRangeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListSizeRangeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.UserListSizeRangeEnum;

                        /**
                         * Decodes a UserListSizeRangeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListSizeRangeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.UserListSizeRangeEnum;

                        /**
                         * Verifies a UserListSizeRangeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListSizeRangeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListSizeRangeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.UserListSizeRangeEnum;

                        /**
                         * Creates a plain object from a UserListSizeRangeEnum message. Also converts values to other types if specified.
                         * @param message UserListSizeRangeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.UserListSizeRangeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListSizeRangeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListSizeRangeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListSizeRangeEnum {

                        /** UserListSizeRange enum. */
                        enum UserListSizeRange {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LESS_THAN_FIVE_HUNDRED = 2,
                            LESS_THAN_ONE_THOUSAND = 3,
                            ONE_THOUSAND_TO_TEN_THOUSAND = 4,
                            TEN_THOUSAND_TO_FIFTY_THOUSAND = 5,
                            FIFTY_THOUSAND_TO_ONE_HUNDRED_THOUSAND = 6,
                            ONE_HUNDRED_THOUSAND_TO_THREE_HUNDRED_THOUSAND = 7,
                            THREE_HUNDRED_THOUSAND_TO_FIVE_HUNDRED_THOUSAND = 8,
                            FIVE_HUNDRED_THOUSAND_TO_ONE_MILLION = 9,
                            ONE_MILLION_TO_TWO_MILLION = 10,
                            TWO_MILLION_TO_THREE_MILLION = 11,
                            THREE_MILLION_TO_FIVE_MILLION = 12,
                            FIVE_MILLION_TO_TEN_MILLION = 13,
                            TEN_MILLION_TO_TWENTY_MILLION = 14,
                            TWENTY_MILLION_TO_THIRTY_MILLION = 15,
                            THIRTY_MILLION_TO_FIFTY_MILLION = 16,
                            OVER_FIFTY_MILLION = 17
                        }
                    }

                    /** Properties of a ValueRuleDeviceTypeEnum. */
                    interface IValueRuleDeviceTypeEnum {
                    }

                    /** Represents a ValueRuleDeviceTypeEnum. */
                    class ValueRuleDeviceTypeEnum implements IValueRuleDeviceTypeEnum {

                        /**
                         * Constructs a new ValueRuleDeviceTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IValueRuleDeviceTypeEnum);

                        /**
                         * Creates a new ValueRuleDeviceTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValueRuleDeviceTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IValueRuleDeviceTypeEnum): google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum;

                        /**
                         * Encodes the specified ValueRuleDeviceTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum.verify|verify} messages.
                         * @param message ValueRuleDeviceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IValueRuleDeviceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleDeviceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum.verify|verify} messages.
                         * @param message ValueRuleDeviceTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IValueRuleDeviceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleDeviceTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValueRuleDeviceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum;

                        /**
                         * Decodes a ValueRuleDeviceTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValueRuleDeviceTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum;

                        /**
                         * Verifies a ValueRuleDeviceTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleDeviceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValueRuleDeviceTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum;

                        /**
                         * Creates a plain object from a ValueRuleDeviceTypeEnum message. Also converts values to other types if specified.
                         * @param message ValueRuleDeviceTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleDeviceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValueRuleDeviceTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ValueRuleDeviceTypeEnum {

                        /** ValueRuleDeviceType enum. */
                        enum ValueRuleDeviceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MOBILE = 2,
                            DESKTOP = 3,
                            TABLET = 4
                        }
                    }

                    /** Properties of a ValueRuleGeoLocationMatchTypeEnum. */
                    interface IValueRuleGeoLocationMatchTypeEnum {
                    }

                    /** Represents a ValueRuleGeoLocationMatchTypeEnum. */
                    class ValueRuleGeoLocationMatchTypeEnum implements IValueRuleGeoLocationMatchTypeEnum {

                        /**
                         * Constructs a new ValueRuleGeoLocationMatchTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IValueRuleGeoLocationMatchTypeEnum);

                        /**
                         * Creates a new ValueRuleGeoLocationMatchTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValueRuleGeoLocationMatchTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IValueRuleGeoLocationMatchTypeEnum): google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum;

                        /**
                         * Encodes the specified ValueRuleGeoLocationMatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.verify|verify} messages.
                         * @param message ValueRuleGeoLocationMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IValueRuleGeoLocationMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleGeoLocationMatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.verify|verify} messages.
                         * @param message ValueRuleGeoLocationMatchTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IValueRuleGeoLocationMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleGeoLocationMatchTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValueRuleGeoLocationMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum;

                        /**
                         * Decodes a ValueRuleGeoLocationMatchTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValueRuleGeoLocationMatchTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum;

                        /**
                         * Verifies a ValueRuleGeoLocationMatchTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleGeoLocationMatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValueRuleGeoLocationMatchTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum;

                        /**
                         * Creates a plain object from a ValueRuleGeoLocationMatchTypeEnum message. Also converts values to other types if specified.
                         * @param message ValueRuleGeoLocationMatchTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleGeoLocationMatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValueRuleGeoLocationMatchTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ValueRuleGeoLocationMatchTypeEnum {

                        /** ValueRuleGeoLocationMatchType enum. */
                        enum ValueRuleGeoLocationMatchType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ANY = 2,
                            LOCATION_OF_PRESENCE = 3
                        }
                    }

                    /** Properties of a ValueRuleOperationEnum. */
                    interface IValueRuleOperationEnum {
                    }

                    /** Represents a ValueRuleOperationEnum. */
                    class ValueRuleOperationEnum implements IValueRuleOperationEnum {

                        /**
                         * Constructs a new ValueRuleOperationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IValueRuleOperationEnum);

                        /**
                         * Creates a new ValueRuleOperationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValueRuleOperationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IValueRuleOperationEnum): google.ads.googleads.v23.enums.ValueRuleOperationEnum;

                        /**
                         * Encodes the specified ValueRuleOperationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleOperationEnum.verify|verify} messages.
                         * @param message ValueRuleOperationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IValueRuleOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleOperationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleOperationEnum.verify|verify} messages.
                         * @param message ValueRuleOperationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IValueRuleOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleOperationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValueRuleOperationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ValueRuleOperationEnum;

                        /**
                         * Decodes a ValueRuleOperationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValueRuleOperationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ValueRuleOperationEnum;

                        /**
                         * Verifies a ValueRuleOperationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleOperationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValueRuleOperationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ValueRuleOperationEnum;

                        /**
                         * Creates a plain object from a ValueRuleOperationEnum message. Also converts values to other types if specified.
                         * @param message ValueRuleOperationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ValueRuleOperationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleOperationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValueRuleOperationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ValueRuleOperationEnum {

                        /** ValueRuleOperation enum. */
                        enum ValueRuleOperation {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADD = 2,
                            MULTIPLY = 3,
                            SET = 4
                        }
                    }

                    /** Properties of a ValueRuleSetAttachmentTypeEnum. */
                    interface IValueRuleSetAttachmentTypeEnum {
                    }

                    /** Represents a ValueRuleSetAttachmentTypeEnum. */
                    class ValueRuleSetAttachmentTypeEnum implements IValueRuleSetAttachmentTypeEnum {

                        /**
                         * Constructs a new ValueRuleSetAttachmentTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IValueRuleSetAttachmentTypeEnum);

                        /**
                         * Creates a new ValueRuleSetAttachmentTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValueRuleSetAttachmentTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IValueRuleSetAttachmentTypeEnum): google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum;

                        /**
                         * Encodes the specified ValueRuleSetAttachmentTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum.verify|verify} messages.
                         * @param message ValueRuleSetAttachmentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IValueRuleSetAttachmentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleSetAttachmentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum.verify|verify} messages.
                         * @param message ValueRuleSetAttachmentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IValueRuleSetAttachmentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleSetAttachmentTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValueRuleSetAttachmentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum;

                        /**
                         * Decodes a ValueRuleSetAttachmentTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValueRuleSetAttachmentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum;

                        /**
                         * Verifies a ValueRuleSetAttachmentTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleSetAttachmentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValueRuleSetAttachmentTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum;

                        /**
                         * Creates a plain object from a ValueRuleSetAttachmentTypeEnum message. Also converts values to other types if specified.
                         * @param message ValueRuleSetAttachmentTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleSetAttachmentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValueRuleSetAttachmentTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ValueRuleSetAttachmentTypeEnum {

                        /** ValueRuleSetAttachmentType enum. */
                        enum ValueRuleSetAttachmentType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER = 2,
                            CAMPAIGN = 3
                        }
                    }

                    /** Properties of a ValueRuleSetDimensionEnum. */
                    interface IValueRuleSetDimensionEnum {
                    }

                    /** Represents a ValueRuleSetDimensionEnum. */
                    class ValueRuleSetDimensionEnum implements IValueRuleSetDimensionEnum {

                        /**
                         * Constructs a new ValueRuleSetDimensionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IValueRuleSetDimensionEnum);

                        /**
                         * Creates a new ValueRuleSetDimensionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValueRuleSetDimensionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IValueRuleSetDimensionEnum): google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum;

                        /**
                         * Encodes the specified ValueRuleSetDimensionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum.verify|verify} messages.
                         * @param message ValueRuleSetDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IValueRuleSetDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleSetDimensionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum.verify|verify} messages.
                         * @param message ValueRuleSetDimensionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IValueRuleSetDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleSetDimensionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValueRuleSetDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum;

                        /**
                         * Decodes a ValueRuleSetDimensionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValueRuleSetDimensionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum;

                        /**
                         * Verifies a ValueRuleSetDimensionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleSetDimensionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValueRuleSetDimensionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum;

                        /**
                         * Creates a plain object from a ValueRuleSetDimensionEnum message. Also converts values to other types if specified.
                         * @param message ValueRuleSetDimensionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleSetDimensionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValueRuleSetDimensionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ValueRuleSetDimensionEnum {

                        /** ValueRuleSetDimension enum. */
                        enum ValueRuleSetDimension {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GEO_LOCATION = 2,
                            DEVICE = 3,
                            AUDIENCE = 4,
                            NO_CONDITION = 5,
                            ITINERARY = 6
                        }
                    }

                    /** Properties of a VanityPharmaDisplayUrlModeEnum. */
                    interface IVanityPharmaDisplayUrlModeEnum {
                    }

                    /** Represents a VanityPharmaDisplayUrlModeEnum. */
                    class VanityPharmaDisplayUrlModeEnum implements IVanityPharmaDisplayUrlModeEnum {

                        /**
                         * Constructs a new VanityPharmaDisplayUrlModeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IVanityPharmaDisplayUrlModeEnum);

                        /**
                         * Creates a new VanityPharmaDisplayUrlModeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VanityPharmaDisplayUrlModeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IVanityPharmaDisplayUrlModeEnum): google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum;

                        /**
                         * Encodes the specified VanityPharmaDisplayUrlModeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum.verify|verify} messages.
                         * @param message VanityPharmaDisplayUrlModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IVanityPharmaDisplayUrlModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VanityPharmaDisplayUrlModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum.verify|verify} messages.
                         * @param message VanityPharmaDisplayUrlModeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IVanityPharmaDisplayUrlModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VanityPharmaDisplayUrlModeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VanityPharmaDisplayUrlModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum;

                        /**
                         * Decodes a VanityPharmaDisplayUrlModeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VanityPharmaDisplayUrlModeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum;

                        /**
                         * Verifies a VanityPharmaDisplayUrlModeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VanityPharmaDisplayUrlModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VanityPharmaDisplayUrlModeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum;

                        /**
                         * Creates a plain object from a VanityPharmaDisplayUrlModeEnum message. Also converts values to other types if specified.
                         * @param message VanityPharmaDisplayUrlModeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VanityPharmaDisplayUrlModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VanityPharmaDisplayUrlModeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VanityPharmaDisplayUrlModeEnum {

                        /** VanityPharmaDisplayUrlMode enum. */
                        enum VanityPharmaDisplayUrlMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MANUFACTURER_WEBSITE_URL = 2,
                            WEBSITE_DESCRIPTION = 3
                        }
                    }

                    /** Properties of a VanityPharmaTextEnum. */
                    interface IVanityPharmaTextEnum {
                    }

                    /** Represents a VanityPharmaTextEnum. */
                    class VanityPharmaTextEnum implements IVanityPharmaTextEnum {

                        /**
                         * Constructs a new VanityPharmaTextEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IVanityPharmaTextEnum);

                        /**
                         * Creates a new VanityPharmaTextEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VanityPharmaTextEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IVanityPharmaTextEnum): google.ads.googleads.v23.enums.VanityPharmaTextEnum;

                        /**
                         * Encodes the specified VanityPharmaTextEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.VanityPharmaTextEnum.verify|verify} messages.
                         * @param message VanityPharmaTextEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IVanityPharmaTextEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VanityPharmaTextEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.VanityPharmaTextEnum.verify|verify} messages.
                         * @param message VanityPharmaTextEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IVanityPharmaTextEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VanityPharmaTextEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VanityPharmaTextEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.VanityPharmaTextEnum;

                        /**
                         * Decodes a VanityPharmaTextEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VanityPharmaTextEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.VanityPharmaTextEnum;

                        /**
                         * Verifies a VanityPharmaTextEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VanityPharmaTextEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VanityPharmaTextEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.VanityPharmaTextEnum;

                        /**
                         * Creates a plain object from a VanityPharmaTextEnum message. Also converts values to other types if specified.
                         * @param message VanityPharmaTextEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.VanityPharmaTextEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VanityPharmaTextEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VanityPharmaTextEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VanityPharmaTextEnum {

                        /** VanityPharmaText enum. */
                        enum VanityPharmaText {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PRESCRIPTION_TREATMENT_WEBSITE_EN = 2,
                            PRESCRIPTION_TREATMENT_WEBSITE_ES = 3,
                            PRESCRIPTION_DEVICE_WEBSITE_EN = 4,
                            PRESCRIPTION_DEVICE_WEBSITE_ES = 5,
                            MEDICAL_DEVICE_WEBSITE_EN = 6,
                            MEDICAL_DEVICE_WEBSITE_ES = 7,
                            PREVENTATIVE_TREATMENT_WEBSITE_EN = 8,
                            PREVENTATIVE_TREATMENT_WEBSITE_ES = 9,
                            PRESCRIPTION_CONTRACEPTION_WEBSITE_EN = 10,
                            PRESCRIPTION_CONTRACEPTION_WEBSITE_ES = 11,
                            PRESCRIPTION_VACCINE_WEBSITE_EN = 12,
                            PRESCRIPTION_VACCINE_WEBSITE_ES = 13
                        }
                    }

                    /** Properties of a VideoAdFormatRestrictionEnum. */
                    interface IVideoAdFormatRestrictionEnum {
                    }

                    /** Represents a VideoAdFormatRestrictionEnum. */
                    class VideoAdFormatRestrictionEnum implements IVideoAdFormatRestrictionEnum {

                        /**
                         * Constructs a new VideoAdFormatRestrictionEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IVideoAdFormatRestrictionEnum);

                        /**
                         * Creates a new VideoAdFormatRestrictionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoAdFormatRestrictionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IVideoAdFormatRestrictionEnum): google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum;

                        /**
                         * Encodes the specified VideoAdFormatRestrictionEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum.verify|verify} messages.
                         * @param message VideoAdFormatRestrictionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IVideoAdFormatRestrictionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoAdFormatRestrictionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum.verify|verify} messages.
                         * @param message VideoAdFormatRestrictionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IVideoAdFormatRestrictionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoAdFormatRestrictionEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VideoAdFormatRestrictionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum;

                        /**
                         * Decodes a VideoAdFormatRestrictionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VideoAdFormatRestrictionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum;

                        /**
                         * Verifies a VideoAdFormatRestrictionEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VideoAdFormatRestrictionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VideoAdFormatRestrictionEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum;

                        /**
                         * Creates a plain object from a VideoAdFormatRestrictionEnum message. Also converts values to other types if specified.
                         * @param message VideoAdFormatRestrictionEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VideoAdFormatRestrictionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VideoAdFormatRestrictionEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VideoAdFormatRestrictionEnum {

                        /** VideoAdFormatRestriction enum. */
                        enum VideoAdFormatRestriction {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NON_SKIPPABLE_IN_STREAM = 2
                        }
                    }

                    /** Properties of a VideoAdSequenceInteractionTypeEnum. */
                    interface IVideoAdSequenceInteractionTypeEnum {
                    }

                    /** Represents a VideoAdSequenceInteractionTypeEnum. */
                    class VideoAdSequenceInteractionTypeEnum implements IVideoAdSequenceInteractionTypeEnum {

                        /**
                         * Constructs a new VideoAdSequenceInteractionTypeEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IVideoAdSequenceInteractionTypeEnum);

                        /**
                         * Creates a new VideoAdSequenceInteractionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoAdSequenceInteractionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IVideoAdSequenceInteractionTypeEnum): google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum;

                        /**
                         * Encodes the specified VideoAdSequenceInteractionTypeEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum.verify|verify} messages.
                         * @param message VideoAdSequenceInteractionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IVideoAdSequenceInteractionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoAdSequenceInteractionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum.verify|verify} messages.
                         * @param message VideoAdSequenceInteractionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IVideoAdSequenceInteractionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoAdSequenceInteractionTypeEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VideoAdSequenceInteractionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum;

                        /**
                         * Decodes a VideoAdSequenceInteractionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VideoAdSequenceInteractionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum;

                        /**
                         * Verifies a VideoAdSequenceInteractionTypeEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VideoAdSequenceInteractionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VideoAdSequenceInteractionTypeEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum;

                        /**
                         * Creates a plain object from a VideoAdSequenceInteractionTypeEnum message. Also converts values to other types if specified.
                         * @param message VideoAdSequenceInteractionTypeEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VideoAdSequenceInteractionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VideoAdSequenceInteractionTypeEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VideoAdSequenceInteractionTypeEnum {

                        /** VideoAdSequenceInteractionType enum. */
                        enum VideoAdSequenceInteractionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PAID_VIEW = 2,
                            SKIP = 3,
                            IMPRESSION = 4,
                            ENGAGED_IMPRESSION = 5
                        }
                    }

                    /** Properties of a VideoAdSequenceMinimumDurationEnum. */
                    interface IVideoAdSequenceMinimumDurationEnum {
                    }

                    /** Represents a VideoAdSequenceMinimumDurationEnum. */
                    class VideoAdSequenceMinimumDurationEnum implements IVideoAdSequenceMinimumDurationEnum {

                        /**
                         * Constructs a new VideoAdSequenceMinimumDurationEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.enums.IVideoAdSequenceMinimumDurationEnum);

                        /**
                         * Creates a new VideoAdSequenceMinimumDurationEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoAdSequenceMinimumDurationEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.enums.IVideoAdSequenceMinimumDurationEnum): google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum;

                        /**
                         * Encodes the specified VideoAdSequenceMinimumDurationEnum message. Does not implicitly {@link google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum.verify|verify} messages.
                         * @param message VideoAdSequenceMinimumDurationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.enums.IVideoAdSequenceMinimumDurationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoAdSequenceMinimumDurationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum.verify|verify} messages.
                         * @param message VideoAdSequenceMinimumDurationEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.enums.IVideoAdSequenceMinimumDurationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoAdSequenceMinimumDurationEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VideoAdSequenceMinimumDurationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum;

                        /**
                         * Decodes a VideoAdSequenceMinimumDurationEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VideoAdSequenceMinimumDurationEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum;

                        /**
                         * Verifies a VideoAdSequenceMinimumDurationEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VideoAdSequenceMinimumDurationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VideoAdSequenceMinimumDurationEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum;

                        /**
                         * Creates a plain object from a VideoAdSequenceMinimumDurationEnum message. Also converts values to other types if specified.
                         * @param message VideoAdSequenceMinimumDurationEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VideoAdSequenceMinimumDurationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VideoAdSequenceMinimumDurationEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VideoAdSequenceMinimumDurationEnum {

                        /** VideoAdSequenceMinimumDuration enum. */
                        enum VideoAdSequenceMinimumDuration {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WEEK = 2,
                            MONTH = 3
                        }
                    }
                }

                /** Namespace errors. */
                namespace errors {

                    /** Properties of an AccessInvitationErrorEnum. */
                    interface IAccessInvitationErrorEnum {
                    }

                    /** Represents an AccessInvitationErrorEnum. */
                    class AccessInvitationErrorEnum implements IAccessInvitationErrorEnum {

                        /**
                         * Constructs a new AccessInvitationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAccessInvitationErrorEnum);

                        /**
                         * Creates a new AccessInvitationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccessInvitationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAccessInvitationErrorEnum): google.ads.googleads.v23.errors.AccessInvitationErrorEnum;

                        /**
                         * Encodes the specified AccessInvitationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AccessInvitationErrorEnum.verify|verify} messages.
                         * @param message AccessInvitationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAccessInvitationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessInvitationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AccessInvitationErrorEnum.verify|verify} messages.
                         * @param message AccessInvitationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAccessInvitationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessInvitationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccessInvitationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AccessInvitationErrorEnum;

                        /**
                         * Decodes an AccessInvitationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccessInvitationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AccessInvitationErrorEnum;

                        /**
                         * Verifies an AccessInvitationErrorEnum message.
                         * @param message Plain 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 AccessInvitationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccessInvitationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AccessInvitationErrorEnum;

                        /**
                         * Creates a plain object from an AccessInvitationErrorEnum message. Also converts values to other types if specified.
                         * @param message AccessInvitationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AccessInvitationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessInvitationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccessInvitationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccessInvitationErrorEnum {

                        /** AccessInvitationError enum. */
                        enum AccessInvitationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_EMAIL_ADDRESS = 2,
                            EMAIL_ADDRESS_ALREADY_HAS_ACCESS = 3,
                            INVALID_INVITATION_STATUS = 4,
                            GOOGLE_CONSUMER_ACCOUNT_NOT_ALLOWED = 5,
                            INVALID_INVITATION_ID = 6,
                            EMAIL_ADDRESS_ALREADY_HAS_PENDING_INVITATION = 7,
                            PENDING_INVITATIONS_LIMIT_EXCEEDED = 8,
                            EMAIL_DOMAIN_POLICY_VIOLATED = 9
                        }
                    }

                    /** Properties of an AccountBudgetProposalErrorEnum. */
                    interface IAccountBudgetProposalErrorEnum {
                    }

                    /** Represents an AccountBudgetProposalErrorEnum. */
                    class AccountBudgetProposalErrorEnum implements IAccountBudgetProposalErrorEnum {

                        /**
                         * Constructs a new AccountBudgetProposalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAccountBudgetProposalErrorEnum);

                        /**
                         * Creates a new AccountBudgetProposalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountBudgetProposalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAccountBudgetProposalErrorEnum): google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum;

                        /**
                         * Encodes the specified AccountBudgetProposalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum.verify|verify} messages.
                         * @param message AccountBudgetProposalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAccountBudgetProposalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum.verify|verify} messages.
                         * @param message AccountBudgetProposalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAccountBudgetProposalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountBudgetProposalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum;

                        /**
                         * Decodes an AccountBudgetProposalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountBudgetProposalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum;

                        /**
                         * Verifies an AccountBudgetProposalErrorEnum message.
                         * @param message Plain 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 AccountBudgetProposalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountBudgetProposalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum;

                        /**
                         * Creates a plain object from an AccountBudgetProposalErrorEnum message. Also converts values to other types if specified.
                         * @param message AccountBudgetProposalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountBudgetProposalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountBudgetProposalErrorEnum {

                        /** AccountBudgetProposalError enum. */
                        enum AccountBudgetProposalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FIELD_MASK_NOT_ALLOWED = 2,
                            IMMUTABLE_FIELD = 3,
                            REQUIRED_FIELD_MISSING = 4,
                            CANNOT_CANCEL_APPROVED_PROPOSAL = 5,
                            CANNOT_REMOVE_UNAPPROVED_BUDGET = 6,
                            CANNOT_REMOVE_RUNNING_BUDGET = 7,
                            CANNOT_END_UNAPPROVED_BUDGET = 8,
                            CANNOT_END_INACTIVE_BUDGET = 9,
                            BUDGET_NAME_REQUIRED = 10,
                            CANNOT_UPDATE_OLD_BUDGET = 11,
                            CANNOT_END_IN_PAST = 12,
                            CANNOT_EXTEND_END_TIME = 13,
                            PURCHASE_ORDER_NUMBER_REQUIRED = 14,
                            PENDING_UPDATE_PROPOSAL_EXISTS = 15,
                            MULTIPLE_BUDGETS_NOT_ALLOWED_FOR_UNAPPROVED_BILLING_SETUP = 16,
                            CANNOT_UPDATE_START_TIME_FOR_STARTED_BUDGET = 17,
                            SPENDING_LIMIT_LOWER_THAN_ACCRUED_COST_NOT_ALLOWED = 18,
                            UPDATE_IS_NO_OP = 19,
                            END_TIME_MUST_FOLLOW_START_TIME = 20,
                            BUDGET_DATE_RANGE_INCOMPATIBLE_WITH_BILLING_SETUP = 21,
                            NOT_AUTHORIZED = 22,
                            INVALID_BILLING_SETUP = 23,
                            OVERLAPS_EXISTING_BUDGET = 24,
                            CANNOT_CREATE_BUDGET_THROUGH_API = 25,
                            INVALID_MASTER_SERVICE_AGREEMENT = 26,
                            CANCELED_BILLING_SETUP = 27
                        }
                    }

                    /** Properties of an AccountLinkErrorEnum. */
                    interface IAccountLinkErrorEnum {
                    }

                    /** Represents an AccountLinkErrorEnum. */
                    class AccountLinkErrorEnum implements IAccountLinkErrorEnum {

                        /**
                         * Constructs a new AccountLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAccountLinkErrorEnum);

                        /**
                         * Creates a new AccountLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAccountLinkErrorEnum): google.ads.googleads.v23.errors.AccountLinkErrorEnum;

                        /**
                         * Encodes the specified AccountLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AccountLinkErrorEnum.verify|verify} messages.
                         * @param message AccountLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAccountLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AccountLinkErrorEnum.verify|verify} messages.
                         * @param message AccountLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAccountLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AccountLinkErrorEnum;

                        /**
                         * Decodes an AccountLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AccountLinkErrorEnum;

                        /**
                         * Verifies an AccountLinkErrorEnum message.
                         * @param message Plain 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 AccountLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AccountLinkErrorEnum;

                        /**
                         * Creates a plain object from an AccountLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message AccountLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AccountLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountLinkErrorEnum {

                        /** AccountLinkError enum. */
                        enum AccountLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_STATUS = 2,
                            PERMISSION_DENIED = 3
                        }
                    }

                    /** Properties of an AdCustomizerErrorEnum. */
                    interface IAdCustomizerErrorEnum {
                    }

                    /** Represents an AdCustomizerErrorEnum. */
                    class AdCustomizerErrorEnum implements IAdCustomizerErrorEnum {

                        /**
                         * Constructs a new AdCustomizerErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdCustomizerErrorEnum);

                        /**
                         * Creates a new AdCustomizerErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdCustomizerErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdCustomizerErrorEnum): google.ads.googleads.v23.errors.AdCustomizerErrorEnum;

                        /**
                         * Encodes the specified AdCustomizerErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdCustomizerErrorEnum.verify|verify} messages.
                         * @param message AdCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdCustomizerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdCustomizerErrorEnum.verify|verify} messages.
                         * @param message AdCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdCustomizerErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdCustomizerErrorEnum;

                        /**
                         * Decodes an AdCustomizerErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdCustomizerErrorEnum;

                        /**
                         * Verifies an AdCustomizerErrorEnum message.
                         * @param message Plain 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 AdCustomizerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdCustomizerErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdCustomizerErrorEnum;

                        /**
                         * Creates a plain object from an AdCustomizerErrorEnum message. Also converts values to other types if specified.
                         * @param message AdCustomizerErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdCustomizerErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdCustomizerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdCustomizerErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdCustomizerErrorEnum {

                        /** AdCustomizerError enum. */
                        enum AdCustomizerError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            COUNTDOWN_INVALID_DATE_FORMAT = 2,
                            COUNTDOWN_DATE_IN_PAST = 3,
                            COUNTDOWN_INVALID_LOCALE = 4,
                            COUNTDOWN_INVALID_START_DAYS_BEFORE = 5,
                            UNKNOWN_USER_LIST = 6
                        }
                    }

                    /** Properties of an AdErrorEnum. */
                    interface IAdErrorEnum {
                    }

                    /** Represents an AdErrorEnum. */
                    class AdErrorEnum implements IAdErrorEnum {

                        /**
                         * Constructs a new AdErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdErrorEnum);

                        /**
                         * Creates a new AdErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdErrorEnum): google.ads.googleads.v23.errors.AdErrorEnum;

                        /**
                         * Encodes the specified AdErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdErrorEnum.verify|verify} messages.
                         * @param message AdErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdErrorEnum.verify|verify} messages.
                         * @param message AdErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdErrorEnum;

                        /**
                         * Decodes an AdErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdErrorEnum;

                        /**
                         * Verifies an AdErrorEnum message.
                         * @param message Plain 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 AdErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdErrorEnum;

                        /**
                         * Creates a plain object from an AdErrorEnum message. Also converts values to other types if specified.
                         * @param message AdErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdErrorEnum {

                        /** AdError enum. */
                        enum AdError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_CUSTOMIZERS_NOT_SUPPORTED_FOR_AD_TYPE = 2,
                            APPROXIMATELY_TOO_LONG = 3,
                            APPROXIMATELY_TOO_SHORT = 4,
                            BAD_SNIPPET = 5,
                            CANNOT_MODIFY_AD = 6,
                            CANNOT_SET_BUSINESS_NAME_IF_URL_SET = 7,
                            CANNOT_SET_FIELD = 8,
                            CANNOT_SET_FIELD_WITH_ORIGIN_AD_ID_SET = 9,
                            CANNOT_SET_FIELD_WITH_AD_ID_SET_FOR_SHARING = 10,
                            CANNOT_SET_ALLOW_FLEXIBLE_COLOR_FALSE = 11,
                            CANNOT_SET_COLOR_CONTROL_WHEN_NATIVE_FORMAT_SETTING = 12,
                            CANNOT_SET_URL = 13,
                            CANNOT_SET_WITHOUT_FINAL_URLS = 14,
                            CANNOT_SET_WITH_FINAL_URLS = 15,
                            CANNOT_SET_WITH_URL_DATA = 17,
                            CANNOT_USE_AD_SUBCLASS_FOR_OPERATOR = 18,
                            CUSTOMER_NOT_APPROVED_MOBILEADS = 19,
                            CUSTOMER_NOT_APPROVED_THIRDPARTY_ADS = 20,
                            CUSTOMER_NOT_APPROVED_THIRDPARTY_REDIRECT_ADS = 21,
                            CUSTOMER_NOT_ELIGIBLE = 22,
                            CUSTOMER_NOT_ELIGIBLE_FOR_UPDATING_BEACON_URL = 23,
                            DIMENSION_ALREADY_IN_UNION = 24,
                            DIMENSION_MUST_BE_SET = 25,
                            DIMENSION_NOT_IN_UNION = 26,
                            DISPLAY_URL_CANNOT_BE_SPECIFIED = 27,
                            DOMESTIC_PHONE_NUMBER_FORMAT = 28,
                            EMERGENCY_PHONE_NUMBER = 29,
                            EMPTY_FIELD = 30,
                            FEED_ATTRIBUTE_MUST_HAVE_MAPPING_FOR_TYPE_ID = 31,
                            FEED_ATTRIBUTE_MAPPING_TYPE_MISMATCH = 32,
                            ILLEGAL_AD_CUSTOMIZER_TAG_USE = 33,
                            ILLEGAL_TAG_USE = 34,
                            INCONSISTENT_DIMENSIONS = 35,
                            INCONSISTENT_STATUS_IN_TEMPLATE_UNION = 36,
                            INCORRECT_LENGTH = 37,
                            INELIGIBLE_FOR_UPGRADE = 38,
                            INVALID_AD_ADDRESS_CAMPAIGN_TARGET = 39,
                            INVALID_AD_TYPE = 40,
                            INVALID_ATTRIBUTES_FOR_MOBILE_IMAGE = 41,
                            INVALID_ATTRIBUTES_FOR_MOBILE_TEXT = 42,
                            INVALID_CALL_TO_ACTION_TEXT = 43,
                            INVALID_CHARACTER_FOR_URL = 44,
                            INVALID_COUNTRY_CODE = 45,
                            INVALID_EXPANDED_DYNAMIC_SEARCH_AD_TAG = 47,
                            INVALID_INPUT = 48,
                            INVALID_MARKUP_LANGUAGE = 49,
                            INVALID_MOBILE_CARRIER = 50,
                            INVALID_MOBILE_CARRIER_TARGET = 51,
                            INVALID_NUMBER_OF_ELEMENTS = 52,
                            INVALID_PHONE_NUMBER_FORMAT = 53,
                            INVALID_RICH_MEDIA_CERTIFIED_VENDOR_FORMAT_ID = 54,
                            INVALID_TEMPLATE_DATA = 55,
                            INVALID_TEMPLATE_ELEMENT_FIELD_TYPE = 56,
                            INVALID_TEMPLATE_ID = 57,
                            LINE_TOO_WIDE = 58,
                            MISSING_AD_CUSTOMIZER_MAPPING = 59,
                            MISSING_ADDRESS_COMPONENT = 60,
                            MISSING_ADVERTISEMENT_NAME = 61,
                            MISSING_BUSINESS_NAME = 62,
                            MISSING_DESCRIPTION1 = 63,
                            MISSING_DESCRIPTION2 = 64,
                            MISSING_DESTINATION_URL_TAG = 65,
                            MISSING_LANDING_PAGE_URL_TAG = 66,
                            MISSING_DIMENSION = 67,
                            MISSING_DISPLAY_URL = 68,
                            MISSING_HEADLINE = 69,
                            MISSING_HEIGHT = 70,
                            MISSING_IMAGE = 71,
                            MISSING_MARKETING_IMAGE_OR_PRODUCT_VIDEOS = 72,
                            MISSING_MARKUP_LANGUAGES = 73,
                            MISSING_MOBILE_CARRIER = 74,
                            MISSING_PHONE = 75,
                            MISSING_REQUIRED_TEMPLATE_FIELDS = 76,
                            MISSING_TEMPLATE_FIELD_VALUE = 77,
                            MISSING_TEXT = 78,
                            MISSING_VISIBLE_URL = 79,
                            MISSING_WIDTH = 80,
                            MULTIPLE_DISTINCT_FEEDS_UNSUPPORTED = 81,
                            MUST_USE_TEMP_AD_UNION_ID_ON_ADD = 82,
                            TOO_LONG = 83,
                            TOO_SHORT = 84,
                            UNION_DIMENSIONS_CANNOT_CHANGE = 85,
                            UNKNOWN_ADDRESS_COMPONENT = 86,
                            UNKNOWN_FIELD_NAME = 87,
                            UNKNOWN_UNIQUE_NAME = 88,
                            UNSUPPORTED_DIMENSIONS = 89,
                            URL_INVALID_SCHEME = 90,
                            URL_INVALID_TOP_LEVEL_DOMAIN = 91,
                            URL_MALFORMED = 92,
                            URL_NO_HOST = 93,
                            URL_NOT_EQUIVALENT = 94,
                            URL_HOST_NAME_TOO_LONG = 95,
                            URL_NO_SCHEME = 96,
                            URL_NO_TOP_LEVEL_DOMAIN = 97,
                            URL_PATH_NOT_ALLOWED = 98,
                            URL_PORT_NOT_ALLOWED = 99,
                            URL_QUERY_NOT_ALLOWED = 100,
                            URL_SCHEME_BEFORE_EXPANDED_DYNAMIC_SEARCH_AD_TAG = 102,
                            USER_DOES_NOT_HAVE_ACCESS_TO_TEMPLATE = 103,
                            INCONSISTENT_EXPANDABLE_SETTINGS = 104,
                            INVALID_FORMAT = 105,
                            INVALID_FIELD_TEXT = 106,
                            ELEMENT_NOT_PRESENT = 107,
                            IMAGE_ERROR = 108,
                            VALUE_NOT_IN_RANGE = 109,
                            FIELD_NOT_PRESENT = 110,
                            ADDRESS_NOT_COMPLETE = 111,
                            ADDRESS_INVALID = 112,
                            VIDEO_RETRIEVAL_ERROR = 113,
                            AUDIO_ERROR = 114,
                            INVALID_YOUTUBE_DISPLAY_URL = 115,
                            TOO_MANY_PRODUCT_IMAGES = 116,
                            TOO_MANY_PRODUCT_VIDEOS = 117,
                            INCOMPATIBLE_AD_TYPE_AND_DEVICE_PREFERENCE = 118,
                            CALLTRACKING_NOT_SUPPORTED_FOR_COUNTRY = 119,
                            CARRIER_SPECIFIC_SHORT_NUMBER_NOT_ALLOWED = 120,
                            DISALLOWED_NUMBER_TYPE = 121,
                            PHONE_NUMBER_NOT_SUPPORTED_FOR_COUNTRY = 122,
                            PHONE_NUMBER_NOT_SUPPORTED_WITH_CALLTRACKING_FOR_COUNTRY = 123,
                            PREMIUM_RATE_NUMBER_NOT_ALLOWED = 124,
                            VANITY_PHONE_NUMBER_NOT_ALLOWED = 125,
                            INVALID_CALL_CONVERSION_TYPE_ID = 126,
                            CANNOT_DISABLE_CALL_CONVERSION_AND_SET_CONVERSION_TYPE_ID = 127,
                            CANNOT_SET_PATH2_WITHOUT_PATH1 = 128,
                            MISSING_DYNAMIC_SEARCH_ADS_SETTING_DOMAIN_NAME = 129,
                            INCOMPATIBLE_WITH_RESTRICTION_TYPE = 130,
                            CUSTOMER_CONSENT_FOR_CALL_RECORDING_REQUIRED = 131,
                            MISSING_IMAGE_OR_MEDIA_BUNDLE = 132,
                            PRODUCT_TYPE_NOT_SUPPORTED_IN_THIS_CAMPAIGN = 133,
                            PLACEHOLDER_CANNOT_HAVE_EMPTY_DEFAULT_VALUE = 134,
                            PLACEHOLDER_COUNTDOWN_FUNCTION_CANNOT_HAVE_DEFAULT_VALUE = 135,
                            PLACEHOLDER_DEFAULT_VALUE_MISSING = 136,
                            UNEXPECTED_PLACEHOLDER_DEFAULT_VALUE = 137,
                            AD_CUSTOMIZERS_MAY_NOT_BE_ADJACENT = 138,
                            UPDATING_AD_WITH_NO_ENABLED_ASSOCIATION = 139,
                            CALL_AD_VERIFICATION_URL_FINAL_URL_DOES_NOT_HAVE_SAME_DOMAIN = 140,
                            CALL_AD_FINAL_URL_AND_VERIFICATION_URL_CANNOT_BOTH_BE_EMPTY = 154,
                            TOO_MANY_AD_CUSTOMIZERS = 141,
                            INVALID_AD_CUSTOMIZER_FORMAT = 142,
                            NESTED_AD_CUSTOMIZER_SYNTAX = 143,
                            UNSUPPORTED_AD_CUSTOMIZER_SYNTAX = 144,
                            UNPAIRED_BRACE_IN_AD_CUSTOMIZER_TAG = 145,
                            MORE_THAN_ONE_COUNTDOWN_TAG_TYPE_EXISTS = 146,
                            DATE_TIME_IN_COUNTDOWN_TAG_IS_INVALID = 147,
                            DATE_TIME_IN_COUNTDOWN_TAG_IS_PAST = 148,
                            UNRECOGNIZED_AD_CUSTOMIZER_TAG_FOUND = 149,
                            CUSTOMIZER_TYPE_FORBIDDEN_FOR_FIELD = 150,
                            INVALID_CUSTOMIZER_ATTRIBUTE_NAME = 151,
                            STORE_MISMATCH = 152,
                            MISSING_REQUIRED_IMAGE_ASPECT_RATIO = 153,
                            MISMATCHED_ASPECT_RATIOS = 155,
                            DUPLICATE_IMAGE_ACROSS_CAROUSEL_CARDS = 156,
                            INVALID_YOUTUBE_VIDEO_ASSET_ID_FOR_VIDEO_ADS_SEQUENCING = 157
                        }
                    }

                    /** Properties of an AdGroupAdErrorEnum. */
                    interface IAdGroupAdErrorEnum {
                    }

                    /** Represents an AdGroupAdErrorEnum. */
                    class AdGroupAdErrorEnum implements IAdGroupAdErrorEnum {

                        /**
                         * Constructs a new AdGroupAdErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdGroupAdErrorEnum);

                        /**
                         * Creates a new AdGroupAdErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdGroupAdErrorEnum): google.ads.googleads.v23.errors.AdGroupAdErrorEnum;

                        /**
                         * Encodes the specified AdGroupAdErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupAdErrorEnum.verify|verify} messages.
                         * @param message AdGroupAdErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdGroupAdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupAdErrorEnum.verify|verify} messages.
                         * @param message AdGroupAdErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdGroupAdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdGroupAdErrorEnum;

                        /**
                         * Decodes an AdGroupAdErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdGroupAdErrorEnum;

                        /**
                         * Verifies an AdGroupAdErrorEnum message.
                         * @param message Plain 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 AdGroupAdErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdGroupAdErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupAdErrorEnum message. Also converts values to other types if specified.
                         * @param message AdGroupAdErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdGroupAdErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupAdErrorEnum {

                        /** AdGroupAdError enum. */
                        enum AdGroupAdError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_GROUP_AD_LABEL_DOES_NOT_EXIST = 2,
                            AD_GROUP_AD_LABEL_ALREADY_EXISTS = 3,
                            AD_NOT_UNDER_ADGROUP = 4,
                            CANNOT_OPERATE_ON_REMOVED_ADGROUPAD = 5,
                            CANNOT_CREATE_DEPRECATED_ADS = 6,
                            CANNOT_CREATE_TEXT_ADS = 7,
                            EMPTY_FIELD = 8,
                            RESOURCE_REFERENCED_IN_MULTIPLE_OPS = 9,
                            AD_TYPE_CANNOT_BE_PAUSED = 10,
                            AD_TYPE_CANNOT_BE_REMOVED = 11,
                            CANNOT_UPDATE_DEPRECATED_ADS = 12,
                            AD_SHARING_NOT_ALLOWED = 13
                        }
                    }

                    /** Properties of an AdGroupBidModifierErrorEnum. */
                    interface IAdGroupBidModifierErrorEnum {
                    }

                    /** Represents an AdGroupBidModifierErrorEnum. */
                    class AdGroupBidModifierErrorEnum implements IAdGroupBidModifierErrorEnum {

                        /**
                         * Constructs a new AdGroupBidModifierErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdGroupBidModifierErrorEnum);

                        /**
                         * Creates a new AdGroupBidModifierErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupBidModifierErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdGroupBidModifierErrorEnum): google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum;

                        /**
                         * Encodes the specified AdGroupBidModifierErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum.verify|verify} messages.
                         * @param message AdGroupBidModifierErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdGroupBidModifierErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupBidModifierErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum.verify|verify} messages.
                         * @param message AdGroupBidModifierErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdGroupBidModifierErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupBidModifierErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupBidModifierErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum;

                        /**
                         * Decodes an AdGroupBidModifierErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupBidModifierErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum;

                        /**
                         * Verifies an AdGroupBidModifierErrorEnum message.
                         * @param message Plain 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 AdGroupBidModifierErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupBidModifierErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupBidModifierErrorEnum message. Also converts values to other types if specified.
                         * @param message AdGroupBidModifierErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupBidModifierErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupBidModifierErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupBidModifierErrorEnum {

                        /** AdGroupBidModifierError enum. */
                        enum AdGroupBidModifierError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CRITERION_ID_NOT_SUPPORTED = 2,
                            CANNOT_OVERRIDE_OPTED_OUT_CAMPAIGN_CRITERION_BID_MODIFIER = 3
                        }
                    }

                    /** Properties of an AdGroupCriterionCustomizerErrorEnum. */
                    interface IAdGroupCriterionCustomizerErrorEnum {
                    }

                    /** Represents an AdGroupCriterionCustomizerErrorEnum. */
                    class AdGroupCriterionCustomizerErrorEnum implements IAdGroupCriterionCustomizerErrorEnum {

                        /**
                         * Constructs a new AdGroupCriterionCustomizerErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdGroupCriterionCustomizerErrorEnum);

                        /**
                         * Creates a new AdGroupCriterionCustomizerErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionCustomizerErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdGroupCriterionCustomizerErrorEnum): google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum;

                        /**
                         * Encodes the specified AdGroupCriterionCustomizerErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum.verify|verify} messages.
                         * @param message AdGroupCriterionCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdGroupCriterionCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionCustomizerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum.verify|verify} messages.
                         * @param message AdGroupCriterionCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdGroupCriterionCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionCustomizerErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum;

                        /**
                         * Decodes an AdGroupCriterionCustomizerErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum;

                        /**
                         * Verifies an AdGroupCriterionCustomizerErrorEnum message.
                         * @param message Plain 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 AdGroupCriterionCustomizerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionCustomizerErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionCustomizerErrorEnum message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionCustomizerErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionCustomizerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionCustomizerErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCriterionCustomizerErrorEnum {

                        /** AdGroupCriterionCustomizerError enum. */
                        enum AdGroupCriterionCustomizerError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CRITERION_IS_NOT_KEYWORD = 2
                        }
                    }

                    /** Properties of an AdGroupCriterionErrorEnum. */
                    interface IAdGroupCriterionErrorEnum {
                    }

                    /** Represents an AdGroupCriterionErrorEnum. */
                    class AdGroupCriterionErrorEnum implements IAdGroupCriterionErrorEnum {

                        /**
                         * Constructs a new AdGroupCriterionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdGroupCriterionErrorEnum);

                        /**
                         * Creates a new AdGroupCriterionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdGroupCriterionErrorEnum): google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum;

                        /**
                         * Encodes the specified AdGroupCriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum.verify|verify} messages.
                         * @param message AdGroupCriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdGroupCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum.verify|verify} messages.
                         * @param message AdGroupCriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdGroupCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum;

                        /**
                         * Decodes an AdGroupCriterionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum;

                        /**
                         * Verifies an AdGroupCriterionErrorEnum message.
                         * @param message Plain 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 AdGroupCriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionErrorEnum message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCriterionErrorEnum {

                        /** AdGroupCriterionError enum. */
                        enum AdGroupCriterionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_GROUP_CRITERION_LABEL_DOES_NOT_EXIST = 2,
                            AD_GROUP_CRITERION_LABEL_ALREADY_EXISTS = 3,
                            CANNOT_ADD_LABEL_TO_NEGATIVE_CRITERION = 4,
                            TOO_MANY_OPERATIONS = 5,
                            CANT_UPDATE_NEGATIVE = 6,
                            CONCRETE_TYPE_REQUIRED = 7,
                            BID_INCOMPATIBLE_WITH_ADGROUP = 8,
                            CANNOT_TARGET_AND_EXCLUDE = 9,
                            ILLEGAL_URL = 10,
                            INVALID_KEYWORD_TEXT = 11,
                            INVALID_DESTINATION_URL = 12,
                            MISSING_DESTINATION_URL_TAG = 13,
                            KEYWORD_LEVEL_BID_NOT_SUPPORTED_FOR_MANUALCPM = 14,
                            INVALID_USER_STATUS = 15,
                            CANNOT_ADD_CRITERIA_TYPE = 16,
                            CANNOT_EXCLUDE_CRITERIA_TYPE = 17,
                            CAMPAIGN_TYPE_NOT_COMPATIBLE_WITH_PARTIAL_FAILURE = 27,
                            OPERATIONS_FOR_TOO_MANY_SHOPPING_ADGROUPS = 28,
                            CANNOT_MODIFY_URL_FIELDS_WITH_DUPLICATE_ELEMENTS = 29,
                            CANNOT_SET_WITHOUT_FINAL_URLS = 30,
                            CANNOT_CLEAR_FINAL_URLS_IF_FINAL_MOBILE_URLS_EXIST = 31,
                            CANNOT_CLEAR_FINAL_URLS_IF_FINAL_APP_URLS_EXIST = 32,
                            CANNOT_CLEAR_FINAL_URLS_IF_TRACKING_URL_TEMPLATE_EXISTS = 33,
                            CANNOT_CLEAR_FINAL_URLS_IF_URL_CUSTOM_PARAMETERS_EXIST = 34,
                            CANNOT_SET_BOTH_DESTINATION_URL_AND_FINAL_URLS = 35,
                            CANNOT_SET_BOTH_DESTINATION_URL_AND_TRACKING_URL_TEMPLATE = 36,
                            FINAL_URLS_NOT_SUPPORTED_FOR_CRITERION_TYPE = 37,
                            FINAL_MOBILE_URLS_NOT_SUPPORTED_FOR_CRITERION_TYPE = 38
                        }
                    }

                    /** Properties of an AdGroupCustomizerErrorEnum. */
                    interface IAdGroupCustomizerErrorEnum {
                    }

                    /** Represents an AdGroupCustomizerErrorEnum. */
                    class AdGroupCustomizerErrorEnum implements IAdGroupCustomizerErrorEnum {

                        /**
                         * Constructs a new AdGroupCustomizerErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdGroupCustomizerErrorEnum);

                        /**
                         * Creates a new AdGroupCustomizerErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCustomizerErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdGroupCustomizerErrorEnum): google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum;

                        /**
                         * Encodes the specified AdGroupCustomizerErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum.verify|verify} messages.
                         * @param message AdGroupCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdGroupCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCustomizerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum.verify|verify} messages.
                         * @param message AdGroupCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdGroupCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCustomizerErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum;

                        /**
                         * Decodes an AdGroupCustomizerErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum;

                        /**
                         * Verifies an AdGroupCustomizerErrorEnum message.
                         * @param message Plain 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 AdGroupCustomizerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCustomizerErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupCustomizerErrorEnum message. Also converts values to other types if specified.
                         * @param message AdGroupCustomizerErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCustomizerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCustomizerErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCustomizerErrorEnum {

                        /** AdGroupCustomizerError enum. */
                        enum AdGroupCustomizerError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1
                        }
                    }

                    /** Properties of an AdGroupErrorEnum. */
                    interface IAdGroupErrorEnum {
                    }

                    /** Represents an AdGroupErrorEnum. */
                    class AdGroupErrorEnum implements IAdGroupErrorEnum {

                        /**
                         * Constructs a new AdGroupErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdGroupErrorEnum);

                        /**
                         * Creates a new AdGroupErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdGroupErrorEnum): google.ads.googleads.v23.errors.AdGroupErrorEnum;

                        /**
                         * Encodes the specified AdGroupErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupErrorEnum.verify|verify} messages.
                         * @param message AdGroupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupErrorEnum.verify|verify} messages.
                         * @param message AdGroupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdGroupErrorEnum;

                        /**
                         * Decodes an AdGroupErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdGroupErrorEnum;

                        /**
                         * Verifies an AdGroupErrorEnum message.
                         * @param message Plain 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 AdGroupErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdGroupErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupErrorEnum message. Also converts values to other types if specified.
                         * @param message AdGroupErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdGroupErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupErrorEnum {

                        /** AdGroupError enum. */
                        enum AdGroupError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_ADGROUP_NAME = 2,
                            INVALID_ADGROUP_NAME = 3,
                            ADVERTISER_NOT_ON_CONTENT_NETWORK = 5,
                            BID_TOO_BIG = 6,
                            BID_TYPE_AND_BIDDING_STRATEGY_MISMATCH = 7,
                            MISSING_ADGROUP_NAME = 8,
                            ADGROUP_LABEL_DOES_NOT_EXIST = 9,
                            ADGROUP_LABEL_ALREADY_EXISTS = 10,
                            INVALID_CONTENT_BID_CRITERION_TYPE_GROUP = 11,
                            AD_GROUP_TYPE_NOT_VALID_FOR_ADVERTISING_CHANNEL_TYPE = 12,
                            ADGROUP_TYPE_NOT_SUPPORTED_FOR_CAMPAIGN_SALES_COUNTRY = 13,
                            CANNOT_ADD_ADGROUP_OF_TYPE_DSA_TO_CAMPAIGN_WITHOUT_DSA_SETTING = 14,
                            PROMOTED_HOTEL_AD_GROUPS_NOT_AVAILABLE_FOR_CUSTOMER = 15,
                            INVALID_EXCLUDED_PARENT_ASSET_FIELD_TYPE = 16,
                            INVALID_EXCLUDED_PARENT_ASSET_SET_TYPE = 17,
                            CANNOT_ADD_AD_GROUP_FOR_CAMPAIGN_TYPE = 18,
                            INVALID_STATUS = 19,
                            INVALID_STEP_ID_FOR_VIDEO_ADS_SEQUENCING = 20,
                            INVALID_AD_GROUP_TYPE_FOR_VIDEO_ADS_SEQUENCING = 21,
                            DUPLICATE_STEP_ID = 22,
                            INVALID_VERTICAL_ADS_FORMAT_SETTING = 23,
                            VERTICAL_ADS_FORMAT_SETTING_NOT_SUPPORTED_FOR_CAMPAIGNS_WITHOUT_AI_MAX = 24,
                            VERTICAL_ADS_FORMAT_SETTING_NOT_SUPPORTED_FOR_CAMPAIGNS_WITHOUT_ENABLED_TRAVEL_FEED = 25
                        }
                    }

                    /** Properties of an AdGroupFeedErrorEnum. */
                    interface IAdGroupFeedErrorEnum {
                    }

                    /** Represents an AdGroupFeedErrorEnum. */
                    class AdGroupFeedErrorEnum implements IAdGroupFeedErrorEnum {

                        /**
                         * Constructs a new AdGroupFeedErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdGroupFeedErrorEnum);

                        /**
                         * Creates a new AdGroupFeedErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupFeedErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdGroupFeedErrorEnum): google.ads.googleads.v23.errors.AdGroupFeedErrorEnum;

                        /**
                         * Encodes the specified AdGroupFeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupFeedErrorEnum.verify|verify} messages.
                         * @param message AdGroupFeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdGroupFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupFeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdGroupFeedErrorEnum.verify|verify} messages.
                         * @param message AdGroupFeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdGroupFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupFeedErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupFeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdGroupFeedErrorEnum;

                        /**
                         * Decodes an AdGroupFeedErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupFeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdGroupFeedErrorEnum;

                        /**
                         * Verifies an AdGroupFeedErrorEnum message.
                         * @param message Plain 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 AdGroupFeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupFeedErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdGroupFeedErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupFeedErrorEnum message. Also converts values to other types if specified.
                         * @param message AdGroupFeedErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdGroupFeedErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupFeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupFeedErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupFeedErrorEnum {

                        /** AdGroupFeedError enum. */
                        enum AdGroupFeedError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FEED_ALREADY_EXISTS_FOR_PLACEHOLDER_TYPE = 2,
                            CANNOT_CREATE_FOR_REMOVED_FEED = 3,
                            ADGROUP_FEED_ALREADY_EXISTS = 4,
                            CANNOT_OPERATE_ON_REMOVED_ADGROUP_FEED = 5,
                            INVALID_PLACEHOLDER_TYPE = 6,
                            MISSING_FEEDMAPPING_FOR_PLACEHOLDER_TYPE = 7,
                            NO_EXISTING_LOCATION_CUSTOMER_FEED = 8
                        }
                    }

                    /** Properties of an AdParameterErrorEnum. */
                    interface IAdParameterErrorEnum {
                    }

                    /** Represents an AdParameterErrorEnum. */
                    class AdParameterErrorEnum implements IAdParameterErrorEnum {

                        /**
                         * Constructs a new AdParameterErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdParameterErrorEnum);

                        /**
                         * Creates a new AdParameterErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdParameterErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdParameterErrorEnum): google.ads.googleads.v23.errors.AdParameterErrorEnum;

                        /**
                         * Encodes the specified AdParameterErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdParameterErrorEnum.verify|verify} messages.
                         * @param message AdParameterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdParameterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdParameterErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdParameterErrorEnum.verify|verify} messages.
                         * @param message AdParameterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdParameterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdParameterErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdParameterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdParameterErrorEnum;

                        /**
                         * Decodes an AdParameterErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdParameterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdParameterErrorEnum;

                        /**
                         * Verifies an AdParameterErrorEnum message.
                         * @param message Plain 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 AdParameterErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdParameterErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdParameterErrorEnum;

                        /**
                         * Creates a plain object from an AdParameterErrorEnum message. Also converts values to other types if specified.
                         * @param message AdParameterErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdParameterErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdParameterErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdParameterErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdParameterErrorEnum {

                        /** AdParameterError enum. */
                        enum AdParameterError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_GROUP_CRITERION_MUST_BE_KEYWORD = 2,
                            INVALID_INSERTION_TEXT_FORMAT = 3
                        }
                    }

                    /** Properties of an AdSharingErrorEnum. */
                    interface IAdSharingErrorEnum {
                    }

                    /** Represents an AdSharingErrorEnum. */
                    class AdSharingErrorEnum implements IAdSharingErrorEnum {

                        /**
                         * Constructs a new AdSharingErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdSharingErrorEnum);

                        /**
                         * Creates a new AdSharingErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdSharingErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdSharingErrorEnum): google.ads.googleads.v23.errors.AdSharingErrorEnum;

                        /**
                         * Encodes the specified AdSharingErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdSharingErrorEnum.verify|verify} messages.
                         * @param message AdSharingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdSharingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdSharingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdSharingErrorEnum.verify|verify} messages.
                         * @param message AdSharingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdSharingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdSharingErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdSharingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdSharingErrorEnum;

                        /**
                         * Decodes an AdSharingErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdSharingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdSharingErrorEnum;

                        /**
                         * Verifies an AdSharingErrorEnum message.
                         * @param message Plain 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 AdSharingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdSharingErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdSharingErrorEnum;

                        /**
                         * Creates a plain object from an AdSharingErrorEnum message. Also converts values to other types if specified.
                         * @param message AdSharingErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdSharingErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdSharingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdSharingErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdSharingErrorEnum {

                        /** AdSharingError enum. */
                        enum AdSharingError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_GROUP_ALREADY_CONTAINS_AD = 2,
                            INCOMPATIBLE_AD_UNDER_AD_GROUP = 3,
                            CANNOT_SHARE_INACTIVE_AD = 4
                        }
                    }

                    /** Properties of an AdxErrorEnum. */
                    interface IAdxErrorEnum {
                    }

                    /** Represents an AdxErrorEnum. */
                    class AdxErrorEnum implements IAdxErrorEnum {

                        /**
                         * Constructs a new AdxErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAdxErrorEnum);

                        /**
                         * Creates a new AdxErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdxErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAdxErrorEnum): google.ads.googleads.v23.errors.AdxErrorEnum;

                        /**
                         * Encodes the specified AdxErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AdxErrorEnum.verify|verify} messages.
                         * @param message AdxErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAdxErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdxErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AdxErrorEnum.verify|verify} messages.
                         * @param message AdxErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAdxErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdxErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdxErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AdxErrorEnum;

                        /**
                         * Decodes an AdxErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdxErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AdxErrorEnum;

                        /**
                         * Verifies an AdxErrorEnum message.
                         * @param message Plain 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 AdxErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdxErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AdxErrorEnum;

                        /**
                         * Creates a plain object from an AdxErrorEnum message. Also converts values to other types if specified.
                         * @param message AdxErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AdxErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdxErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdxErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdxErrorEnum {

                        /** AdxError enum. */
                        enum AdxError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNSUPPORTED_FEATURE = 2
                        }
                    }

                    /** Properties of an AssetErrorEnum. */
                    interface IAssetErrorEnum {
                    }

                    /** Represents an AssetErrorEnum. */
                    class AssetErrorEnum implements IAssetErrorEnum {

                        /**
                         * Constructs a new AssetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetErrorEnum);

                        /**
                         * Creates a new AssetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetErrorEnum): google.ads.googleads.v23.errors.AssetErrorEnum;

                        /**
                         * Encodes the specified AssetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetErrorEnum.verify|verify} messages.
                         * @param message AssetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetErrorEnum.verify|verify} messages.
                         * @param message AssetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetErrorEnum;

                        /**
                         * Decodes an AssetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetErrorEnum;

                        /**
                         * Verifies an AssetErrorEnum message.
                         * @param message Plain 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 AssetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetErrorEnum;

                        /**
                         * Creates a plain object from an AssetErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetErrorEnum {

                        /** AssetError enum. */
                        enum AssetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER_NOT_ON_ALLOWLIST_FOR_ASSET_TYPE = 13,
                            DUPLICATE_ASSET = 3,
                            DUPLICATE_ASSET_NAME = 4,
                            ASSET_DATA_IS_MISSING = 5,
                            CANNOT_MODIFY_ASSET_NAME = 6,
                            FIELD_INCOMPATIBLE_WITH_ASSET_TYPE = 7,
                            INVALID_CALL_TO_ACTION_TEXT = 8,
                            LEAD_FORM_INVALID_FIELDS_COMBINATION = 9,
                            LEAD_FORM_MISSING_AGREEMENT = 10,
                            INVALID_ASSET_STATUS = 11,
                            FIELD_CANNOT_BE_MODIFIED_FOR_ASSET_TYPE = 12,
                            SCHEDULES_CANNOT_OVERLAP = 14,
                            PROMOTION_CANNOT_SET_PERCENT_OFF_AND_MONEY_AMOUNT_OFF = 15,
                            PROMOTION_CANNOT_SET_PROMOTION_CODE_AND_ORDERS_OVER_AMOUNT = 16,
                            TOO_MANY_DECIMAL_PLACES_SPECIFIED = 17,
                            DUPLICATE_ASSETS_WITH_DIFFERENT_FIELD_VALUE = 18,
                            CALL_CARRIER_SPECIFIC_SHORT_NUMBER_NOT_ALLOWED = 19,
                            CALL_CUSTOMER_CONSENT_FOR_CALL_RECORDING_REQUIRED = 20,
                            CALL_DISALLOWED_NUMBER_TYPE = 21,
                            CALL_INVALID_CONVERSION_ACTION = 22,
                            CALL_INVALID_COUNTRY_CODE = 23,
                            CALL_INVALID_DOMESTIC_PHONE_NUMBER_FORMAT = 24,
                            CALL_INVALID_PHONE_NUMBER = 25,
                            CALL_PHONE_NUMBER_NOT_SUPPORTED_FOR_COUNTRY = 26,
                            CALL_PREMIUM_RATE_NUMBER_NOT_ALLOWED = 27,
                            CALL_VANITY_PHONE_NUMBER_NOT_ALLOWED = 28,
                            PRICE_HEADER_SAME_AS_DESCRIPTION = 29,
                            MOBILE_APP_INVALID_APP_ID = 30,
                            MOBILE_APP_INVALID_FINAL_URL_FOR_APP_DOWNLOAD_URL = 31,
                            NAME_REQUIRED_FOR_ASSET_TYPE = 32,
                            LEAD_FORM_LEGACY_QUALIFYING_QUESTIONS_DISALLOWED = 33,
                            NAME_CONFLICT_FOR_ASSET_TYPE = 34,
                            CANNOT_MODIFY_ASSET_SOURCE = 35,
                            CANNOT_MODIFY_AUTOMATICALLY_CREATED_ASSET = 36,
                            LEAD_FORM_LOCATION_ANSWER_TYPE_DISALLOWED = 37,
                            PAGE_FEED_INVALID_LABEL_TEXT = 38,
                            CUSTOMER_NOT_ON_ALLOWLIST_FOR_WHATSAPP_MESSAGE_ASSETS = 39,
                            CUSTOMER_NOT_ON_ALLOWLIST_FOR_APP_DEEP_LINK_ASSETS = 40,
                            PROMOTION_BARCODE_CANNOT_CONTAIN_LINKS = 41,
                            PROMOTION_BARCODE_INVALID_FORMAT = 42,
                            UNSUPPORTED_BARCODE_TYPE = 43,
                            PROMOTION_QR_CODE_CANNOT_CONTAIN_LINKS = 44,
                            PROMOTION_QR_CODE_INVALID_FORMAT = 45,
                            CUSTOMER_NOT_ON_ALLOWLIST_FOR_MESSAGE_ASSETS = 46
                        }
                    }

                    /** Properties of an AssetGenerationErrorEnum. */
                    interface IAssetGenerationErrorEnum {
                    }

                    /** Represents an AssetGenerationErrorEnum. */
                    class AssetGenerationErrorEnum implements IAssetGenerationErrorEnum {

                        /**
                         * Constructs a new AssetGenerationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetGenerationErrorEnum);

                        /**
                         * Creates a new AssetGenerationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGenerationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetGenerationErrorEnum): google.ads.googleads.v23.errors.AssetGenerationErrorEnum;

                        /**
                         * Encodes the specified AssetGenerationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGenerationErrorEnum.verify|verify} messages.
                         * @param message AssetGenerationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetGenerationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGenerationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGenerationErrorEnum.verify|verify} messages.
                         * @param message AssetGenerationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetGenerationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGenerationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGenerationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetGenerationErrorEnum;

                        /**
                         * Decodes an AssetGenerationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGenerationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetGenerationErrorEnum;

                        /**
                         * Verifies an AssetGenerationErrorEnum message.
                         * @param message Plain 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 AssetGenerationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGenerationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetGenerationErrorEnum;

                        /**
                         * Creates a plain object from an AssetGenerationErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetGenerationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetGenerationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGenerationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGenerationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGenerationErrorEnum {

                        /** AssetGenerationError enum. */
                        enum AssetGenerationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_ASSETS_GENERATED = 2,
                            FINAL_URL_REQUIRED = 3,
                            GENERATION_CONTEXT_MISSING_FINAL_URL = 4,
                            FINAL_URL_SENSITIVE = 5,
                            FINAL_URL_UNSUPPORTED_LANGUAGE = 6,
                            FINAL_URL_UNAVAILABLE = 7,
                            CAMPAIGN_TYPE_REQUIRED = 8,
                            UNSUPPORTED_CAMPAIGN_TYPE = 9,
                            UNSUPPORTED_FIELD_TYPE = 10,
                            UNSUPPORTED_FIELD_TYPE_FOR_CAMPAIGN_TYPE = 11,
                            FREEFORM_PROMPT_UNSUPPORTED_LANGUAGE = 12,
                            FREEFORM_PROMPT_SENSITIVE = 13,
                            INPUT_IMAGE_FILE_SIZE_TOO_LARGE = 14,
                            INPUT_IMAGE_EMPTY = 15,
                            GENERATION_TYPE_REQUIRED = 16,
                            TOO_MANY_KEYWORDS = 17,
                            KEYWORD_INVALID_LENGTH = 18,
                            NO_VALID_KEYWORDS = 19,
                            FREEFORM_PROMPT_INVALID_LENGTH = 20,
                            FREEFORM_PROMPT_REFERENCES_CHILDREN = 21,
                            FREEFORM_PROMPT_REFERENCES_SPECIFIC_PEOPLE = 22,
                            FREEFORM_PROMPT_VIOLATES_ADS_POLICY = 23,
                            FREEFORM_PROMPT_BRAND_CONTENT = 24,
                            INPUT_IMAGE_DEPICTS_CHILDREN = 25,
                            INPUT_IMAGE_CONTAINS_BRAND_CONTENT = 26,
                            INPUT_IMAGE_SENSITIVE = 27,
                            INPUT_IMAGE_VIOLATES_POLICY = 28,
                            ALL_OUTPUT_IMAGES_FILTERED_OUT_CHILDREN_DEPICTION = 29,
                            ALL_OUTPUT_IMAGES_FILTERED_OUT_SPECIFIC_PEOPLE = 30,
                            ALL_OUTPUT_IMAGES_FILTERED_OUT = 31,
                            INPUT_IMAGE_REQUIRED = 32,
                            INPUT_IMAGE_UNSUPPORTED_IMAGE_TYPE = 33,
                            CONTEXT_ASSET_GROUP_NOT_FOUND = 34,
                            CONTEXT_AD_GROUP_AD_NOT_FOUND = 35,
                            CONTEXT_CAMPAIGN_NOT_FOUND = 36
                        }
                    }

                    /** Properties of an AssetGroupAssetErrorEnum. */
                    interface IAssetGroupAssetErrorEnum {
                    }

                    /** Represents an AssetGroupAssetErrorEnum. */
                    class AssetGroupAssetErrorEnum implements IAssetGroupAssetErrorEnum {

                        /**
                         * Constructs a new AssetGroupAssetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetGroupAssetErrorEnum);

                        /**
                         * Creates a new AssetGroupAssetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupAssetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetGroupAssetErrorEnum): google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum;

                        /**
                         * Encodes the specified AssetGroupAssetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum.verify|verify} messages.
                         * @param message AssetGroupAssetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetGroupAssetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupAssetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum.verify|verify} messages.
                         * @param message AssetGroupAssetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetGroupAssetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupAssetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupAssetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum;

                        /**
                         * Decodes an AssetGroupAssetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupAssetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum;

                        /**
                         * Verifies an AssetGroupAssetErrorEnum message.
                         * @param message Plain 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 AssetGroupAssetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupAssetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum;

                        /**
                         * Creates a plain object from an AssetGroupAssetErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupAssetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupAssetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupAssetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupAssetErrorEnum {

                        /** AssetGroupAssetError enum. */
                        enum AssetGroupAssetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_RESOURCE = 2,
                            EXPANDABLE_TAGS_NOT_ALLOWED_IN_DESCRIPTION = 3,
                            AD_CUSTOMIZER_NOT_SUPPORTED = 4,
                            HOTEL_PROPERTY_ASSET_NOT_LINKED_TO_CAMPAIGN = 5
                        }
                    }

                    /** Properties of an AssetGroupErrorEnum. */
                    interface IAssetGroupErrorEnum {
                    }

                    /** Represents an AssetGroupErrorEnum. */
                    class AssetGroupErrorEnum implements IAssetGroupErrorEnum {

                        /**
                         * Constructs a new AssetGroupErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetGroupErrorEnum);

                        /**
                         * Creates a new AssetGroupErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetGroupErrorEnum): google.ads.googleads.v23.errors.AssetGroupErrorEnum;

                        /**
                         * Encodes the specified AssetGroupErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupErrorEnum.verify|verify} messages.
                         * @param message AssetGroupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupErrorEnum.verify|verify} messages.
                         * @param message AssetGroupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetGroupErrorEnum;

                        /**
                         * Decodes an AssetGroupErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetGroupErrorEnum;

                        /**
                         * Verifies an AssetGroupErrorEnum message.
                         * @param message Plain 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 AssetGroupErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetGroupErrorEnum;

                        /**
                         * Creates a plain object from an AssetGroupErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetGroupErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupErrorEnum {

                        /** AssetGroupError enum. */
                        enum AssetGroupError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_NAME = 2,
                            CANNOT_ADD_ASSET_GROUP_FOR_CAMPAIGN_TYPE = 3,
                            NOT_ENOUGH_HEADLINE_ASSET = 4,
                            NOT_ENOUGH_LONG_HEADLINE_ASSET = 5,
                            NOT_ENOUGH_DESCRIPTION_ASSET = 6,
                            NOT_ENOUGH_BUSINESS_NAME_ASSET = 7,
                            NOT_ENOUGH_MARKETING_IMAGE_ASSET = 8,
                            NOT_ENOUGH_SQUARE_MARKETING_IMAGE_ASSET = 9,
                            NOT_ENOUGH_LOGO_ASSET = 10,
                            FINAL_URL_SHOPPING_MERCHANT_HOME_PAGE_URL_DOMAINS_DIFFER = 11,
                            PATH1_REQUIRED_WHEN_PATH2_IS_SET = 12,
                            SHORT_DESCRIPTION_REQUIRED = 13,
                            FINAL_URL_REQUIRED = 14,
                            FINAL_URL_CONTAINS_INVALID_DOMAIN_NAME = 15,
                            AD_CUSTOMIZER_NOT_SUPPORTED = 16,
                            CANNOT_MUTATE_ASSET_GROUP_FOR_REMOVED_CAMPAIGN = 17
                        }
                    }

                    /** Properties of an AssetGroupListingGroupFilterErrorEnum. */
                    interface IAssetGroupListingGroupFilterErrorEnum {
                    }

                    /** Represents an AssetGroupListingGroupFilterErrorEnum. */
                    class AssetGroupListingGroupFilterErrorEnum implements IAssetGroupListingGroupFilterErrorEnum {

                        /**
                         * Constructs a new AssetGroupListingGroupFilterErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetGroupListingGroupFilterErrorEnum);

                        /**
                         * Creates a new AssetGroupListingGroupFilterErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupListingGroupFilterErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetGroupListingGroupFilterErrorEnum): google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum;

                        /**
                         * Encodes the specified AssetGroupListingGroupFilterErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum.verify|verify} messages.
                         * @param message AssetGroupListingGroupFilterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetGroupListingGroupFilterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupListingGroupFilterErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum.verify|verify} messages.
                         * @param message AssetGroupListingGroupFilterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetGroupListingGroupFilterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupListingGroupFilterErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupListingGroupFilterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum;

                        /**
                         * Decodes an AssetGroupListingGroupFilterErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupListingGroupFilterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum;

                        /**
                         * Verifies an AssetGroupListingGroupFilterErrorEnum message.
                         * @param message Plain 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 AssetGroupListingGroupFilterErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupListingGroupFilterErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum;

                        /**
                         * Creates a plain object from an AssetGroupListingGroupFilterErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupListingGroupFilterErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupListingGroupFilterErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupListingGroupFilterErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupListingGroupFilterErrorEnum {

                        /** AssetGroupListingGroupFilterError enum. */
                        enum AssetGroupListingGroupFilterError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TREE_TOO_DEEP = 2,
                            UNIT_CANNOT_HAVE_CHILDREN = 3,
                            SUBDIVISION_MUST_HAVE_EVERYTHING_ELSE_CHILD = 4,
                            DIFFERENT_DIMENSION_TYPE_BETWEEN_SIBLINGS = 5,
                            SAME_DIMENSION_VALUE_BETWEEN_SIBLINGS = 6,
                            SAME_DIMENSION_TYPE_BETWEEN_ANCESTORS = 7,
                            MULTIPLE_ROOTS = 8,
                            INVALID_DIMENSION_VALUE = 9,
                            MUST_REFINE_HIERARCHICAL_PARENT_TYPE = 10,
                            INVALID_PRODUCT_BIDDING_CATEGORY = 11,
                            CHANGING_CASE_VALUE_WITH_CHILDREN = 12,
                            SUBDIVISION_HAS_CHILDREN = 13,
                            CANNOT_REFINE_HIERARCHICAL_EVERYTHING_ELSE = 14,
                            DIMENSION_TYPE_NOT_ALLOWED = 15,
                            DUPLICATE_WEBPAGE_FILTER_UNDER_ASSET_GROUP = 16,
                            LISTING_SOURCE_NOT_ALLOWED = 17,
                            FILTER_EXCLUSION_NOT_ALLOWED = 18,
                            MULTIPLE_LISTING_SOURCES = 19,
                            MULTIPLE_WEBPAGE_CONDITION_TYPES_NOT_ALLOWED = 20,
                            MULTIPLE_WEBPAGE_TYPES_PER_ASSET_GROUP = 21,
                            PAGE_FEED_FILTER_HAS_PARENT = 22,
                            MULTIPLE_OPERATIONS_ON_ONE_NODE = 23,
                            TREE_WAS_INVALID_BEFORE_MUTATION = 24
                        }
                    }

                    /** Properties of an AssetGroupSignalErrorEnum. */
                    interface IAssetGroupSignalErrorEnum {
                    }

                    /** Represents an AssetGroupSignalErrorEnum. */
                    class AssetGroupSignalErrorEnum implements IAssetGroupSignalErrorEnum {

                        /**
                         * Constructs a new AssetGroupSignalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetGroupSignalErrorEnum);

                        /**
                         * Creates a new AssetGroupSignalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupSignalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetGroupSignalErrorEnum): google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum;

                        /**
                         * Encodes the specified AssetGroupSignalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum.verify|verify} messages.
                         * @param message AssetGroupSignalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetGroupSignalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupSignalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum.verify|verify} messages.
                         * @param message AssetGroupSignalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetGroupSignalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupSignalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupSignalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum;

                        /**
                         * Decodes an AssetGroupSignalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupSignalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum;

                        /**
                         * Verifies an AssetGroupSignalErrorEnum message.
                         * @param message Plain 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 AssetGroupSignalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupSignalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum;

                        /**
                         * Creates a plain object from an AssetGroupSignalErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetGroupSignalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupSignalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupSignalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetGroupSignalErrorEnum {

                        /** AssetGroupSignalError enum. */
                        enum AssetGroupSignalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_MANY_WORDS = 2,
                            SEARCH_THEME_POLICY_VIOLATION = 3,
                            AUDIENCE_WITH_WRONG_ASSET_GROUP_ID = 4
                        }
                    }

                    /** Properties of an AssetLinkErrorEnum. */
                    interface IAssetLinkErrorEnum {
                    }

                    /** Represents an AssetLinkErrorEnum. */
                    class AssetLinkErrorEnum implements IAssetLinkErrorEnum {

                        /**
                         * Constructs a new AssetLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetLinkErrorEnum);

                        /**
                         * Creates a new AssetLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetLinkErrorEnum): google.ads.googleads.v23.errors.AssetLinkErrorEnum;

                        /**
                         * Encodes the specified AssetLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetLinkErrorEnum.verify|verify} messages.
                         * @param message AssetLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetLinkErrorEnum.verify|verify} messages.
                         * @param message AssetLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetLinkErrorEnum;

                        /**
                         * Decodes an AssetLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetLinkErrorEnum;

                        /**
                         * Verifies an AssetLinkErrorEnum message.
                         * @param message Plain 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 AssetLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetLinkErrorEnum;

                        /**
                         * Creates a plain object from an AssetLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetLinkErrorEnum {

                        /** AssetLinkError enum. */
                        enum AssetLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PINNING_UNSUPPORTED = 2,
                            UNSUPPORTED_FIELD_TYPE = 3,
                            FIELD_TYPE_INCOMPATIBLE_WITH_ASSET_TYPE = 4,
                            FIELD_TYPE_INCOMPATIBLE_WITH_CAMPAIGN_TYPE = 5,
                            INCOMPATIBLE_ADVERTISING_CHANNEL_TYPE = 6,
                            IMAGE_NOT_WITHIN_SPECIFIED_DIMENSION_RANGE = 7,
                            INVALID_PINNED_FIELD = 8,
                            MEDIA_BUNDLE_ASSET_FILE_SIZE_TOO_LARGE = 9,
                            NOT_ENOUGH_AVAILABLE_ASSET_LINKS_FOR_VALID_COMBINATION = 10,
                            NOT_ENOUGH_AVAILABLE_ASSET_LINKS_WITH_FALLBACK = 11,
                            NOT_ENOUGH_AVAILABLE_ASSET_LINKS_WITH_FALLBACK_FOR_VALID_COMBINATION = 12,
                            YOUTUBE_VIDEO_REMOVED = 13,
                            YOUTUBE_VIDEO_TOO_LONG = 14,
                            YOUTUBE_VIDEO_TOO_SHORT = 15,
                            EXCLUDED_PARENT_FIELD_TYPE = 16,
                            INVALID_STATUS = 17,
                            YOUTUBE_VIDEO_DURATION_NOT_DEFINED = 18,
                            CANNOT_CREATE_AUTOMATICALLY_CREATED_LINKS = 19,
                            CANNOT_LINK_TO_AUTOMATICALLY_CREATED_ASSET = 20,
                            CANNOT_MODIFY_ASSET_LINK_SOURCE = 21,
                            CANNOT_LINK_LOCATION_LEAD_FORM_WITHOUT_LOCATION_ASSET = 22,
                            CUSTOMER_NOT_VERIFIED = 23,
                            UNSUPPORTED_CALL_TO_ACTION = 24,
                            BRAND_ASSETS_NOT_LINKED_AT_ASSET_GROUP_LEVEL = 25,
                            BRAND_ASSETS_NOT_LINKED_AT_CAMPAIGN_LEVEL = 26
                        }
                    }

                    /** Properties of an AssetSetAssetErrorEnum. */
                    interface IAssetSetAssetErrorEnum {
                    }

                    /** Represents an AssetSetAssetErrorEnum. */
                    class AssetSetAssetErrorEnum implements IAssetSetAssetErrorEnum {

                        /**
                         * Constructs a new AssetSetAssetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetSetAssetErrorEnum);

                        /**
                         * Creates a new AssetSetAssetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetAssetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetSetAssetErrorEnum): google.ads.googleads.v23.errors.AssetSetAssetErrorEnum;

                        /**
                         * Encodes the specified AssetSetAssetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetSetAssetErrorEnum.verify|verify} messages.
                         * @param message AssetSetAssetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetSetAssetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetAssetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetSetAssetErrorEnum.verify|verify} messages.
                         * @param message AssetSetAssetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetSetAssetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetAssetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetAssetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetSetAssetErrorEnum;

                        /**
                         * Decodes an AssetSetAssetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetAssetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetSetAssetErrorEnum;

                        /**
                         * Verifies an AssetSetAssetErrorEnum message.
                         * @param message Plain 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 AssetSetAssetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetAssetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetSetAssetErrorEnum;

                        /**
                         * Creates a plain object from an AssetSetAssetErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetSetAssetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetSetAssetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetAssetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetAssetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSetAssetErrorEnum {

                        /** AssetSetAssetError enum. */
                        enum AssetSetAssetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_ASSET_TYPE = 2,
                            INVALID_ASSET_SET_TYPE = 3,
                            DUPLICATE_EXTERNAL_KEY = 4,
                            PARENT_LINKAGE_DOES_NOT_EXIST = 5
                        }
                    }

                    /** Properties of an AssetSetErrorEnum. */
                    interface IAssetSetErrorEnum {
                    }

                    /** Represents an AssetSetErrorEnum. */
                    class AssetSetErrorEnum implements IAssetSetErrorEnum {

                        /**
                         * Constructs a new AssetSetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetSetErrorEnum);

                        /**
                         * Creates a new AssetSetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetSetErrorEnum): google.ads.googleads.v23.errors.AssetSetErrorEnum;

                        /**
                         * Encodes the specified AssetSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetSetErrorEnum.verify|verify} messages.
                         * @param message AssetSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetSetErrorEnum.verify|verify} messages.
                         * @param message AssetSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetSetErrorEnum;

                        /**
                         * Decodes an AssetSetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetSetErrorEnum;

                        /**
                         * Verifies an AssetSetErrorEnum message.
                         * @param message Plain 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 AssetSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetSetErrorEnum;

                        /**
                         * Creates a plain object from an AssetSetErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetSetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetSetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSetErrorEnum {

                        /** AssetSetError enum. */
                        enum AssetSetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_ASSET_SET_NAME = 2,
                            INVALID_PARENT_ASSET_SET_TYPE = 3,
                            ASSET_SET_SOURCE_INCOMPATIBLE_WITH_PARENT_ASSET_SET = 4,
                            ASSET_SET_TYPE_CANNOT_BE_LINKED_TO_CUSTOMER = 5,
                            INVALID_CHAIN_IDS = 6,
                            LOCATION_SYNC_ASSET_SET_DOES_NOT_SUPPORT_RELATIONSHIP_TYPE = 7,
                            NOT_UNIQUE_ENABLED_LOCATION_SYNC_TYPED_ASSET_SET = 8,
                            INVALID_PLACE_IDS = 9,
                            OAUTH_INFO_INVALID = 11,
                            OAUTH_INFO_MISSING = 12,
                            CANNOT_DELETE_AS_ENABLED_LINKAGES_EXIST = 10
                        }
                    }

                    /** Properties of an AssetSetLinkErrorEnum. */
                    interface IAssetSetLinkErrorEnum {
                    }

                    /** Represents an AssetSetLinkErrorEnum. */
                    class AssetSetLinkErrorEnum implements IAssetSetLinkErrorEnum {

                        /**
                         * Constructs a new AssetSetLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAssetSetLinkErrorEnum);

                        /**
                         * Creates a new AssetSetLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAssetSetLinkErrorEnum): google.ads.googleads.v23.errors.AssetSetLinkErrorEnum;

                        /**
                         * Encodes the specified AssetSetLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AssetSetLinkErrorEnum.verify|verify} messages.
                         * @param message AssetSetLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAssetSetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AssetSetLinkErrorEnum.verify|verify} messages.
                         * @param message AssetSetLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAssetSetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AssetSetLinkErrorEnum;

                        /**
                         * Decodes an AssetSetLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AssetSetLinkErrorEnum;

                        /**
                         * Verifies an AssetSetLinkErrorEnum message.
                         * @param message Plain 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 AssetSetLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AssetSetLinkErrorEnum;

                        /**
                         * Creates a plain object from an AssetSetLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message AssetSetLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AssetSetLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSetLinkErrorEnum {

                        /** AssetSetLinkError enum. */
                        enum AssetSetLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INCOMPATIBLE_ADVERTISING_CHANNEL_TYPE = 2,
                            DUPLICATE_FEED_LINK = 3,
                            INCOMPATIBLE_ASSET_SET_TYPE_WITH_CAMPAIGN_TYPE = 4,
                            DUPLICATE_ASSET_SET_LINK = 5,
                            ASSET_SET_LINK_CANNOT_BE_REMOVED = 6
                        }
                    }

                    /** Properties of an AudienceErrorEnum. */
                    interface IAudienceErrorEnum {
                    }

                    /** Represents an AudienceErrorEnum. */
                    class AudienceErrorEnum implements IAudienceErrorEnum {

                        /**
                         * Constructs a new AudienceErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAudienceErrorEnum);

                        /**
                         * Creates a new AudienceErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAudienceErrorEnum): google.ads.googleads.v23.errors.AudienceErrorEnum;

                        /**
                         * Encodes the specified AudienceErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AudienceErrorEnum.verify|verify} messages.
                         * @param message AudienceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAudienceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AudienceErrorEnum.verify|verify} messages.
                         * @param message AudienceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAudienceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AudienceErrorEnum;

                        /**
                         * Decodes an AudienceErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AudienceErrorEnum;

                        /**
                         * Verifies an AudienceErrorEnum message.
                         * @param message Plain 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 AudienceErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AudienceErrorEnum;

                        /**
                         * Creates a plain object from an AudienceErrorEnum message. Also converts values to other types if specified.
                         * @param message AudienceErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AudienceErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AudienceErrorEnum {

                        /** AudienceError enum. */
                        enum AudienceError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NAME_ALREADY_IN_USE = 2,
                            DIMENSION_INVALID = 3,
                            AUDIENCE_SEGMENT_NOT_FOUND = 4,
                            AUDIENCE_SEGMENT_TYPE_NOT_SUPPORTED = 5,
                            DUPLICATE_AUDIENCE_SEGMENT = 6,
                            TOO_MANY_SEGMENTS = 7,
                            TOO_MANY_DIMENSIONS_OF_SAME_TYPE = 8,
                            IN_USE = 9,
                            MISSING_ASSET_GROUP_ID = 10,
                            CANNOT_CHANGE_FROM_CUSTOMER_TO_ASSET_GROUP_SCOPE = 11
                        }
                    }

                    /** Properties of an AudienceInsightsErrorEnum. */
                    interface IAudienceInsightsErrorEnum {
                    }

                    /** Represents an AudienceInsightsErrorEnum. */
                    class AudienceInsightsErrorEnum implements IAudienceInsightsErrorEnum {

                        /**
                         * Constructs a new AudienceInsightsErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAudienceInsightsErrorEnum);

                        /**
                         * Creates a new AudienceInsightsErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAudienceInsightsErrorEnum): google.ads.googleads.v23.errors.AudienceInsightsErrorEnum;

                        /**
                         * Encodes the specified AudienceInsightsErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AudienceInsightsErrorEnum.verify|verify} messages.
                         * @param message AudienceInsightsErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAudienceInsightsErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AudienceInsightsErrorEnum.verify|verify} messages.
                         * @param message AudienceInsightsErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAudienceInsightsErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AudienceInsightsErrorEnum;

                        /**
                         * Decodes an AudienceInsightsErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AudienceInsightsErrorEnum;

                        /**
                         * Verifies an AudienceInsightsErrorEnum message.
                         * @param message Plain 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 AudienceInsightsErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AudienceInsightsErrorEnum;

                        /**
                         * Creates a plain object from an AudienceInsightsErrorEnum message. Also converts values to other types if specified.
                         * @param message AudienceInsightsErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AudienceInsightsErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AudienceInsightsErrorEnum {

                        /** AudienceInsightsError enum. */
                        enum AudienceInsightsError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DIMENSION_INCOMPATIBLE_WITH_TOPIC_AUDIENCE_COMBINATIONS = 2
                        }
                    }

                    /** Properties of an AuthenticationErrorEnum. */
                    interface IAuthenticationErrorEnum {
                    }

                    /** Represents an AuthenticationErrorEnum. */
                    class AuthenticationErrorEnum implements IAuthenticationErrorEnum {

                        /**
                         * Constructs a new AuthenticationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAuthenticationErrorEnum);

                        /**
                         * Creates a new AuthenticationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AuthenticationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAuthenticationErrorEnum): google.ads.googleads.v23.errors.AuthenticationErrorEnum;

                        /**
                         * Encodes the specified AuthenticationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AuthenticationErrorEnum.verify|verify} messages.
                         * @param message AuthenticationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAuthenticationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AuthenticationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AuthenticationErrorEnum.verify|verify} messages.
                         * @param message AuthenticationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAuthenticationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AuthenticationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AuthenticationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AuthenticationErrorEnum;

                        /**
                         * Decodes an AuthenticationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AuthenticationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AuthenticationErrorEnum;

                        /**
                         * Verifies an AuthenticationErrorEnum message.
                         * @param message Plain 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 AuthenticationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AuthenticationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AuthenticationErrorEnum;

                        /**
                         * Creates a plain object from an AuthenticationErrorEnum message. Also converts values to other types if specified.
                         * @param message AuthenticationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AuthenticationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AuthenticationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AuthenticationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AuthenticationErrorEnum {

                        /** AuthenticationError enum. */
                        enum AuthenticationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AUTHENTICATION_ERROR = 2,
                            CLIENT_CUSTOMER_ID_INVALID = 5,
                            CUSTOMER_NOT_FOUND = 8,
                            GOOGLE_ACCOUNT_DELETED = 9,
                            GOOGLE_ACCOUNT_COOKIE_INVALID = 10,
                            GOOGLE_ACCOUNT_AUTHENTICATION_FAILED = 25,
                            GOOGLE_ACCOUNT_USER_AND_ADS_USER_MISMATCH = 12,
                            LOGIN_COOKIE_REQUIRED = 13,
                            NOT_ADS_USER = 14,
                            OAUTH_TOKEN_INVALID = 15,
                            OAUTH_TOKEN_EXPIRED = 16,
                            OAUTH_TOKEN_DISABLED = 17,
                            OAUTH_TOKEN_REVOKED = 18,
                            OAUTH_TOKEN_HEADER_INVALID = 19,
                            LOGIN_COOKIE_INVALID = 20,
                            INVALID_EMAIL_ADDRESS = 21,
                            USER_ID_INVALID = 22,
                            TWO_STEP_VERIFICATION_NOT_ENROLLED = 23,
                            ADVANCED_PROTECTION_NOT_ENROLLED = 24,
                            ORGANIZATION_NOT_RECOGNIZED = 26,
                            ORGANIZATION_NOT_APPROVED = 27,
                            ORGANIZATION_NOT_ASSOCIATED_WITH_DEVELOPER_TOKEN = 28,
                            DEVELOPER_TOKEN_INVALID = 29
                        }
                    }

                    /** Properties of an AuthorizationErrorEnum. */
                    interface IAuthorizationErrorEnum {
                    }

                    /** Represents an AuthorizationErrorEnum. */
                    class AuthorizationErrorEnum implements IAuthorizationErrorEnum {

                        /**
                         * Constructs a new AuthorizationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAuthorizationErrorEnum);

                        /**
                         * Creates a new AuthorizationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AuthorizationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAuthorizationErrorEnum): google.ads.googleads.v23.errors.AuthorizationErrorEnum;

                        /**
                         * Encodes the specified AuthorizationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AuthorizationErrorEnum.verify|verify} messages.
                         * @param message AuthorizationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAuthorizationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AuthorizationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AuthorizationErrorEnum.verify|verify} messages.
                         * @param message AuthorizationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAuthorizationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AuthorizationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AuthorizationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AuthorizationErrorEnum;

                        /**
                         * Decodes an AuthorizationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AuthorizationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AuthorizationErrorEnum;

                        /**
                         * Verifies an AuthorizationErrorEnum message.
                         * @param message Plain 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 AuthorizationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AuthorizationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AuthorizationErrorEnum;

                        /**
                         * Creates a plain object from an AuthorizationErrorEnum message. Also converts values to other types if specified.
                         * @param message AuthorizationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AuthorizationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AuthorizationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AuthorizationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AuthorizationErrorEnum {

                        /** AuthorizationError enum. */
                        enum AuthorizationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            USER_PERMISSION_DENIED = 2,
                            DEVELOPER_TOKEN_NOT_ON_ALLOWLIST = 13,
                            DEVELOPER_TOKEN_PROHIBITED = 4,
                            PROJECT_DISABLED = 5,
                            AUTHORIZATION_ERROR = 6,
                            ACTION_NOT_PERMITTED = 7,
                            INCOMPLETE_SIGNUP = 8,
                            CUSTOMER_NOT_ENABLED = 24,
                            MISSING_TOS = 9,
                            DEVELOPER_TOKEN_NOT_APPROVED = 10,
                            INVALID_LOGIN_CUSTOMER_ID_SERVING_CUSTOMER_ID_COMBINATION = 11,
                            SERVICE_ACCESS_DENIED = 12,
                            ACCESS_DENIED_FOR_ACCOUNT_TYPE = 25,
                            METRIC_ACCESS_DENIED = 26,
                            CLOUD_PROJECT_NOT_UNDER_ORGANIZATION = 27,
                            ACTION_NOT_PERMITTED_FOR_SUSPENDED_ACCOUNT = 28
                        }
                    }

                    /** Properties of an AutomaticallyCreatedAssetRemovalErrorEnum. */
                    interface IAutomaticallyCreatedAssetRemovalErrorEnum {
                    }

                    /** Represents an AutomaticallyCreatedAssetRemovalErrorEnum. */
                    class AutomaticallyCreatedAssetRemovalErrorEnum implements IAutomaticallyCreatedAssetRemovalErrorEnum {

                        /**
                         * Constructs a new AutomaticallyCreatedAssetRemovalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IAutomaticallyCreatedAssetRemovalErrorEnum);

                        /**
                         * Creates a new AutomaticallyCreatedAssetRemovalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AutomaticallyCreatedAssetRemovalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IAutomaticallyCreatedAssetRemovalErrorEnum): google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum;

                        /**
                         * Encodes the specified AutomaticallyCreatedAssetRemovalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum.verify|verify} messages.
                         * @param message AutomaticallyCreatedAssetRemovalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IAutomaticallyCreatedAssetRemovalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AutomaticallyCreatedAssetRemovalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum.verify|verify} messages.
                         * @param message AutomaticallyCreatedAssetRemovalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IAutomaticallyCreatedAssetRemovalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AutomaticallyCreatedAssetRemovalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AutomaticallyCreatedAssetRemovalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum;

                        /**
                         * Decodes an AutomaticallyCreatedAssetRemovalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AutomaticallyCreatedAssetRemovalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum;

                        /**
                         * Verifies an AutomaticallyCreatedAssetRemovalErrorEnum message.
                         * @param message Plain 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 AutomaticallyCreatedAssetRemovalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AutomaticallyCreatedAssetRemovalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum;

                        /**
                         * Creates a plain object from an AutomaticallyCreatedAssetRemovalErrorEnum message. Also converts values to other types if specified.
                         * @param message AutomaticallyCreatedAssetRemovalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AutomaticallyCreatedAssetRemovalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AutomaticallyCreatedAssetRemovalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AutomaticallyCreatedAssetRemovalErrorEnum {

                        /** AutomaticallyCreatedAssetRemovalError enum. */
                        enum AutomaticallyCreatedAssetRemovalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AD_DOES_NOT_EXIST = 2,
                            INVALID_AD_TYPE = 3,
                            ASSET_DOES_NOT_EXIST = 4,
                            ASSET_FIELD_TYPE_DOES_NOT_MATCH = 5,
                            NOT_AN_AUTOMATICALLY_CREATED_ASSET = 6
                        }
                    }

                    /** Properties of a BatchJobErrorEnum. */
                    interface IBatchJobErrorEnum {
                    }

                    /** Represents a BatchJobErrorEnum. */
                    class BatchJobErrorEnum implements IBatchJobErrorEnum {

                        /**
                         * Constructs a new BatchJobErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IBatchJobErrorEnum);

                        /**
                         * Creates a new BatchJobErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJobErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IBatchJobErrorEnum): google.ads.googleads.v23.errors.BatchJobErrorEnum;

                        /**
                         * Encodes the specified BatchJobErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.BatchJobErrorEnum.verify|verify} messages.
                         * @param message BatchJobErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IBatchJobErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.BatchJobErrorEnum.verify|verify} messages.
                         * @param message BatchJobErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IBatchJobErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BatchJobErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.BatchJobErrorEnum;

                        /**
                         * Decodes a BatchJobErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BatchJobErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.BatchJobErrorEnum;

                        /**
                         * Verifies a BatchJobErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BatchJobErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.BatchJobErrorEnum;

                        /**
                         * Creates a plain object from a BatchJobErrorEnum message. Also converts values to other types if specified.
                         * @param message BatchJobErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.BatchJobErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BatchJobErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BatchJobErrorEnum {

                        /** BatchJobError enum. */
                        enum BatchJobError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_MODIFY_JOB_AFTER_JOB_STARTS_RUNNING = 2,
                            EMPTY_OPERATIONS = 3,
                            INVALID_SEQUENCE_TOKEN = 4,
                            RESULTS_NOT_READY = 5,
                            INVALID_PAGE_SIZE = 6,
                            CAN_ONLY_REMOVE_PENDING_JOB = 7,
                            CANNOT_LIST_RESULTS = 8,
                            ASSET_GROUP_AND_ASSET_GROUP_ASSET_TRANSACTION_FAILURE = 9,
                            ASSET_GROUP_LISTING_GROUP_FILTER_TRANSACTION_FAILURE = 10,
                            REQUEST_TOO_LARGE = 11,
                            CAMPAIGN_AND_CAMPAIGN_ASSET_TRANSACTION_FAILURE = 12
                        }
                    }

                    /** Properties of a BenchmarksErrorEnum. */
                    interface IBenchmarksErrorEnum {
                    }

                    /** Represents a BenchmarksErrorEnum. */
                    class BenchmarksErrorEnum implements IBenchmarksErrorEnum {

                        /**
                         * Constructs a new BenchmarksErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IBenchmarksErrorEnum);

                        /**
                         * Creates a new BenchmarksErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BenchmarksErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IBenchmarksErrorEnum): google.ads.googleads.v23.errors.BenchmarksErrorEnum;

                        /**
                         * Encodes the specified BenchmarksErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.BenchmarksErrorEnum.verify|verify} messages.
                         * @param message BenchmarksErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IBenchmarksErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BenchmarksErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.BenchmarksErrorEnum.verify|verify} messages.
                         * @param message BenchmarksErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IBenchmarksErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BenchmarksErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BenchmarksErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.BenchmarksErrorEnum;

                        /**
                         * Decodes a BenchmarksErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BenchmarksErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.BenchmarksErrorEnum;

                        /**
                         * Verifies a BenchmarksErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BenchmarksErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BenchmarksErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.BenchmarksErrorEnum;

                        /**
                         * Creates a plain object from a BenchmarksErrorEnum message. Also converts values to other types if specified.
                         * @param message BenchmarksErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.BenchmarksErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BenchmarksErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BenchmarksErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BenchmarksErrorEnum {

                        /** BenchmarksError enum. */
                        enum BenchmarksError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MAX_QUERY_COMPLEXITY_EXCEEDED = 2
                        }
                    }

                    /** Properties of a BiddingErrorEnum. */
                    interface IBiddingErrorEnum {
                    }

                    /** Represents a BiddingErrorEnum. */
                    class BiddingErrorEnum implements IBiddingErrorEnum {

                        /**
                         * Constructs a new BiddingErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IBiddingErrorEnum);

                        /**
                         * Creates a new BiddingErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IBiddingErrorEnum): google.ads.googleads.v23.errors.BiddingErrorEnum;

                        /**
                         * Encodes the specified BiddingErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.BiddingErrorEnum.verify|verify} messages.
                         * @param message BiddingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IBiddingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.BiddingErrorEnum.verify|verify} messages.
                         * @param message BiddingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IBiddingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.BiddingErrorEnum;

                        /**
                         * Decodes a BiddingErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.BiddingErrorEnum;

                        /**
                         * Verifies a BiddingErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.BiddingErrorEnum;

                        /**
                         * Creates a plain object from a BiddingErrorEnum message. Also converts values to other types if specified.
                         * @param message BiddingErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.BiddingErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BiddingErrorEnum {

                        /** BiddingError enum. */
                        enum BiddingError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BIDDING_STRATEGY_TRANSITION_NOT_ALLOWED = 2,
                            CANNOT_ATTACH_BIDDING_STRATEGY_TO_CAMPAIGN = 7,
                            INVALID_ANONYMOUS_BIDDING_STRATEGY_TYPE = 10,
                            INVALID_BIDDING_STRATEGY_TYPE = 14,
                            INVALID_BID = 17,
                            BIDDING_STRATEGY_NOT_AVAILABLE_FOR_ACCOUNT_TYPE = 18,
                            CANNOT_CREATE_CAMPAIGN_WITH_BIDDING_STRATEGY = 21,
                            CANNOT_TARGET_CONTENT_NETWORK_ONLY_WITH_CAMPAIGN_LEVEL_POP_BIDDING_STRATEGY = 23,
                            BIDDING_STRATEGY_NOT_SUPPORTED_WITH_AD_SCHEDULE = 24,
                            PAY_PER_CONVERSION_NOT_AVAILABLE_FOR_CUSTOMER = 25,
                            PAY_PER_CONVERSION_NOT_ALLOWED_WITH_TARGET_CPA = 26,
                            BIDDING_STRATEGY_NOT_ALLOWED_FOR_SEARCH_ONLY_CAMPAIGNS = 27,
                            BIDDING_STRATEGY_NOT_SUPPORTED_IN_DRAFTS_OR_EXPERIMENTS = 28,
                            BIDDING_STRATEGY_TYPE_DOES_NOT_SUPPORT_PRODUCT_TYPE_ADGROUP_CRITERION = 29,
                            BID_TOO_SMALL = 30,
                            BID_TOO_BIG = 31,
                            BID_TOO_MANY_FRACTIONAL_DIGITS = 32,
                            INVALID_DOMAIN_NAME = 33,
                            NOT_COMPATIBLE_WITH_PAYMENT_MODE = 34,
                            BIDDING_STRATEGY_TYPE_INCOMPATIBLE_WITH_SHARED_BUDGET = 37,
                            BIDDING_STRATEGY_AND_BUDGET_MUST_BE_ALIGNED = 38,
                            BIDDING_STRATEGY_AND_BUDGET_MUST_BE_ATTACHED_TO_THE_SAME_CAMPAIGNS_TO_ALIGN = 39,
                            BIDDING_STRATEGY_AND_BUDGET_MUST_BE_REMOVED_TOGETHER = 40,
                            CPC_BID_FLOOR_MICROS_GREATER_THAN_CPC_BID_CEILING_MICROS = 41,
                            TARGET_ROAS_TOLERANCE_PERCENT_MILLIS_MUST_BE_INTEGER = 42
                        }
                    }

                    /** Properties of a BiddingStrategyErrorEnum. */
                    interface IBiddingStrategyErrorEnum {
                    }

                    /** Represents a BiddingStrategyErrorEnum. */
                    class BiddingStrategyErrorEnum implements IBiddingStrategyErrorEnum {

                        /**
                         * Constructs a new BiddingStrategyErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IBiddingStrategyErrorEnum);

                        /**
                         * Creates a new BiddingStrategyErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingStrategyErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IBiddingStrategyErrorEnum): google.ads.googleads.v23.errors.BiddingStrategyErrorEnum;

                        /**
                         * Encodes the specified BiddingStrategyErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.BiddingStrategyErrorEnum.verify|verify} messages.
                         * @param message BiddingStrategyErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IBiddingStrategyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.BiddingStrategyErrorEnum.verify|verify} messages.
                         * @param message BiddingStrategyErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IBiddingStrategyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingStrategyErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.BiddingStrategyErrorEnum;

                        /**
                         * Decodes a BiddingStrategyErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingStrategyErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.BiddingStrategyErrorEnum;

                        /**
                         * Verifies a BiddingStrategyErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingStrategyErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.BiddingStrategyErrorEnum;

                        /**
                         * Creates a plain object from a BiddingStrategyErrorEnum message. Also converts values to other types if specified.
                         * @param message BiddingStrategyErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.BiddingStrategyErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingStrategyErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BiddingStrategyErrorEnum {

                        /** BiddingStrategyError enum. */
                        enum BiddingStrategyError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_NAME = 2,
                            CANNOT_CHANGE_BIDDING_STRATEGY_TYPE = 3,
                            CANNOT_REMOVE_ASSOCIATED_STRATEGY = 4,
                            BIDDING_STRATEGY_NOT_SUPPORTED = 5,
                            INCOMPATIBLE_BIDDING_STRATEGY_AND_BIDDING_STRATEGY_GOAL_TYPE = 6
                        }
                    }

                    /** Properties of a BillingSetupErrorEnum. */
                    interface IBillingSetupErrorEnum {
                    }

                    /** Represents a BillingSetupErrorEnum. */
                    class BillingSetupErrorEnum implements IBillingSetupErrorEnum {

                        /**
                         * Constructs a new BillingSetupErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IBillingSetupErrorEnum);

                        /**
                         * Creates a new BillingSetupErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BillingSetupErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IBillingSetupErrorEnum): google.ads.googleads.v23.errors.BillingSetupErrorEnum;

                        /**
                         * Encodes the specified BillingSetupErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.BillingSetupErrorEnum.verify|verify} messages.
                         * @param message BillingSetupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IBillingSetupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetupErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.BillingSetupErrorEnum.verify|verify} messages.
                         * @param message BillingSetupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IBillingSetupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetupErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BillingSetupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.BillingSetupErrorEnum;

                        /**
                         * Decodes a BillingSetupErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BillingSetupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.BillingSetupErrorEnum;

                        /**
                         * Verifies a BillingSetupErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetupErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BillingSetupErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.BillingSetupErrorEnum;

                        /**
                         * Creates a plain object from a BillingSetupErrorEnum message. Also converts values to other types if specified.
                         * @param message BillingSetupErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.BillingSetupErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetupErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BillingSetupErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BillingSetupErrorEnum {

                        /** BillingSetupError enum. */
                        enum BillingSetupError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_USE_EXISTING_AND_NEW_ACCOUNT = 2,
                            CANNOT_REMOVE_STARTED_BILLING_SETUP = 3,
                            CANNOT_CHANGE_BILLING_TO_SAME_PAYMENTS_ACCOUNT = 4,
                            BILLING_SETUP_NOT_PERMITTED_FOR_CUSTOMER_STATUS = 5,
                            INVALID_PAYMENTS_ACCOUNT = 6,
                            BILLING_SETUP_NOT_PERMITTED_FOR_CUSTOMER_CATEGORY = 7,
                            INVALID_START_TIME_TYPE = 8,
                            THIRD_PARTY_ALREADY_HAS_BILLING = 9,
                            BILLING_SETUP_IN_PROGRESS = 10,
                            NO_SIGNUP_PERMISSION = 11,
                            CHANGE_OF_BILL_TO_IN_PROGRESS = 12,
                            PAYMENTS_PROFILE_NOT_FOUND = 13,
                            PAYMENTS_ACCOUNT_NOT_FOUND = 14,
                            PAYMENTS_PROFILE_INELIGIBLE = 15,
                            PAYMENTS_ACCOUNT_INELIGIBLE = 16,
                            CUSTOMER_NEEDS_INTERNAL_APPROVAL = 17,
                            PAYMENTS_PROFILE_NEEDS_SERVICE_AGREEMENT_ACCEPTANCE = 18,
                            PAYMENTS_ACCOUNT_INELIGIBLE_CURRENCY_CODE_MISMATCH = 19,
                            FUTURE_START_TIME_PROHIBITED = 20,
                            TOO_MANY_BILLING_SETUPS_FOR_PAYMENTS_ACCOUNT = 21
                        }
                    }

                    /** Properties of a BrandGuidelinesMigrationErrorEnum. */
                    interface IBrandGuidelinesMigrationErrorEnum {
                    }

                    /** Represents a BrandGuidelinesMigrationErrorEnum. */
                    class BrandGuidelinesMigrationErrorEnum implements IBrandGuidelinesMigrationErrorEnum {

                        /**
                         * Constructs a new BrandGuidelinesMigrationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IBrandGuidelinesMigrationErrorEnum);

                        /**
                         * Creates a new BrandGuidelinesMigrationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandGuidelinesMigrationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IBrandGuidelinesMigrationErrorEnum): google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum;

                        /**
                         * Encodes the specified BrandGuidelinesMigrationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum.verify|verify} messages.
                         * @param message BrandGuidelinesMigrationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IBrandGuidelinesMigrationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandGuidelinesMigrationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum.verify|verify} messages.
                         * @param message BrandGuidelinesMigrationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IBrandGuidelinesMigrationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandGuidelinesMigrationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandGuidelinesMigrationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum;

                        /**
                         * Decodes a BrandGuidelinesMigrationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandGuidelinesMigrationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum;

                        /**
                         * Verifies a BrandGuidelinesMigrationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandGuidelinesMigrationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandGuidelinesMigrationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum;

                        /**
                         * Creates a plain object from a BrandGuidelinesMigrationErrorEnum message. Also converts values to other types if specified.
                         * @param message BrandGuidelinesMigrationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandGuidelinesMigrationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandGuidelinesMigrationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BrandGuidelinesMigrationErrorEnum {

                        /** BrandGuidelinesMigrationError enum. */
                        enum BrandGuidelinesMigrationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BRAND_GUIDELINES_ALREADY_ENABLED = 2,
                            CANNOT_ENABLE_BRAND_GUIDELINES_FOR_REMOVED_CAMPAIGN = 3,
                            BRAND_GUIDELINES_LOGO_LIMIT_EXCEEDED = 4,
                            CANNOT_AUTO_POPULATE_BRAND_ASSETS_WHEN_BRAND_ASSETS_PROVIDED = 5,
                            AUTO_POPULATE_BRAND_ASSETS_REQUIRED_WHEN_BRAND_ASSETS_OMITTED = 6,
                            TOO_MANY_ENABLE_OPERATIONS = 7
                        }
                    }

                    /** Properties of a CampaignBudgetErrorEnum. */
                    interface ICampaignBudgetErrorEnum {
                    }

                    /** Represents a CampaignBudgetErrorEnum. */
                    class CampaignBudgetErrorEnum implements ICampaignBudgetErrorEnum {

                        /**
                         * Constructs a new CampaignBudgetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignBudgetErrorEnum);

                        /**
                         * Creates a new CampaignBudgetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignBudgetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignBudgetErrorEnum): google.ads.googleads.v23.errors.CampaignBudgetErrorEnum;

                        /**
                         * Encodes the specified CampaignBudgetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignBudgetErrorEnum.verify|verify} messages.
                         * @param message CampaignBudgetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignBudgetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBudgetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignBudgetErrorEnum.verify|verify} messages.
                         * @param message CampaignBudgetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignBudgetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBudgetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignBudgetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignBudgetErrorEnum;

                        /**
                         * Decodes a CampaignBudgetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignBudgetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignBudgetErrorEnum;

                        /**
                         * Verifies a CampaignBudgetErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBudgetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignBudgetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignBudgetErrorEnum;

                        /**
                         * Creates a plain object from a CampaignBudgetErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignBudgetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignBudgetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBudgetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignBudgetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignBudgetErrorEnum {

                        /** CampaignBudgetError enum. */
                        enum CampaignBudgetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_BUDGET_CANNOT_BE_SHARED = 17,
                            CAMPAIGN_BUDGET_REMOVED = 2,
                            CAMPAIGN_BUDGET_IN_USE = 3,
                            CAMPAIGN_BUDGET_PERIOD_NOT_AVAILABLE = 4,
                            CANNOT_MODIFY_FIELD_OF_IMPLICITLY_SHARED_CAMPAIGN_BUDGET = 6,
                            CANNOT_UPDATE_CAMPAIGN_BUDGET_TO_IMPLICITLY_SHARED = 7,
                            CANNOT_UPDATE_CAMPAIGN_BUDGET_TO_EXPLICITLY_SHARED_WITHOUT_NAME = 8,
                            CANNOT_UPDATE_CAMPAIGN_BUDGET_TO_EXPLICITLY_SHARED = 9,
                            CANNOT_USE_IMPLICITLY_SHARED_CAMPAIGN_BUDGET_WITH_MULTIPLE_CAMPAIGNS = 10,
                            DUPLICATE_NAME = 11,
                            MONEY_AMOUNT_IN_WRONG_CURRENCY = 12,
                            MONEY_AMOUNT_LESS_THAN_CURRENCY_MINIMUM_CPC = 13,
                            MONEY_AMOUNT_TOO_LARGE = 14,
                            NEGATIVE_MONEY_AMOUNT = 15,
                            NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT = 16,
                            TOTAL_BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_DAILY = 18,
                            INVALID_PERIOD = 19,
                            CANNOT_USE_ACCELERATED_DELIVERY_MODE = 20,
                            BUDGET_AMOUNT_MUST_BE_UNSET_FOR_CUSTOM_BUDGET_PERIOD = 21,
                            BUDGET_BELOW_PER_DAY_MINIMUM = 22
                        }
                    }

                    /** Properties of a CampaignConversionGoalErrorEnum. */
                    interface ICampaignConversionGoalErrorEnum {
                    }

                    /** Represents a CampaignConversionGoalErrorEnum. */
                    class CampaignConversionGoalErrorEnum implements ICampaignConversionGoalErrorEnum {

                        /**
                         * Constructs a new CampaignConversionGoalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignConversionGoalErrorEnum);

                        /**
                         * Creates a new CampaignConversionGoalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignConversionGoalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignConversionGoalErrorEnum): google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum;

                        /**
                         * Encodes the specified CampaignConversionGoalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum.verify|verify} messages.
                         * @param message CampaignConversionGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignConversionGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignConversionGoalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum.verify|verify} messages.
                         * @param message CampaignConversionGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignConversionGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignConversionGoalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignConversionGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum;

                        /**
                         * Decodes a CampaignConversionGoalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignConversionGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum;

                        /**
                         * Verifies a CampaignConversionGoalErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignConversionGoalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignConversionGoalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum;

                        /**
                         * Creates a plain object from a CampaignConversionGoalErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignConversionGoalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignConversionGoalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignConversionGoalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignConversionGoalErrorEnum {

                        /** CampaignConversionGoalError enum. */
                        enum CampaignConversionGoalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_USE_CAMPAIGN_GOAL_FOR_SEARCH_ADS_360_MANAGED_CAMPAIGN = 2,
                            CANNOT_USE_STORE_SALE_GOAL_FOR_PERFORMANCE_MAX_CAMPAIGN = 3
                        }
                    }

                    /** Properties of a CampaignCriterionErrorEnum. */
                    interface ICampaignCriterionErrorEnum {
                    }

                    /** Represents a CampaignCriterionErrorEnum. */
                    class CampaignCriterionErrorEnum implements ICampaignCriterionErrorEnum {

                        /**
                         * Constructs a new CampaignCriterionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignCriterionErrorEnum);

                        /**
                         * Creates a new CampaignCriterionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCriterionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignCriterionErrorEnum): google.ads.googleads.v23.errors.CampaignCriterionErrorEnum;

                        /**
                         * Encodes the specified CampaignCriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignCriterionErrorEnum.verify|verify} messages.
                         * @param message CampaignCriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignCriterionErrorEnum.verify|verify} messages.
                         * @param message CampaignCriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignCriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignCriterionErrorEnum;

                        /**
                         * Decodes a CampaignCriterionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignCriterionErrorEnum;

                        /**
                         * Verifies a CampaignCriterionErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignCriterionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignCriterionErrorEnum;

                        /**
                         * Creates a plain object from a CampaignCriterionErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignCriterionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignCriterionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignCriterionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignCriterionErrorEnum {

                        /** CampaignCriterionError enum. */
                        enum CampaignCriterionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONCRETE_TYPE_REQUIRED = 2,
                            INVALID_PLACEMENT_URL = 3,
                            CANNOT_EXCLUDE_CRITERIA_TYPE = 4,
                            CANNOT_SET_STATUS_FOR_CRITERIA_TYPE = 5,
                            CANNOT_SET_STATUS_FOR_EXCLUDED_CRITERIA = 6,
                            CANNOT_TARGET_AND_EXCLUDE = 7,
                            TOO_MANY_OPERATIONS = 8,
                            OPERATOR_NOT_SUPPORTED_FOR_CRITERION_TYPE = 9,
                            SHOPPING_CAMPAIGN_SALES_COUNTRY_NOT_SUPPORTED_FOR_SALES_CHANNEL = 10,
                            CANNOT_ADD_EXISTING_FIELD = 11,
                            CANNOT_UPDATE_NEGATIVE_CRITERION = 12,
                            CANNOT_SET_NEGATIVE_KEYWORD_THEME_CONSTANT_CRITERION = 13,
                            INVALID_KEYWORD_THEME_CONSTANT = 14,
                            MISSING_KEYWORD_THEME_CONSTANT_OR_FREE_FORM_KEYWORD_THEME = 15,
                            CANNOT_TARGET_BOTH_PROXIMITY_AND_LOCATION_CRITERIA_FOR_SMART_CAMPAIGN = 16,
                            CANNOT_TARGET_MULTIPLE_PROXIMITY_CRITERIA_FOR_SMART_CAMPAIGN = 17,
                            LOCATION_NOT_LAUNCHED_FOR_LOCAL_SERVICES_CAMPAIGN = 18,
                            LOCATION_INVALID_FOR_LOCAL_SERVICES_CAMPAIGN = 19,
                            CANNOT_TARGET_COUNTRY_FOR_LOCAL_SERVICES_CAMPAIGN = 20,
                            LOCATION_NOT_IN_HOME_COUNTRY_FOR_LOCAL_SERVICES_CAMPAIGN = 21,
                            CANNOT_ADD_OR_REMOVE_LOCATION_FOR_LOCAL_SERVICES_CAMPAIGN = 22,
                            AT_LEAST_ONE_POSITIVE_LOCATION_REQUIRED_FOR_LOCAL_SERVICES_CAMPAIGN = 23,
                            AT_LEAST_ONE_LOCAL_SERVICE_ID_CRITERION_REQUIRED_FOR_LOCAL_SERVICES_CAMPAIGN = 24,
                            LOCAL_SERVICE_ID_NOT_FOUND_FOR_CATEGORY = 25,
                            CANNOT_ATTACH_BRAND_LIST_TO_NON_QUALIFIED_SEARCH_CAMPAIGN = 26,
                            CANNOT_REMOVE_ALL_LOCATIONS_DUE_TO_TOO_MANY_COUNTRY_EXCLUSIONS = 27,
                            INVALID_VIDEO_LINEUP_ID = 28
                        }
                    }

                    /** Properties of a CampaignCustomizerErrorEnum. */
                    interface ICampaignCustomizerErrorEnum {
                    }

                    /** Represents a CampaignCustomizerErrorEnum. */
                    class CampaignCustomizerErrorEnum implements ICampaignCustomizerErrorEnum {

                        /**
                         * Constructs a new CampaignCustomizerErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignCustomizerErrorEnum);

                        /**
                         * Creates a new CampaignCustomizerErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCustomizerErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignCustomizerErrorEnum): google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum;

                        /**
                         * Encodes the specified CampaignCustomizerErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum.verify|verify} messages.
                         * @param message CampaignCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCustomizerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum.verify|verify} messages.
                         * @param message CampaignCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCustomizerErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum;

                        /**
                         * Decodes a CampaignCustomizerErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum;

                        /**
                         * Verifies a CampaignCustomizerErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCustomizerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignCustomizerErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum;

                        /**
                         * Creates a plain object from a CampaignCustomizerErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignCustomizerErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCustomizerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignCustomizerErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignCustomizerErrorEnum {

                        /** CampaignCustomizerError enum. */
                        enum CampaignCustomizerError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1
                        }
                    }

                    /** Properties of a CampaignDraftErrorEnum. */
                    interface ICampaignDraftErrorEnum {
                    }

                    /** Represents a CampaignDraftErrorEnum. */
                    class CampaignDraftErrorEnum implements ICampaignDraftErrorEnum {

                        /**
                         * Constructs a new CampaignDraftErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignDraftErrorEnum);

                        /**
                         * Creates a new CampaignDraftErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignDraftErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignDraftErrorEnum): google.ads.googleads.v23.errors.CampaignDraftErrorEnum;

                        /**
                         * Encodes the specified CampaignDraftErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignDraftErrorEnum.verify|verify} messages.
                         * @param message CampaignDraftErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignDraftErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraftErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignDraftErrorEnum.verify|verify} messages.
                         * @param message CampaignDraftErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignDraftErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraftErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignDraftErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignDraftErrorEnum;

                        /**
                         * Decodes a CampaignDraftErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignDraftErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignDraftErrorEnum;

                        /**
                         * Verifies a CampaignDraftErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraftErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignDraftErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignDraftErrorEnum;

                        /**
                         * Creates a plain object from a CampaignDraftErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignDraftErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignDraftErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraftErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignDraftErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignDraftErrorEnum {

                        /** CampaignDraftError enum. */
                        enum CampaignDraftError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_DRAFT_NAME = 2,
                            INVALID_STATUS_TRANSITION_FROM_REMOVED = 3,
                            INVALID_STATUS_TRANSITION_FROM_PROMOTED = 4,
                            INVALID_STATUS_TRANSITION_FROM_PROMOTE_FAILED = 5,
                            CUSTOMER_CANNOT_CREATE_DRAFT = 6,
                            CAMPAIGN_CANNOT_CREATE_DRAFT = 7,
                            INVALID_DRAFT_CHANGE = 8,
                            INVALID_STATUS_TRANSITION = 9,
                            MAX_NUMBER_OF_DRAFTS_PER_CAMPAIGN_REACHED = 10,
                            LIST_ERRORS_FOR_PROMOTED_DRAFT_ONLY = 11
                        }
                    }

                    /** Properties of a CampaignErrorEnum. */
                    interface ICampaignErrorEnum {
                    }

                    /** Represents a CampaignErrorEnum. */
                    class CampaignErrorEnum implements ICampaignErrorEnum {

                        /**
                         * Constructs a new CampaignErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignErrorEnum);

                        /**
                         * Creates a new CampaignErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignErrorEnum): google.ads.googleads.v23.errors.CampaignErrorEnum;

                        /**
                         * Encodes the specified CampaignErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignErrorEnum.verify|verify} messages.
                         * @param message CampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignErrorEnum.verify|verify} messages.
                         * @param message CampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignErrorEnum;

                        /**
                         * Decodes a CampaignErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignErrorEnum;

                        /**
                         * Verifies a CampaignErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignErrorEnum;

                        /**
                         * Creates a plain object from a CampaignErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignErrorEnum {

                        /** CampaignError enum. */
                        enum CampaignError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_TARGET_CONTENT_NETWORK = 3,
                            CANNOT_TARGET_SEARCH_NETWORK = 4,
                            CANNOT_TARGET_SEARCH_NETWORK_WITHOUT_GOOGLE_SEARCH = 5,
                            CANNOT_TARGET_GOOGLE_SEARCH_FOR_CPM_CAMPAIGN = 6,
                            CAMPAIGN_MUST_TARGET_AT_LEAST_ONE_NETWORK = 7,
                            CANNOT_TARGET_PARTNER_SEARCH_NETWORK = 8,
                            CANNOT_TARGET_CONTENT_NETWORK_ONLY_WITH_CRITERIA_LEVEL_BIDDING_STRATEGY = 9,
                            CAMPAIGN_DURATION_MUST_CONTAIN_ALL_RUNNABLE_TRIALS = 10,
                            CANNOT_MODIFY_FOR_TRIAL_CAMPAIGN = 11,
                            DUPLICATE_CAMPAIGN_NAME = 12,
                            INCOMPATIBLE_CAMPAIGN_FIELD = 13,
                            INVALID_CAMPAIGN_NAME = 14,
                            INVALID_AD_SERVING_OPTIMIZATION_STATUS = 15,
                            INVALID_TRACKING_URL = 16,
                            CANNOT_SET_BOTH_TRACKING_URL_TEMPLATE_AND_TRACKING_SETTING = 17,
                            MAX_IMPRESSIONS_NOT_IN_RANGE = 18,
                            TIME_UNIT_NOT_SUPPORTED = 19,
                            INVALID_OPERATION_IF_SERVING_STATUS_HAS_ENDED = 20,
                            BUDGET_CANNOT_BE_SHARED = 21,
                            CAMPAIGN_CANNOT_USE_SHARED_BUDGET = 22,
                            CANNOT_CHANGE_BUDGET_ON_CAMPAIGN_WITH_TRIALS = 23,
                            CAMPAIGN_LABEL_DOES_NOT_EXIST = 24,
                            CAMPAIGN_LABEL_ALREADY_EXISTS = 25,
                            MISSING_SHOPPING_SETTING = 26,
                            INVALID_SHOPPING_SALES_COUNTRY = 27,
                            ADVERTISING_CHANNEL_TYPE_NOT_AVAILABLE_FOR_ACCOUNT_TYPE = 31,
                            INVALID_ADVERTISING_CHANNEL_SUB_TYPE = 32,
                            AT_LEAST_ONE_CONVERSION_MUST_BE_SELECTED = 33,
                            CANNOT_SET_AD_ROTATION_MODE = 34,
                            CANNOT_MODIFY_START_DATE_IF_ALREADY_STARTED = 35,
                            CANNOT_SET_DATE_TO_PAST = 36,
                            MISSING_HOTEL_CUSTOMER_LINK = 37,
                            INVALID_HOTEL_CUSTOMER_LINK = 38,
                            MISSING_HOTEL_SETTING = 39,
                            CANNOT_USE_SHARED_CAMPAIGN_BUDGET_WHILE_PART_OF_CAMPAIGN_GROUP = 40,
                            APP_NOT_FOUND = 41,
                            SHOPPING_ENABLE_LOCAL_NOT_SUPPORTED_FOR_CAMPAIGN_TYPE = 42,
                            MERCHANT_NOT_ALLOWED_FOR_COMPARISON_LISTING_ADS = 43,
                            INSUFFICIENT_APP_INSTALLS_COUNT = 44,
                            SENSITIVE_CATEGORY_APP = 45,
                            HEC_AGREEMENT_REQUIRED = 46,
                            NOT_COMPATIBLE_WITH_VIEW_THROUGH_CONVERSION_OPTIMIZATION = 49,
                            INVALID_EXCLUDED_PARENT_ASSET_FIELD_TYPE = 48,
                            CANNOT_CREATE_APP_PRE_REGISTRATION_FOR_NON_ANDROID_APP = 50,
                            APP_NOT_AVAILABLE_TO_CREATE_APP_PRE_REGISTRATION_CAMPAIGN = 51,
                            INCOMPATIBLE_BUDGET_TYPE = 52,
                            LOCAL_SERVICES_DUPLICATE_CATEGORY_BID = 53,
                            LOCAL_SERVICES_INVALID_CATEGORY_BID = 54,
                            LOCAL_SERVICES_MISSING_CATEGORY_BID = 55,
                            INVALID_STATUS_CHANGE = 57,
                            MISSING_TRAVEL_CUSTOMER_LINK = 58,
                            INVALID_TRAVEL_CUSTOMER_LINK = 59,
                            INVALID_EXCLUDED_PARENT_ASSET_SET_TYPE = 62,
                            ASSET_SET_NOT_A_HOTEL_PROPERTY_ASSET_SET = 63,
                            HOTEL_PROPERTY_ASSET_SET_ONLY_FOR_PERFORMANCE_MAX_FOR_TRAVEL_GOALS = 64,
                            AVERAGE_DAILY_SPEND_TOO_HIGH = 65,
                            CANNOT_ATTACH_TO_REMOVED_CAMPAIGN_GROUP = 66,
                            CANNOT_ATTACH_TO_BIDDING_STRATEGY = 67,
                            CANNOT_CHANGE_BUDGET_PERIOD = 68,
                            NOT_ENOUGH_CONVERSIONS = 71,
                            CANNOT_SET_MORE_THAN_ONE_CONVERSION_ACTION = 72,
                            NOT_COMPATIBLE_WITH_BUDGET_TYPE = 73,
                            NOT_COMPATIBLE_WITH_UPLOAD_CLICKS_CONVERSION = 74,
                            APP_ID_MUST_MATCH_CONVERSION_ACTION_APP_ID = 76,
                            CONVERSION_ACTION_WITH_DOWNLOAD_CATEGORY_NOT_ALLOWED = 77,
                            CONVERSION_ACTION_WITH_DOWNLOAD_CATEGORY_REQUIRED = 78,
                            CONVERSION_TRACKING_NOT_ENABLED = 79,
                            NOT_COMPATIBLE_WITH_BIDDING_STRATEGY_TYPE = 80,
                            NOT_COMPATIBLE_WITH_GOOGLE_ATTRIBUTION_CONVERSIONS = 81,
                            CONVERSION_LAG_TOO_HIGH = 82,
                            NOT_LINKED_ADVERTISING_PARTNER = 83,
                            INVALID_NUMBER_OF_ADVERTISING_PARTNER_IDS = 84,
                            CANNOT_TARGET_DISPLAY_NETWORK_WITHOUT_YOUTUBE = 85,
                            CANNOT_LINK_TO_COMPARISON_SHOPPING_SERVICE_ACCOUNT = 86,
                            CANNOT_TARGET_NETWORK_FOR_COMPARISON_SHOPPING_SERVICE_LINKED_ACCOUNTS = 87,
                            CANNOT_MODIFY_TEXT_ASSET_AUTOMATION_WITH_ENABLED_TRIAL = 88,
                            DYNAMIC_TEXT_ASSET_CANNOT_OPT_OUT_WITH_FINAL_URL_EXPANSION_OPT_IN = 89,
                            CANNOT_SET_CAMPAIGN_KEYWORD_MATCH_TYPE = 90,
                            CANNOT_DISABLE_BROAD_MATCH_WHEN_KEYWORD_CONVERSION_IN_PROCESS = 91,
                            CANNOT_DISABLE_BROAD_MATCH_WHEN_TARGETING_BRANDS = 92,
                            CANNOT_ENABLE_BROAD_MATCH_FOR_BASE_CAMPAIGN_WITH_PROMOTING_TRIAL = 93,
                            CANNOT_ENABLE_BROAD_MATCH_FOR_PROMOTING_TRIAL_CAMPAIGN = 94,
                            REQUIRED_BUSINESS_NAME_ASSET_NOT_LINKED = 95,
                            REQUIRED_LOGO_ASSET_NOT_LINKED = 96,
                            BRAND_TARGETING_OVERRIDES_NOT_SUPPORTED = 97,
                            BRAND_GUIDELINES_NOT_ENABLED_FOR_CAMPAIGN = 98,
                            BRAND_GUIDELINES_MAIN_AND_ACCENT_COLORS_REQUIRED = 99,
                            BRAND_GUIDELINES_COLOR_INVALID_FORMAT = 100,
                            BRAND_GUIDELINES_UNSUPPORTED_FONT_FAMILY = 101,
                            BRAND_GUIDELINES_UNSUPPORTED_CHANNEL = 102,
                            CANNOT_ENABLE_BRAND_GUIDELINES_FOR_TRAVEL_GOALS = 103,
                            CUSTOMER_NOT_ALLOWLISTED_FOR_BRAND_GUIDELINES = 104,
                            THIRD_PARTY_INTEGRATION_PARTNER_NOT_ALLOWED = 105,
                            THIRD_PARTY_INTEGRATION_PARTNER_SHARE_COST_NOT_ALLOWED = 106,
                            DUPLICATE_INTERACTION_TYPE = 107,
                            INVALID_INTERACTION_TYPE = 108,
                            VIDEO_SEQUENCE_ERROR_SEQUENCE_DEFINITION_REQUIRED = 109,
                            AI_MAX_MUST_BE_ENABLED = 110,
                            DURATION_TOO_LONG_FOR_TOTAL_BUDGET = 111,
                            END_DATE_TIME_REQUIRED_FOR_TOTAL_BUDGET = 112
                        }
                    }

                    /** Properties of a CampaignExperimentErrorEnum. */
                    interface ICampaignExperimentErrorEnum {
                    }

                    /** Represents a CampaignExperimentErrorEnum. */
                    class CampaignExperimentErrorEnum implements ICampaignExperimentErrorEnum {

                        /**
                         * Constructs a new CampaignExperimentErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignExperimentErrorEnum);

                        /**
                         * Creates a new CampaignExperimentErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExperimentErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignExperimentErrorEnum): google.ads.googleads.v23.errors.CampaignExperimentErrorEnum;

                        /**
                         * Encodes the specified CampaignExperimentErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignExperimentErrorEnum.verify|verify} messages.
                         * @param message CampaignExperimentErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignExperimentErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperimentErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignExperimentErrorEnum.verify|verify} messages.
                         * @param message CampaignExperimentErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignExperimentErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperimentErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignExperimentErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignExperimentErrorEnum;

                        /**
                         * Decodes a CampaignExperimentErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExperimentErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignExperimentErrorEnum;

                        /**
                         * Verifies a CampaignExperimentErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperimentErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignExperimentErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignExperimentErrorEnum;

                        /**
                         * Creates a plain object from a CampaignExperimentErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignExperimentErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignExperimentErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperimentErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignExperimentErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignExperimentErrorEnum {

                        /** CampaignExperimentError enum. */
                        enum CampaignExperimentError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_NAME = 2,
                            INVALID_TRANSITION = 3,
                            CANNOT_CREATE_EXPERIMENT_WITH_SHARED_BUDGET = 4,
                            CANNOT_CREATE_EXPERIMENT_FOR_REMOVED_BASE_CAMPAIGN = 5,
                            CANNOT_CREATE_EXPERIMENT_FOR_NON_PROPOSED_DRAFT = 6,
                            CUSTOMER_CANNOT_CREATE_EXPERIMENT = 7,
                            CAMPAIGN_CANNOT_CREATE_EXPERIMENT = 8,
                            EXPERIMENT_DURATIONS_MUST_NOT_OVERLAP = 9,
                            EXPERIMENT_DURATION_MUST_BE_WITHIN_CAMPAIGN_DURATION = 10,
                            CANNOT_MUTATE_EXPERIMENT_DUE_TO_STATUS = 11
                        }
                    }

                    /** Properties of a CampaignFeedErrorEnum. */
                    interface ICampaignFeedErrorEnum {
                    }

                    /** Represents a CampaignFeedErrorEnum. */
                    class CampaignFeedErrorEnum implements ICampaignFeedErrorEnum {

                        /**
                         * Constructs a new CampaignFeedErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignFeedErrorEnum);

                        /**
                         * Creates a new CampaignFeedErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignFeedErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignFeedErrorEnum): google.ads.googleads.v23.errors.CampaignFeedErrorEnum;

                        /**
                         * Encodes the specified CampaignFeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignFeedErrorEnum.verify|verify} messages.
                         * @param message CampaignFeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignFeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignFeedErrorEnum.verify|verify} messages.
                         * @param message CampaignFeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignFeedErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignFeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignFeedErrorEnum;

                        /**
                         * Decodes a CampaignFeedErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignFeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignFeedErrorEnum;

                        /**
                         * Verifies a CampaignFeedErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignFeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignFeedErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignFeedErrorEnum;

                        /**
                         * Creates a plain object from a CampaignFeedErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignFeedErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignFeedErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignFeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignFeedErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignFeedErrorEnum {

                        /** CampaignFeedError enum. */
                        enum CampaignFeedError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FEED_ALREADY_EXISTS_FOR_PLACEHOLDER_TYPE = 2,
                            CANNOT_CREATE_FOR_REMOVED_FEED = 4,
                            CANNOT_CREATE_ALREADY_EXISTING_CAMPAIGN_FEED = 5,
                            CANNOT_MODIFY_REMOVED_CAMPAIGN_FEED = 6,
                            INVALID_PLACEHOLDER_TYPE = 7,
                            MISSING_FEEDMAPPING_FOR_PLACEHOLDER_TYPE = 8,
                            NO_EXISTING_LOCATION_CUSTOMER_FEED = 9,
                            LEGACY_FEED_TYPE_READ_ONLY = 10
                        }
                    }

                    /** Properties of a CampaignGoalConfigErrorEnum. */
                    interface ICampaignGoalConfigErrorEnum {
                    }

                    /** Represents a CampaignGoalConfigErrorEnum. */
                    class CampaignGoalConfigErrorEnum implements ICampaignGoalConfigErrorEnum {

                        /**
                         * Constructs a new CampaignGoalConfigErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignGoalConfigErrorEnum);

                        /**
                         * Creates a new CampaignGoalConfigErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignGoalConfigErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignGoalConfigErrorEnum): google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum;

                        /**
                         * Encodes the specified CampaignGoalConfigErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum.verify|verify} messages.
                         * @param message CampaignGoalConfigErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignGoalConfigErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignGoalConfigErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum.verify|verify} messages.
                         * @param message CampaignGoalConfigErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignGoalConfigErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignGoalConfigErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignGoalConfigErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum;

                        /**
                         * Decodes a CampaignGoalConfigErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignGoalConfigErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum;

                        /**
                         * Verifies a CampaignGoalConfigErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignGoalConfigErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignGoalConfigErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum;

                        /**
                         * Creates a plain object from a CampaignGoalConfigErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignGoalConfigErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignGoalConfigErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignGoalConfigErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignGoalConfigErrorEnum {

                        /** CampaignGoalConfigError enum. */
                        enum CampaignGoalConfigError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GOAL_NOT_FOUND = 3,
                            CAMPAIGN_NOT_FOUND = 4,
                            HIGH_LIFETIME_VALUE_PRESENT_BUT_VALUE_ABSENT = 9,
                            HIGH_LIFETIME_VALUE_LESS_THAN_OR_EQUAL_TO_VALUE = 10,
                            CUSTOMER_LIFECYCLE_OPTIMIZATION_CAMPAIGN_TYPE_NOT_SUPPORTED = 11,
                            CUSTOMER_NOT_ALLOWLISTED_FOR_RETENTION_ONLY = 12
                        }
                    }

                    /** Properties of a CampaignLifecycleGoalErrorEnum. */
                    interface ICampaignLifecycleGoalErrorEnum {
                    }

                    /** Represents a CampaignLifecycleGoalErrorEnum. */
                    class CampaignLifecycleGoalErrorEnum implements ICampaignLifecycleGoalErrorEnum {

                        /**
                         * Constructs a new CampaignLifecycleGoalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignLifecycleGoalErrorEnum);

                        /**
                         * Creates a new CampaignLifecycleGoalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignLifecycleGoalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignLifecycleGoalErrorEnum): google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum;

                        /**
                         * Encodes the specified CampaignLifecycleGoalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum.verify|verify} messages.
                         * @param message CampaignLifecycleGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignLifecycleGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignLifecycleGoalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum.verify|verify} messages.
                         * @param message CampaignLifecycleGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignLifecycleGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignLifecycleGoalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignLifecycleGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum;

                        /**
                         * Decodes a CampaignLifecycleGoalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignLifecycleGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum;

                        /**
                         * Verifies a CampaignLifecycleGoalErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignLifecycleGoalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignLifecycleGoalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum;

                        /**
                         * Creates a plain object from a CampaignLifecycleGoalErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignLifecycleGoalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignLifecycleGoalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignLifecycleGoalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignLifecycleGoalErrorEnum {

                        /** CampaignLifecycleGoalError enum. */
                        enum CampaignLifecycleGoalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_MISSING = 2,
                            INVALID_CAMPAIGN = 3,
                            CUSTOMER_ACQUISITION_INVALID_OPTIMIZATION_MODE = 4,
                            INCOMPATIBLE_BIDDING_STRATEGY = 5,
                            MISSING_PURCHASE_GOAL = 6,
                            CUSTOMER_ACQUISITION_INVALID_HIGH_LIFETIME_VALUE = 7,
                            CUSTOMER_ACQUISITION_UNSUPPORTED_CAMPAIGN_TYPE = 8,
                            CUSTOMER_ACQUISITION_INVALID_VALUE = 9,
                            CUSTOMER_ACQUISITION_VALUE_MISSING = 10,
                            CUSTOMER_ACQUISITION_MISSING_EXISTING_CUSTOMER_DEFINITION = 11,
                            CUSTOMER_ACQUISITION_MISSING_HIGH_VALUE_CUSTOMER_DEFINITION = 12
                        }
                    }

                    /** Properties of a CampaignSharedSetErrorEnum. */
                    interface ICampaignSharedSetErrorEnum {
                    }

                    /** Represents a CampaignSharedSetErrorEnum. */
                    class CampaignSharedSetErrorEnum implements ICampaignSharedSetErrorEnum {

                        /**
                         * Constructs a new CampaignSharedSetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICampaignSharedSetErrorEnum);

                        /**
                         * Creates a new CampaignSharedSetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSharedSetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICampaignSharedSetErrorEnum): google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum;

                        /**
                         * Encodes the specified CampaignSharedSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum.verify|verify} messages.
                         * @param message CampaignSharedSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICampaignSharedSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum.verify|verify} messages.
                         * @param message CampaignSharedSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICampaignSharedSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignSharedSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum;

                        /**
                         * Decodes a CampaignSharedSetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignSharedSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum;

                        /**
                         * Verifies a CampaignSharedSetErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignSharedSetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum;

                        /**
                         * Creates a plain object from a CampaignSharedSetErrorEnum message. Also converts values to other types if specified.
                         * @param message CampaignSharedSetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignSharedSetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignSharedSetErrorEnum {

                        /** CampaignSharedSetError enum. */
                        enum CampaignSharedSetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SHARED_SET_ACCESS_DENIED = 2
                        }
                    }

                    /** Properties of a ChangeEventErrorEnum. */
                    interface IChangeEventErrorEnum {
                    }

                    /** Represents a ChangeEventErrorEnum. */
                    class ChangeEventErrorEnum implements IChangeEventErrorEnum {

                        /**
                         * Constructs a new ChangeEventErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IChangeEventErrorEnum);

                        /**
                         * Creates a new ChangeEventErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeEventErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IChangeEventErrorEnum): google.ads.googleads.v23.errors.ChangeEventErrorEnum;

                        /**
                         * Encodes the specified ChangeEventErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ChangeEventErrorEnum.verify|verify} messages.
                         * @param message ChangeEventErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IChangeEventErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeEventErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ChangeEventErrorEnum.verify|verify} messages.
                         * @param message ChangeEventErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IChangeEventErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeEventErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeEventErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ChangeEventErrorEnum;

                        /**
                         * Decodes a ChangeEventErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeEventErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ChangeEventErrorEnum;

                        /**
                         * Verifies a ChangeEventErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeEventErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeEventErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ChangeEventErrorEnum;

                        /**
                         * Creates a plain object from a ChangeEventErrorEnum message. Also converts values to other types if specified.
                         * @param message ChangeEventErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ChangeEventErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeEventErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeEventErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChangeEventErrorEnum {

                        /** ChangeEventError enum. */
                        enum ChangeEventError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            START_DATE_TOO_OLD = 2,
                            CHANGE_DATE_RANGE_INFINITE = 3,
                            CHANGE_DATE_RANGE_NEGATIVE = 4,
                            LIMIT_NOT_SPECIFIED = 5,
                            INVALID_LIMIT_CLAUSE = 6
                        }
                    }

                    /** Properties of a ChangeStatusErrorEnum. */
                    interface IChangeStatusErrorEnum {
                    }

                    /** Represents a ChangeStatusErrorEnum. */
                    class ChangeStatusErrorEnum implements IChangeStatusErrorEnum {

                        /**
                         * Constructs a new ChangeStatusErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IChangeStatusErrorEnum);

                        /**
                         * Creates a new ChangeStatusErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeStatusErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IChangeStatusErrorEnum): google.ads.googleads.v23.errors.ChangeStatusErrorEnum;

                        /**
                         * Encodes the specified ChangeStatusErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ChangeStatusErrorEnum.verify|verify} messages.
                         * @param message ChangeStatusErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IChangeStatusErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatusErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ChangeStatusErrorEnum.verify|verify} messages.
                         * @param message ChangeStatusErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IChangeStatusErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatusErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeStatusErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ChangeStatusErrorEnum;

                        /**
                         * Decodes a ChangeStatusErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeStatusErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ChangeStatusErrorEnum;

                        /**
                         * Verifies a ChangeStatusErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatusErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeStatusErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ChangeStatusErrorEnum;

                        /**
                         * Creates a plain object from a ChangeStatusErrorEnum message. Also converts values to other types if specified.
                         * @param message ChangeStatusErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ChangeStatusErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatusErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeStatusErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChangeStatusErrorEnum {

                        /** ChangeStatusError enum. */
                        enum ChangeStatusError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            START_DATE_TOO_OLD = 3,
                            CHANGE_DATE_RANGE_INFINITE = 4,
                            CHANGE_DATE_RANGE_NEGATIVE = 5,
                            LIMIT_NOT_SPECIFIED = 6,
                            INVALID_LIMIT_CLAUSE = 7
                        }
                    }

                    /** Properties of a ClickViewErrorEnum. */
                    interface IClickViewErrorEnum {
                    }

                    /** Represents a ClickViewErrorEnum. */
                    class ClickViewErrorEnum implements IClickViewErrorEnum {

                        /**
                         * Constructs a new ClickViewErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IClickViewErrorEnum);

                        /**
                         * Creates a new ClickViewErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickViewErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IClickViewErrorEnum): google.ads.googleads.v23.errors.ClickViewErrorEnum;

                        /**
                         * Encodes the specified ClickViewErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ClickViewErrorEnum.verify|verify} messages.
                         * @param message ClickViewErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IClickViewErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickViewErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ClickViewErrorEnum.verify|verify} messages.
                         * @param message ClickViewErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IClickViewErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickViewErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ClickViewErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ClickViewErrorEnum;

                        /**
                         * Decodes a ClickViewErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ClickViewErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ClickViewErrorEnum;

                        /**
                         * Verifies a ClickViewErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickViewErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ClickViewErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ClickViewErrorEnum;

                        /**
                         * Creates a plain object from a ClickViewErrorEnum message. Also converts values to other types if specified.
                         * @param message ClickViewErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ClickViewErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickViewErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ClickViewErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ClickViewErrorEnum {

                        /** ClickViewError enum. */
                        enum ClickViewError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXPECTED_FILTER_ON_A_SINGLE_DAY = 2,
                            DATE_TOO_OLD = 3
                        }
                    }

                    /** Properties of a CollectionSizeErrorEnum. */
                    interface ICollectionSizeErrorEnum {
                    }

                    /** Represents a CollectionSizeErrorEnum. */
                    class CollectionSizeErrorEnum implements ICollectionSizeErrorEnum {

                        /**
                         * Constructs a new CollectionSizeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICollectionSizeErrorEnum);

                        /**
                         * Creates a new CollectionSizeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CollectionSizeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICollectionSizeErrorEnum): google.ads.googleads.v23.errors.CollectionSizeErrorEnum;

                        /**
                         * Encodes the specified CollectionSizeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CollectionSizeErrorEnum.verify|verify} messages.
                         * @param message CollectionSizeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICollectionSizeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CollectionSizeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CollectionSizeErrorEnum.verify|verify} messages.
                         * @param message CollectionSizeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICollectionSizeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CollectionSizeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CollectionSizeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CollectionSizeErrorEnum;

                        /**
                         * Decodes a CollectionSizeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CollectionSizeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CollectionSizeErrorEnum;

                        /**
                         * Verifies a CollectionSizeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CollectionSizeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CollectionSizeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CollectionSizeErrorEnum;

                        /**
                         * Creates a plain object from a CollectionSizeErrorEnum message. Also converts values to other types if specified.
                         * @param message CollectionSizeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CollectionSizeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CollectionSizeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CollectionSizeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CollectionSizeErrorEnum {

                        /** CollectionSizeError enum. */
                        enum CollectionSizeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_FEW = 2,
                            TOO_MANY = 3
                        }
                    }

                    /** Properties of a ContextErrorEnum. */
                    interface IContextErrorEnum {
                    }

                    /** Represents a ContextErrorEnum. */
                    class ContextErrorEnum implements IContextErrorEnum {

                        /**
                         * Constructs a new ContextErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IContextErrorEnum);

                        /**
                         * Creates a new ContextErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ContextErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IContextErrorEnum): google.ads.googleads.v23.errors.ContextErrorEnum;

                        /**
                         * Encodes the specified ContextErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ContextErrorEnum.verify|verify} messages.
                         * @param message ContextErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IContextErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContextErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ContextErrorEnum.verify|verify} messages.
                         * @param message ContextErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IContextErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContextErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ContextErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ContextErrorEnum;

                        /**
                         * Decodes a ContextErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ContextErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ContextErrorEnum;

                        /**
                         * Verifies a ContextErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContextErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ContextErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ContextErrorEnum;

                        /**
                         * Creates a plain object from a ContextErrorEnum message. Also converts values to other types if specified.
                         * @param message ContextErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ContextErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContextErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ContextErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ContextErrorEnum {

                        /** ContextError enum. */
                        enum ContextError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPERATION_NOT_PERMITTED_FOR_CONTEXT = 2,
                            OPERATION_NOT_PERMITTED_FOR_REMOVED_RESOURCE = 3
                        }
                    }

                    /** Properties of a ConversionActionErrorEnum. */
                    interface IConversionActionErrorEnum {
                    }

                    /** Represents a ConversionActionErrorEnum. */
                    class ConversionActionErrorEnum implements IConversionActionErrorEnum {

                        /**
                         * Constructs a new ConversionActionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IConversionActionErrorEnum);

                        /**
                         * Creates a new ConversionActionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionActionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IConversionActionErrorEnum): google.ads.googleads.v23.errors.ConversionActionErrorEnum;

                        /**
                         * Encodes the specified ConversionActionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionActionErrorEnum.verify|verify} messages.
                         * @param message ConversionActionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IConversionActionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionActionErrorEnum.verify|verify} messages.
                         * @param message ConversionActionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IConversionActionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionActionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ConversionActionErrorEnum;

                        /**
                         * Decodes a ConversionActionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionActionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ConversionActionErrorEnum;

                        /**
                         * Verifies a ConversionActionErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionActionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ConversionActionErrorEnum;

                        /**
                         * Creates a plain object from a ConversionActionErrorEnum message. Also converts values to other types if specified.
                         * @param message ConversionActionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ConversionActionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionActionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionActionErrorEnum {

                        /** ConversionActionError enum. */
                        enum ConversionActionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_NAME = 2,
                            DUPLICATE_APP_ID = 3,
                            TWO_CONVERSION_ACTIONS_BIDDING_ON_SAME_APP_DOWNLOAD = 4,
                            BIDDING_ON_SAME_APP_DOWNLOAD_AS_GLOBAL_ACTION = 5,
                            DATA_DRIVEN_MODEL_WAS_NEVER_GENERATED = 6,
                            DATA_DRIVEN_MODEL_EXPIRED = 7,
                            DATA_DRIVEN_MODEL_STALE = 8,
                            DATA_DRIVEN_MODEL_UNKNOWN = 9,
                            CREATION_NOT_SUPPORTED = 10,
                            UPDATE_NOT_SUPPORTED = 11,
                            CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS = 12
                        }
                    }

                    /** Properties of a ConversionAdjustmentUploadErrorEnum. */
                    interface IConversionAdjustmentUploadErrorEnum {
                    }

                    /** Represents a ConversionAdjustmentUploadErrorEnum. */
                    class ConversionAdjustmentUploadErrorEnum implements IConversionAdjustmentUploadErrorEnum {

                        /**
                         * Constructs a new ConversionAdjustmentUploadErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IConversionAdjustmentUploadErrorEnum);

                        /**
                         * Creates a new ConversionAdjustmentUploadErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAdjustmentUploadErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IConversionAdjustmentUploadErrorEnum): google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum;

                        /**
                         * Encodes the specified ConversionAdjustmentUploadErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.verify|verify} messages.
                         * @param message ConversionAdjustmentUploadErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IConversionAdjustmentUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustmentUploadErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.verify|verify} messages.
                         * @param message ConversionAdjustmentUploadErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IConversionAdjustmentUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustmentUploadErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionAdjustmentUploadErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum;

                        /**
                         * Decodes a ConversionAdjustmentUploadErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionAdjustmentUploadErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum;

                        /**
                         * Verifies a ConversionAdjustmentUploadErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustmentUploadErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionAdjustmentUploadErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum;

                        /**
                         * Creates a plain object from a ConversionAdjustmentUploadErrorEnum message. Also converts values to other types if specified.
                         * @param message ConversionAdjustmentUploadErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustmentUploadErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionAdjustmentUploadErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionAdjustmentUploadErrorEnum {

                        /** ConversionAdjustmentUploadError enum. */
                        enum ConversionAdjustmentUploadError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_RECENT_CONVERSION_ACTION = 2,
                            CONVERSION_ALREADY_RETRACTED = 4,
                            CONVERSION_NOT_FOUND = 5,
                            CONVERSION_EXPIRED = 6,
                            ADJUSTMENT_PRECEDES_CONVERSION = 7,
                            MORE_RECENT_RESTATEMENT_FOUND = 8,
                            TOO_RECENT_CONVERSION = 9,
                            CANNOT_RESTATE_CONVERSION_ACTION_THAT_ALWAYS_USES_DEFAULT_CONVERSION_VALUE = 10,
                            TOO_MANY_ADJUSTMENTS_IN_REQUEST = 11,
                            TOO_MANY_ADJUSTMENTS = 12,
                            RESTATEMENT_ALREADY_EXISTS = 13,
                            DUPLICATE_ADJUSTMENT_IN_REQUEST = 14,
                            CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS = 15,
                            CONVERSION_ACTION_NOT_ELIGIBLE_FOR_ENHANCEMENT = 16,
                            INVALID_USER_IDENTIFIER = 17,
                            UNSUPPORTED_USER_IDENTIFIER = 18,
                            GCLID_DATE_TIME_PAIR_AND_ORDER_ID_BOTH_SET = 20,
                            CONVERSION_ALREADY_ENHANCED = 21,
                            DUPLICATE_ENHANCEMENT_IN_REQUEST = 22,
                            CUSTOMER_DATA_POLICY_PROHIBITS_ENHANCEMENT = 23,
                            MISSING_ORDER_ID_FOR_WEBPAGE = 24,
                            ORDER_ID_CONTAINS_PII = 25,
                            INVALID_JOB_ID = 26,
                            NO_CONVERSION_ACTION_FOUND = 27,
                            INVALID_CONVERSION_ACTION_TYPE = 28
                        }
                    }

                    /** Properties of a ConversionCustomVariableErrorEnum. */
                    interface IConversionCustomVariableErrorEnum {
                    }

                    /** Represents a ConversionCustomVariableErrorEnum. */
                    class ConversionCustomVariableErrorEnum implements IConversionCustomVariableErrorEnum {

                        /**
                         * Constructs a new ConversionCustomVariableErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IConversionCustomVariableErrorEnum);

                        /**
                         * Creates a new ConversionCustomVariableErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionCustomVariableErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IConversionCustomVariableErrorEnum): google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum;

                        /**
                         * Encodes the specified ConversionCustomVariableErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum.verify|verify} messages.
                         * @param message ConversionCustomVariableErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IConversionCustomVariableErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariableErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum.verify|verify} messages.
                         * @param message ConversionCustomVariableErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IConversionCustomVariableErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariableErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionCustomVariableErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum;

                        /**
                         * Decodes a ConversionCustomVariableErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionCustomVariableErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum;

                        /**
                         * Verifies a ConversionCustomVariableErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariableErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionCustomVariableErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum;

                        /**
                         * Creates a plain object from a ConversionCustomVariableErrorEnum message. Also converts values to other types if specified.
                         * @param message ConversionCustomVariableErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariableErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionCustomVariableErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionCustomVariableErrorEnum {

                        /** ConversionCustomVariableError enum. */
                        enum ConversionCustomVariableError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_NAME = 2,
                            DUPLICATE_TAG = 3,
                            RESERVED_TAG = 4
                        }
                    }

                    /** Properties of a ConversionGoalCampaignConfigErrorEnum. */
                    interface IConversionGoalCampaignConfigErrorEnum {
                    }

                    /** Represents a ConversionGoalCampaignConfigErrorEnum. */
                    class ConversionGoalCampaignConfigErrorEnum implements IConversionGoalCampaignConfigErrorEnum {

                        /**
                         * Constructs a new ConversionGoalCampaignConfigErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IConversionGoalCampaignConfigErrorEnum);

                        /**
                         * Creates a new ConversionGoalCampaignConfigErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionGoalCampaignConfigErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IConversionGoalCampaignConfigErrorEnum): google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum;

                        /**
                         * Encodes the specified ConversionGoalCampaignConfigErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum.verify|verify} messages.
                         * @param message ConversionGoalCampaignConfigErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IConversionGoalCampaignConfigErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionGoalCampaignConfigErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum.verify|verify} messages.
                         * @param message ConversionGoalCampaignConfigErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IConversionGoalCampaignConfigErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionGoalCampaignConfigErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionGoalCampaignConfigErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum;

                        /**
                         * Decodes a ConversionGoalCampaignConfigErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionGoalCampaignConfigErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum;

                        /**
                         * Verifies a ConversionGoalCampaignConfigErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionGoalCampaignConfigErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionGoalCampaignConfigErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum;

                        /**
                         * Creates a plain object from a ConversionGoalCampaignConfigErrorEnum message. Also converts values to other types if specified.
                         * @param message ConversionGoalCampaignConfigErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionGoalCampaignConfigErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionGoalCampaignConfigErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionGoalCampaignConfigErrorEnum {

                        /** ConversionGoalCampaignConfigError enum. */
                        enum ConversionGoalCampaignConfigError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_USE_CAMPAIGN_GOAL_FOR_SEARCH_ADS_360_MANAGED_CAMPAIGN = 2,
                            CUSTOM_GOAL_DOES_NOT_BELONG_TO_GOOGLE_ADS_CONVERSION_CUSTOMER = 3,
                            CAMPAIGN_CANNOT_USE_UNIFIED_GOALS = 4,
                            EMPTY_CONVERSION_GOALS = 5,
                            STORE_SALE_STORE_VISIT_CANNOT_BE_BOTH_INCLUDED = 6,
                            PERFORMANCE_MAX_CAMPAIGN_CANNOT_USE_CUSTOM_GOAL_WITH_STORE_SALES = 7
                        }
                    }

                    /** Properties of a ConversionUploadErrorEnum. */
                    interface IConversionUploadErrorEnum {
                    }

                    /** Represents a ConversionUploadErrorEnum. */
                    class ConversionUploadErrorEnum implements IConversionUploadErrorEnum {

                        /**
                         * Constructs a new ConversionUploadErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IConversionUploadErrorEnum);

                        /**
                         * Creates a new ConversionUploadErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionUploadErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IConversionUploadErrorEnum): google.ads.googleads.v23.errors.ConversionUploadErrorEnum;

                        /**
                         * Encodes the specified ConversionUploadErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionUploadErrorEnum.verify|verify} messages.
                         * @param message ConversionUploadErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IConversionUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionUploadErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionUploadErrorEnum.verify|verify} messages.
                         * @param message ConversionUploadErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IConversionUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionUploadErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionUploadErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ConversionUploadErrorEnum;

                        /**
                         * Decodes a ConversionUploadErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionUploadErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ConversionUploadErrorEnum;

                        /**
                         * Verifies a ConversionUploadErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionUploadErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionUploadErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ConversionUploadErrorEnum;

                        /**
                         * Creates a plain object from a ConversionUploadErrorEnum message. Also converts values to other types if specified.
                         * @param message ConversionUploadErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ConversionUploadErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionUploadErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionUploadErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionUploadErrorEnum {

                        /** ConversionUploadError enum. */
                        enum ConversionUploadError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_MANY_CONVERSIONS_IN_REQUEST = 2,
                            UNPARSEABLE_GCLID = 3,
                            CONVERSION_PRECEDES_EVENT = 42,
                            EXPIRED_EVENT = 43,
                            TOO_RECENT_EVENT = 44,
                            EVENT_NOT_FOUND = 45,
                            UNAUTHORIZED_CUSTOMER = 8,
                            TOO_RECENT_CONVERSION_ACTION = 10,
                            CONVERSION_TRACKING_NOT_ENABLED_AT_IMPRESSION_TIME = 11,
                            EXTERNAL_ATTRIBUTION_DATA_SET_FOR_NON_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION = 12,
                            EXTERNAL_ATTRIBUTION_DATA_NOT_SET_FOR_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION = 13,
                            ORDER_ID_NOT_PERMITTED_FOR_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION = 14,
                            ORDER_ID_ALREADY_IN_USE = 15,
                            DUPLICATE_ORDER_ID = 16,
                            TOO_RECENT_CALL = 17,
                            EXPIRED_CALL = 18,
                            CALL_NOT_FOUND = 19,
                            CONVERSION_PRECEDES_CALL = 20,
                            CONVERSION_TRACKING_NOT_ENABLED_AT_CALL_TIME = 21,
                            UNPARSEABLE_CALLERS_PHONE_NUMBER = 22,
                            CLICK_CONVERSION_ALREADY_EXISTS = 23,
                            CALL_CONVERSION_ALREADY_EXISTS = 24,
                            DUPLICATE_CLICK_CONVERSION_IN_REQUEST = 25,
                            DUPLICATE_CALL_CONVERSION_IN_REQUEST = 26,
                            CUSTOM_VARIABLE_NOT_ENABLED = 28,
                            CUSTOM_VARIABLE_VALUE_CONTAINS_PII = 29,
                            INVALID_CUSTOMER_FOR_CLICK = 30,
                            INVALID_CUSTOMER_FOR_CALL = 31,
                            CONVERSION_NOT_COMPLIANT_WITH_ATT_POLICY = 32,
                            CLICK_NOT_FOUND = 33,
                            INVALID_USER_IDENTIFIER = 34,
                            EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION_NOT_PERMITTED_WITH_USER_IDENTIFIER = 35,
                            UNSUPPORTED_USER_IDENTIFIER = 36,
                            GBRAID_WBRAID_BOTH_SET = 38,
                            UNPARSEABLE_WBRAID = 39,
                            UNPARSEABLE_GBRAID = 40,
                            ONE_PER_CLICK_CONVERSION_ACTION_NOT_PERMITTED_WITH_BRAID = 46,
                            CUSTOMER_DATA_POLICY_PROHIBITS_ENHANCED_CONVERSIONS = 47,
                            CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS = 48,
                            ORDER_ID_CONTAINS_PII = 49,
                            CUSTOMER_NOT_ENABLED_ENHANCED_CONVERSIONS_FOR_LEADS = 50,
                            INVALID_JOB_ID = 52,
                            NO_CONVERSION_ACTION_FOUND = 53,
                            INVALID_CONVERSION_ACTION_TYPE = 54
                        }
                    }

                    /** Properties of a ConversionValueRuleErrorEnum. */
                    interface IConversionValueRuleErrorEnum {
                    }

                    /** Represents a ConversionValueRuleErrorEnum. */
                    class ConversionValueRuleErrorEnum implements IConversionValueRuleErrorEnum {

                        /**
                         * Constructs a new ConversionValueRuleErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IConversionValueRuleErrorEnum);

                        /**
                         * Creates a new ConversionValueRuleErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IConversionValueRuleErrorEnum): google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum;

                        /**
                         * Encodes the specified ConversionValueRuleErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum.verify|verify} messages.
                         * @param message ConversionValueRuleErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IConversionValueRuleErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum.verify|verify} messages.
                         * @param message ConversionValueRuleErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IConversionValueRuleErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRuleErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum;

                        /**
                         * Decodes a ConversionValueRuleErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRuleErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum;

                        /**
                         * Verifies a ConversionValueRuleErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRuleErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleErrorEnum message. Also converts values to other types if specified.
                         * @param message ConversionValueRuleErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRuleErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionValueRuleErrorEnum {

                        /** ConversionValueRuleError enum. */
                        enum ConversionValueRuleError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_GEO_TARGET_CONSTANT = 2,
                            CONFLICTING_INCLUDED_AND_EXCLUDED_GEO_TARGET = 3,
                            CONFLICTING_CONDITIONS = 4,
                            CANNOT_REMOVE_IF_INCLUDED_IN_VALUE_RULE_SET = 5,
                            CONDITION_NOT_ALLOWED = 6,
                            FIELD_MUST_BE_UNSET = 7,
                            CANNOT_PAUSE_UNLESS_VALUE_RULE_SET_IS_PAUSED = 8,
                            UNTARGETABLE_GEO_TARGET = 9,
                            INVALID_AUDIENCE_USER_LIST = 10,
                            INACCESSIBLE_USER_LIST = 11,
                            INVALID_AUDIENCE_USER_INTEREST = 12,
                            CANNOT_ADD_RULE_WITH_STATUS_REMOVED = 13,
                            NO_DAY_OF_WEEK_SELECTED = 14
                        }
                    }

                    /** Properties of a ConversionValueRuleSetErrorEnum. */
                    interface IConversionValueRuleSetErrorEnum {
                    }

                    /** Represents a ConversionValueRuleSetErrorEnum. */
                    class ConversionValueRuleSetErrorEnum implements IConversionValueRuleSetErrorEnum {

                        /**
                         * Constructs a new ConversionValueRuleSetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IConversionValueRuleSetErrorEnum);

                        /**
                         * Creates a new ConversionValueRuleSetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleSetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IConversionValueRuleSetErrorEnum): google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum;

                        /**
                         * Encodes the specified ConversionValueRuleSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum.verify|verify} messages.
                         * @param message ConversionValueRuleSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IConversionValueRuleSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum.verify|verify} messages.
                         * @param message ConversionValueRuleSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IConversionValueRuleSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRuleSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum;

                        /**
                         * Decodes a ConversionValueRuleSetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRuleSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum;

                        /**
                         * Verifies a ConversionValueRuleSetErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRuleSetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleSetErrorEnum message. Also converts values to other types if specified.
                         * @param message ConversionValueRuleSetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRuleSetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionValueRuleSetErrorEnum {

                        /** ConversionValueRuleSetError enum. */
                        enum ConversionValueRuleSetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONFLICTING_VALUE_RULE_CONDITIONS = 2,
                            INVALID_VALUE_RULE = 3,
                            DIMENSIONS_UPDATE_ONLY_ALLOW_APPEND = 4,
                            CONDITION_TYPE_NOT_ALLOWED = 5,
                            DUPLICATE_DIMENSIONS = 6,
                            INVALID_CAMPAIGN_ID = 7,
                            CANNOT_PAUSE_UNLESS_ALL_VALUE_RULES_ARE_PAUSED = 8,
                            SHOULD_PAUSE_WHEN_ALL_VALUE_RULES_ARE_PAUSED = 9,
                            VALUE_RULES_NOT_SUPPORTED_FOR_CAMPAIGN_TYPE = 10,
                            INELIGIBLE_CONVERSION_ACTION_CATEGORIES = 11,
                            DIMENSION_NO_CONDITION_USED_WITH_OTHER_DIMENSIONS = 12,
                            DIMENSION_NO_CONDITION_NOT_ALLOWED = 13,
                            UNSUPPORTED_CONVERSION_ACTION_CATEGORIES = 14,
                            DIMENSION_NOT_SUPPORTED_FOR_CAMPAIGN_TYPE = 15
                        }
                    }

                    /** Properties of a CountryCodeErrorEnum. */
                    interface ICountryCodeErrorEnum {
                    }

                    /** Represents a CountryCodeErrorEnum. */
                    class CountryCodeErrorEnum implements ICountryCodeErrorEnum {

                        /**
                         * Constructs a new CountryCodeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICountryCodeErrorEnum);

                        /**
                         * Creates a new CountryCodeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CountryCodeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICountryCodeErrorEnum): google.ads.googleads.v23.errors.CountryCodeErrorEnum;

                        /**
                         * Encodes the specified CountryCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CountryCodeErrorEnum.verify|verify} messages.
                         * @param message CountryCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICountryCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CountryCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CountryCodeErrorEnum.verify|verify} messages.
                         * @param message CountryCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICountryCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CountryCodeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CountryCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CountryCodeErrorEnum;

                        /**
                         * Decodes a CountryCodeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CountryCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CountryCodeErrorEnum;

                        /**
                         * Verifies a CountryCodeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CountryCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CountryCodeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CountryCodeErrorEnum;

                        /**
                         * Creates a plain object from a CountryCodeErrorEnum message. Also converts values to other types if specified.
                         * @param message CountryCodeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CountryCodeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CountryCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CountryCodeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CountryCodeErrorEnum {

                        /** CountryCodeError enum. */
                        enum CountryCodeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_COUNTRY_CODE = 2
                        }
                    }

                    /** Properties of a CriterionErrorEnum. */
                    interface ICriterionErrorEnum {
                    }

                    /** Represents a CriterionErrorEnum. */
                    class CriterionErrorEnum implements ICriterionErrorEnum {

                        /**
                         * Constructs a new CriterionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICriterionErrorEnum);

                        /**
                         * Creates a new CriterionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICriterionErrorEnum): google.ads.googleads.v23.errors.CriterionErrorEnum;

                        /**
                         * Encodes the specified CriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CriterionErrorEnum.verify|verify} messages.
                         * @param message CriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CriterionErrorEnum.verify|verify} messages.
                         * @param message CriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CriterionErrorEnum;

                        /**
                         * Decodes a CriterionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CriterionErrorEnum;

                        /**
                         * Verifies a CriterionErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CriterionErrorEnum;

                        /**
                         * Creates a plain object from a CriterionErrorEnum message. Also converts values to other types if specified.
                         * @param message CriterionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CriterionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CriterionErrorEnum {

                        /** CriterionError enum. */
                        enum CriterionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONCRETE_TYPE_REQUIRED = 2,
                            INVALID_EXCLUDED_CATEGORY = 3,
                            INVALID_KEYWORD_TEXT = 4,
                            KEYWORD_TEXT_TOO_LONG = 5,
                            KEYWORD_HAS_TOO_MANY_WORDS = 6,
                            KEYWORD_HAS_INVALID_CHARS = 7,
                            INVALID_PLACEMENT_URL = 8,
                            INVALID_USER_LIST = 9,
                            INVALID_USER_INTEREST = 10,
                            INVALID_FORMAT_FOR_PLACEMENT_URL = 11,
                            PLACEMENT_URL_IS_TOO_LONG = 12,
                            PLACEMENT_URL_HAS_ILLEGAL_CHAR = 13,
                            PLACEMENT_URL_HAS_MULTIPLE_SITES_IN_LINE = 14,
                            PLACEMENT_IS_NOT_AVAILABLE_FOR_TARGETING_OR_EXCLUSION = 15,
                            INVALID_TOPIC_PATH = 16,
                            INVALID_YOUTUBE_CHANNEL_ID = 17,
                            INVALID_YOUTUBE_VIDEO_ID = 18,
                            YOUTUBE_VERTICAL_CHANNEL_DEPRECATED = 19,
                            YOUTUBE_DEMOGRAPHIC_CHANNEL_DEPRECATED = 20,
                            YOUTUBE_URL_UNSUPPORTED = 21,
                            CANNOT_EXCLUDE_CRITERIA_TYPE = 22,
                            CANNOT_ADD_CRITERIA_TYPE = 23,
                            CANNOT_EXCLUDE_SIMILAR_USER_LIST = 26,
                            CANNOT_ADD_CLOSED_USER_LIST = 27,
                            CANNOT_ADD_DISPLAY_ONLY_LISTS_TO_SEARCH_ONLY_CAMPAIGNS = 28,
                            CANNOT_ADD_DISPLAY_ONLY_LISTS_TO_SEARCH_CAMPAIGNS = 29,
                            CANNOT_ADD_DISPLAY_ONLY_LISTS_TO_SHOPPING_CAMPAIGNS = 30,
                            CANNOT_ADD_USER_INTERESTS_TO_SEARCH_CAMPAIGNS = 31,
                            CANNOT_SET_BIDS_ON_CRITERION_TYPE_IN_SEARCH_CAMPAIGNS = 32,
                            CANNOT_ADD_URLS_TO_CRITERION_TYPE_FOR_CAMPAIGN_TYPE = 33,
                            INVALID_COMBINED_AUDIENCE = 122,
                            INVALID_CUSTOM_AFFINITY = 96,
                            INVALID_CUSTOM_INTENT = 97,
                            INVALID_CUSTOM_AUDIENCE = 121,
                            INVALID_IP_ADDRESS = 34,
                            INVALID_IP_FORMAT = 35,
                            INVALID_MOBILE_APP = 36,
                            INVALID_MOBILE_APP_CATEGORY = 37,
                            INVALID_CRITERION_ID = 38,
                            CANNOT_TARGET_CRITERION = 39,
                            CANNOT_TARGET_OBSOLETE_CRITERION = 40,
                            CRITERION_ID_AND_TYPE_MISMATCH = 41,
                            INVALID_PROXIMITY_RADIUS = 42,
                            INVALID_PROXIMITY_RADIUS_UNITS = 43,
                            INVALID_STREETADDRESS_LENGTH = 44,
                            INVALID_CITYNAME_LENGTH = 45,
                            INVALID_REGIONCODE_LENGTH = 46,
                            INVALID_REGIONNAME_LENGTH = 47,
                            INVALID_POSTALCODE_LENGTH = 48,
                            INVALID_COUNTRY_CODE = 49,
                            INVALID_LATITUDE = 50,
                            INVALID_LONGITUDE = 51,
                            PROXIMITY_GEOPOINT_AND_ADDRESS_BOTH_CANNOT_BE_NULL = 52,
                            INVALID_PROXIMITY_ADDRESS = 53,
                            INVALID_USER_DOMAIN_NAME = 54,
                            CRITERION_PARAMETER_TOO_LONG = 55,
                            AD_SCHEDULE_TIME_INTERVALS_OVERLAP = 56,
                            AD_SCHEDULE_INTERVAL_CANNOT_SPAN_MULTIPLE_DAYS = 57,
                            AD_SCHEDULE_INVALID_TIME_INTERVAL = 58,
                            AD_SCHEDULE_EXCEEDED_INTERVALS_PER_DAY_LIMIT = 59,
                            AD_SCHEDULE_CRITERION_ID_MISMATCHING_FIELDS = 60,
                            CANNOT_BID_MODIFY_CRITERION_TYPE = 61,
                            CANNOT_BID_MODIFY_CRITERION_CAMPAIGN_OPTED_OUT = 62,
                            CANNOT_BID_MODIFY_NEGATIVE_CRITERION = 63,
                            BID_MODIFIER_ALREADY_EXISTS = 64,
                            FEED_ID_NOT_ALLOWED = 65,
                            ACCOUNT_INELIGIBLE_FOR_CRITERIA_TYPE = 66,
                            CRITERIA_TYPE_INVALID_FOR_BIDDING_STRATEGY = 67,
                            CANNOT_EXCLUDE_CRITERION = 68,
                            CANNOT_REMOVE_CRITERION = 69,
                            INVALID_PRODUCT_BIDDING_CATEGORY = 76,
                            MISSING_SHOPPING_SETTING = 77,
                            INVALID_MATCHING_FUNCTION = 78,
                            LOCATION_FILTER_NOT_ALLOWED = 79,
                            INVALID_FEED_FOR_LOCATION_FILTER = 98,
                            LOCATION_FILTER_INVALID = 80,
                            CANNOT_SET_GEO_TARGET_CONSTANTS_WITH_FEED_ITEM_SETS = 123,
                            CANNOT_SET_BOTH_ASSET_SET_AND_FEED = 140,
                            CANNOT_SET_FEED_OR_FEED_ITEM_SETS_FOR_CUSTOMER = 142,
                            CANNOT_SET_ASSET_SET_FIELD_FOR_CUSTOMER = 150,
                            CANNOT_SET_GEO_TARGET_CONSTANTS_WITH_ASSET_SETS = 143,
                            CANNOT_SET_ASSET_SETS_WITH_FEED_ITEM_SETS = 144,
                            INVALID_LOCATION_GROUP_ASSET_SET = 141,
                            INVALID_LOCATION_GROUP_RADIUS = 124,
                            INVALID_LOCATION_GROUP_RADIUS_UNIT = 125,
                            CANNOT_ATTACH_CRITERIA_AT_CAMPAIGN_AND_ADGROUP = 81,
                            HOTEL_LENGTH_OF_STAY_OVERLAPS_WITH_EXISTING_CRITERION = 82,
                            HOTEL_ADVANCE_BOOKING_WINDOW_OVERLAPS_WITH_EXISTING_CRITERION = 83,
                            FIELD_INCOMPATIBLE_WITH_NEGATIVE_TARGETING = 84,
                            INVALID_WEBPAGE_CONDITION = 85,
                            INVALID_WEBPAGE_CONDITION_URL = 86,
                            WEBPAGE_CONDITION_URL_CANNOT_BE_EMPTY = 87,
                            WEBPAGE_CONDITION_URL_UNSUPPORTED_PROTOCOL = 88,
                            WEBPAGE_CONDITION_URL_CANNOT_BE_IP_ADDRESS = 89,
                            WEBPAGE_CONDITION_URL_DOMAIN_NOT_CONSISTENT_WITH_CAMPAIGN_SETTING = 90,
                            WEBPAGE_CONDITION_URL_CANNOT_BE_PUBLIC_SUFFIX = 91,
                            WEBPAGE_CONDITION_URL_INVALID_PUBLIC_SUFFIX = 92,
                            WEBPAGE_CONDITION_URL_VALUE_TRACK_VALUE_NOT_SUPPORTED = 93,
                            WEBPAGE_CRITERION_URL_EQUALS_CAN_HAVE_ONLY_ONE_CONDITION = 94,
                            WEBPAGE_CRITERION_NOT_SUPPORTED_ON_NON_DSA_AD_GROUP = 95,
                            CANNOT_TARGET_USER_LIST_FOR_SMART_DISPLAY_CAMPAIGNS = 99,
                            CANNOT_TARGET_PLACEMENTS_FOR_SEARCH_CAMPAIGNS = 126,
                            LISTING_SCOPE_TOO_MANY_DIMENSION_TYPES = 100,
                            LISTING_SCOPE_TOO_MANY_IN_OPERATORS = 101,
                            LISTING_SCOPE_IN_OPERATOR_NOT_SUPPORTED = 102,
                            DUPLICATE_LISTING_DIMENSION_TYPE = 103,
                            DUPLICATE_LISTING_DIMENSION_VALUE = 104,
                            CANNOT_SET_BIDS_ON_LISTING_GROUP_SUBDIVISION = 105,
                            LISTING_GROUP_ERROR_IN_ANOTHER_OPERATION = 169,
                            INVALID_LISTING_GROUP_HIERARCHY = 106,
                            LISTING_GROUP_TREE_WAS_INVALID_BEFORE_MUTATION = 170,
                            LISTING_GROUP_UNIT_CANNOT_HAVE_CHILDREN = 107,
                            LISTING_GROUP_SUBDIVISION_REQUIRES_OTHERS_CASE = 108,
                            LISTING_GROUP_REQUIRES_SAME_DIMENSION_TYPE_AS_SIBLINGS = 109,
                            LISTING_GROUP_ALREADY_EXISTS = 110,
                            LISTING_GROUP_DOES_NOT_EXIST = 111,
                            LISTING_GROUP_CANNOT_BE_REMOVED = 112,
                            INVALID_LISTING_GROUP_TYPE = 113,
                            LISTING_GROUP_ADD_MAY_ONLY_USE_TEMP_ID = 114,
                            LISTING_SCOPE_TOO_LONG = 115,
                            LISTING_SCOPE_TOO_MANY_DIMENSIONS = 116,
                            LISTING_GROUP_TOO_LONG = 117,
                            LISTING_GROUP_TREE_TOO_DEEP = 118,
                            INVALID_LISTING_DIMENSION = 119,
                            INVALID_LISTING_DIMENSION_TYPE = 120,
                            ADVERTISER_NOT_ON_ALLOWLIST_FOR_COMBINED_AUDIENCE_ON_DISPLAY = 127,
                            CANNOT_TARGET_REMOVED_COMBINED_AUDIENCE = 128,
                            INVALID_COMBINED_AUDIENCE_ID = 129,
                            CANNOT_TARGET_REMOVED_CUSTOM_AUDIENCE = 130,
                            HOTEL_CHECK_IN_DATE_RANGE_OVERLAPS_WITH_EXISTING_CRITERION = 131,
                            HOTEL_CHECK_IN_DATE_RANGE_START_DATE_TOO_EARLY = 132,
                            HOTEL_CHECK_IN_DATE_RANGE_END_DATE_TOO_LATE = 133,
                            HOTEL_CHECK_IN_DATE_RANGE_REVERSED = 134,
                            BROAD_MATCH_MODIFIER_KEYWORD_NOT_ALLOWED = 135,
                            ONE_AUDIENCE_ALLOWED_PER_ASSET_GROUP = 136,
                            AUDIENCE_NOT_ELIGIBLE_FOR_CAMPAIGN_TYPE = 137,
                            AUDIENCE_NOT_ALLOWED_TO_ATTACH_WHEN_AUDIENCE_GROUPED_SET_TO_FALSE = 138,
                            CANNOT_TARGET_CUSTOMER_MATCH_USER_LIST = 139,
                            NEGATIVE_KEYWORD_SHARED_SET_DOES_NOT_EXIST = 145,
                            CANNOT_ADD_REMOVED_NEGATIVE_KEYWORD_SHARED_SET = 146,
                            CANNOT_HAVE_MULTIPLE_NEGATIVE_KEYWORD_LIST_PER_ACCOUNT = 147,
                            CUSTOMER_CANNOT_ADD_CRITERION_OF_THIS_TYPE = 149,
                            CANNOT_TARGET_SIMILAR_USER_LIST = 151,
                            CANNOT_ADD_AUDIENCE_SEGMENT_CRITERION_WHEN_AUDIENCE_GROUPED_IS_SET = 152,
                            ONE_AUDIENCE_ALLOWED_PER_AD_GROUP = 153,
                            INVALID_DETAILED_DEMOGRAPHIC = 154,
                            CANNOT_RECOGNIZE_BRAND = 155,
                            BRAND_SHARED_SET_DOES_NOT_EXIST = 156,
                            CANNOT_ADD_REMOVED_BRAND_SHARED_SET = 157,
                            ONLY_EXCLUSION_BRAND_LIST_ALLOWED_FOR_CAMPAIGN_TYPE = 158,
                            LOCATION_TARGETING_NOT_ELIGIBLE_FOR_RESTRICTED_CAMPAIGN = 166,
                            ONLY_INCLUSION_BRAND_LIST_ALLOWED_FOR_AD_GROUPS = 171,
                            CANNOT_ADD_REMOVED_PLACEMENT_LIST_SHARED_SET = 172,
                            PLACEMENT_LIST_SHARED_SET_DOES_NOT_EXIST = 173,
                            AI_MAX_MUST_BE_ENABLED = 174,
                            NOT_AVAILABLE_FOR_AI_MAX_CAMPAIGNS = 175,
                            MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION = 176,
                            INVALID_CAMPAIGN_TYPE_FOR_THIRD_PARTY_PARTNER_DATA_LIST = 177,
                            CANNOT_ADD_USER_LIST_PENDING_PRIVACY_REVIEW = 178,
                            VERTICAL_ADS_ITEM_GROUP_RULE_LIST_DOES_NOT_EXIST = 179,
                            CANNOT_ADD_REMOVED_VERTICAL_ADS_ITEM_GROUP_RULE_LIST_SHARED_SET = 180,
                            VERTICAL_ADS_ITEM_GROUP_RULE_LIST_NOT_SUPPORTED_FOR_CAMPAIGNS_WITHOUT_ENABLED_TRAVEL_FEED = 181,
                            VERTICAL_ADS_ITEM_GROUP_RULE_LIST_NOT_SUPPORTED_FOR_CAMPAIGNS_WITHOUT_AI_MAX = 182,
                            VERTICAL_ADS_ITEM_GROUP_RULE_NOT_SUPPORTED_FOR_THE_VERTICAL_TYPE = 183
                        }
                    }

                    /** Properties of a CurrencyCodeErrorEnum. */
                    interface ICurrencyCodeErrorEnum {
                    }

                    /** Represents a CurrencyCodeErrorEnum. */
                    class CurrencyCodeErrorEnum implements ICurrencyCodeErrorEnum {

                        /**
                         * Constructs a new CurrencyCodeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICurrencyCodeErrorEnum);

                        /**
                         * Creates a new CurrencyCodeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CurrencyCodeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICurrencyCodeErrorEnum): google.ads.googleads.v23.errors.CurrencyCodeErrorEnum;

                        /**
                         * Encodes the specified CurrencyCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CurrencyCodeErrorEnum.verify|verify} messages.
                         * @param message CurrencyCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICurrencyCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CurrencyCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CurrencyCodeErrorEnum.verify|verify} messages.
                         * @param message CurrencyCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICurrencyCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CurrencyCodeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CurrencyCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CurrencyCodeErrorEnum;

                        /**
                         * Decodes a CurrencyCodeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CurrencyCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CurrencyCodeErrorEnum;

                        /**
                         * Verifies a CurrencyCodeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CurrencyCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CurrencyCodeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CurrencyCodeErrorEnum;

                        /**
                         * Creates a plain object from a CurrencyCodeErrorEnum message. Also converts values to other types if specified.
                         * @param message CurrencyCodeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CurrencyCodeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CurrencyCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CurrencyCodeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CurrencyCodeErrorEnum {

                        /** CurrencyCodeError enum. */
                        enum CurrencyCodeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNSUPPORTED = 2
                        }
                    }

                    /** Properties of a CurrencyErrorEnum. */
                    interface ICurrencyErrorEnum {
                    }

                    /** Represents a CurrencyErrorEnum. */
                    class CurrencyErrorEnum implements ICurrencyErrorEnum {

                        /**
                         * Constructs a new CurrencyErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICurrencyErrorEnum);

                        /**
                         * Creates a new CurrencyErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CurrencyErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICurrencyErrorEnum): google.ads.googleads.v23.errors.CurrencyErrorEnum;

                        /**
                         * Encodes the specified CurrencyErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CurrencyErrorEnum.verify|verify} messages.
                         * @param message CurrencyErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICurrencyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CurrencyErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CurrencyErrorEnum.verify|verify} messages.
                         * @param message CurrencyErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICurrencyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CurrencyErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CurrencyErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CurrencyErrorEnum;

                        /**
                         * Decodes a CurrencyErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CurrencyErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CurrencyErrorEnum;

                        /**
                         * Verifies a CurrencyErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CurrencyErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CurrencyErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CurrencyErrorEnum;

                        /**
                         * Creates a plain object from a CurrencyErrorEnum message. Also converts values to other types if specified.
                         * @param message CurrencyErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CurrencyErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CurrencyErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CurrencyErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CurrencyErrorEnum {

                        /** CurrencyError enum. */
                        enum CurrencyError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VALUE_NOT_MULTIPLE_OF_BILLABLE_UNIT = 2
                        }
                    }

                    /** Properties of a CustomAudienceErrorEnum. */
                    interface ICustomAudienceErrorEnum {
                    }

                    /** Represents a CustomAudienceErrorEnum. */
                    class CustomAudienceErrorEnum implements ICustomAudienceErrorEnum {

                        /**
                         * Constructs a new CustomAudienceErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomAudienceErrorEnum);

                        /**
                         * Creates a new CustomAudienceErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomAudienceErrorEnum): google.ads.googleads.v23.errors.CustomAudienceErrorEnum;

                        /**
                         * Encodes the specified CustomAudienceErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomAudienceErrorEnum.verify|verify} messages.
                         * @param message CustomAudienceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomAudienceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomAudienceErrorEnum.verify|verify} messages.
                         * @param message CustomAudienceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomAudienceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomAudienceErrorEnum;

                        /**
                         * Decodes a CustomAudienceErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomAudienceErrorEnum;

                        /**
                         * Verifies a CustomAudienceErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomAudienceErrorEnum;

                        /**
                         * Creates a plain object from a CustomAudienceErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomAudienceErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomAudienceErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomAudienceErrorEnum {

                        /** CustomAudienceError enum. */
                        enum CustomAudienceError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NAME_ALREADY_USED = 2,
                            CANNOT_REMOVE_WHILE_IN_USE = 3,
                            RESOURCE_ALREADY_REMOVED = 4,
                            MEMBER_TYPE_AND_PARAMETER_ALREADY_EXISTED = 5,
                            INVALID_MEMBER_TYPE = 6,
                            MEMBER_TYPE_AND_VALUE_DOES_NOT_MATCH = 7,
                            POLICY_VIOLATION = 8,
                            INVALID_TYPE_CHANGE = 9
                        }
                    }

                    /** Properties of a CustomConversionGoalErrorEnum. */
                    interface ICustomConversionGoalErrorEnum {
                    }

                    /** Represents a CustomConversionGoalErrorEnum. */
                    class CustomConversionGoalErrorEnum implements ICustomConversionGoalErrorEnum {

                        /**
                         * Constructs a new CustomConversionGoalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomConversionGoalErrorEnum);

                        /**
                         * Creates a new CustomConversionGoalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomConversionGoalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomConversionGoalErrorEnum): google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum;

                        /**
                         * Encodes the specified CustomConversionGoalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum.verify|verify} messages.
                         * @param message CustomConversionGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomConversionGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomConversionGoalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum.verify|verify} messages.
                         * @param message CustomConversionGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomConversionGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomConversionGoalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomConversionGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum;

                        /**
                         * Decodes a CustomConversionGoalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomConversionGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum;

                        /**
                         * Verifies a CustomConversionGoalErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomConversionGoalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomConversionGoalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum;

                        /**
                         * Creates a plain object from a CustomConversionGoalErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomConversionGoalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomConversionGoalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomConversionGoalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomConversionGoalErrorEnum {

                        /** CustomConversionGoalError enum. */
                        enum CustomConversionGoalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_CONVERSION_ACTION = 2,
                            CONVERSION_ACTION_NOT_ENABLED = 3,
                            CANNOT_REMOVE_LINKED_CUSTOM_CONVERSION_GOAL = 4,
                            CUSTOM_GOAL_DUPLICATE_NAME = 5,
                            DUPLICATE_CONVERSION_ACTION_LIST = 6,
                            NON_BIDDABLE_CONVERSION_ACTION_NOT_ELIGIBLE_FOR_CUSTOM_GOAL = 7
                        }
                    }

                    /** Properties of a CustomInterestErrorEnum. */
                    interface ICustomInterestErrorEnum {
                    }

                    /** Represents a CustomInterestErrorEnum. */
                    class CustomInterestErrorEnum implements ICustomInterestErrorEnum {

                        /**
                         * Constructs a new CustomInterestErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomInterestErrorEnum);

                        /**
                         * Creates a new CustomInterestErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterestErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomInterestErrorEnum): google.ads.googleads.v23.errors.CustomInterestErrorEnum;

                        /**
                         * Encodes the specified CustomInterestErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomInterestErrorEnum.verify|verify} messages.
                         * @param message CustomInterestErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomInterestErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomInterestErrorEnum.verify|verify} messages.
                         * @param message CustomInterestErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomInterestErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomInterestErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomInterestErrorEnum;

                        /**
                         * Decodes a CustomInterestErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomInterestErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomInterestErrorEnum;

                        /**
                         * Verifies a CustomInterestErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomInterestErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomInterestErrorEnum;

                        /**
                         * Creates a plain object from a CustomInterestErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomInterestErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomInterestErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomInterestErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomInterestErrorEnum {

                        /** CustomInterestError enum. */
                        enum CustomInterestError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NAME_ALREADY_USED = 2,
                            CUSTOM_INTEREST_MEMBER_ID_AND_TYPE_PARAMETER_NOT_PRESENT_IN_REMOVE = 3,
                            TYPE_AND_PARAMETER_NOT_FOUND = 4,
                            TYPE_AND_PARAMETER_ALREADY_EXISTED = 5,
                            INVALID_CUSTOM_INTEREST_MEMBER_TYPE = 6,
                            CANNOT_REMOVE_WHILE_IN_USE = 7,
                            CANNOT_CHANGE_TYPE = 8
                        }
                    }

                    /** Properties of a CustomerClientLinkErrorEnum. */
                    interface ICustomerClientLinkErrorEnum {
                    }

                    /** Represents a CustomerClientLinkErrorEnum. */
                    class CustomerClientLinkErrorEnum implements ICustomerClientLinkErrorEnum {

                        /**
                         * Constructs a new CustomerClientLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerClientLinkErrorEnum);

                        /**
                         * Creates a new CustomerClientLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerClientLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerClientLinkErrorEnum): google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum;

                        /**
                         * Encodes the specified CustomerClientLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum.verify|verify} messages.
                         * @param message CustomerClientLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerClientLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClientLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum.verify|verify} messages.
                         * @param message CustomerClientLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerClientLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClientLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerClientLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum;

                        /**
                         * Decodes a CustomerClientLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerClientLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum;

                        /**
                         * Verifies a CustomerClientLinkErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClientLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerClientLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum;

                        /**
                         * Creates a plain object from a CustomerClientLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerClientLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClientLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerClientLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerClientLinkErrorEnum {

                        /** CustomerClientLinkError enum. */
                        enum CustomerClientLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CLIENT_ALREADY_INVITED_BY_THIS_MANAGER = 2,
                            CLIENT_ALREADY_MANAGED_IN_HIERARCHY = 3,
                            CYCLIC_LINK_NOT_ALLOWED = 4,
                            CUSTOMER_HAS_TOO_MANY_ACCOUNTS = 5,
                            CLIENT_HAS_TOO_MANY_INVITATIONS = 6,
                            CANNOT_HIDE_OR_UNHIDE_MANAGER_ACCOUNTS = 7,
                            CUSTOMER_HAS_TOO_MANY_ACCOUNTS_AT_MANAGER = 8,
                            CLIENT_HAS_TOO_MANY_MANAGERS = 9
                        }
                    }

                    /** Properties of a CustomerCustomizerErrorEnum. */
                    interface ICustomerCustomizerErrorEnum {
                    }

                    /** Represents a CustomerCustomizerErrorEnum. */
                    class CustomerCustomizerErrorEnum implements ICustomerCustomizerErrorEnum {

                        /**
                         * Constructs a new CustomerCustomizerErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerCustomizerErrorEnum);

                        /**
                         * Creates a new CustomerCustomizerErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerCustomizerErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerCustomizerErrorEnum): google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum;

                        /**
                         * Encodes the specified CustomerCustomizerErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum.verify|verify} messages.
                         * @param message CustomerCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerCustomizerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum.verify|verify} messages.
                         * @param message CustomerCustomizerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerCustomizerErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum;

                        /**
                         * Decodes a CustomerCustomizerErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerCustomizerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum;

                        /**
                         * Verifies a CustomerCustomizerErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerCustomizerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerCustomizerErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum;

                        /**
                         * Creates a plain object from a CustomerCustomizerErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerCustomizerErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerCustomizerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerCustomizerErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerCustomizerErrorEnum {

                        /** CustomerCustomizerError enum. */
                        enum CustomerCustomizerError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1
                        }
                    }

                    /** Properties of a CustomerErrorEnum. */
                    interface ICustomerErrorEnum {
                    }

                    /** Represents a CustomerErrorEnum. */
                    class CustomerErrorEnum implements ICustomerErrorEnum {

                        /**
                         * Constructs a new CustomerErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerErrorEnum);

                        /**
                         * Creates a new CustomerErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerErrorEnum): google.ads.googleads.v23.errors.CustomerErrorEnum;

                        /**
                         * Encodes the specified CustomerErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerErrorEnum.verify|verify} messages.
                         * @param message CustomerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerErrorEnum.verify|verify} messages.
                         * @param message CustomerErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerErrorEnum;

                        /**
                         * Decodes a CustomerErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerErrorEnum;

                        /**
                         * Verifies a CustomerErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerErrorEnum;

                        /**
                         * Creates a plain object from a CustomerErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerErrorEnum {

                        /** CustomerError enum. */
                        enum CustomerError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STATUS_CHANGE_DISALLOWED = 2,
                            ACCOUNT_NOT_SET_UP = 3,
                            CREATION_DENIED_FOR_POLICY_VIOLATION = 4,
                            CREATION_DENIED_INELIGIBLE_MCC = 5
                        }
                    }

                    /** Properties of a CustomerFeedErrorEnum. */
                    interface ICustomerFeedErrorEnum {
                    }

                    /** Represents a CustomerFeedErrorEnum. */
                    class CustomerFeedErrorEnum implements ICustomerFeedErrorEnum {

                        /**
                         * Constructs a new CustomerFeedErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerFeedErrorEnum);

                        /**
                         * Creates a new CustomerFeedErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerFeedErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerFeedErrorEnum): google.ads.googleads.v23.errors.CustomerFeedErrorEnum;

                        /**
                         * Encodes the specified CustomerFeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerFeedErrorEnum.verify|verify} messages.
                         * @param message CustomerFeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerFeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerFeedErrorEnum.verify|verify} messages.
                         * @param message CustomerFeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerFeedErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerFeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerFeedErrorEnum;

                        /**
                         * Decodes a CustomerFeedErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerFeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerFeedErrorEnum;

                        /**
                         * Verifies a CustomerFeedErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerFeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerFeedErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerFeedErrorEnum;

                        /**
                         * Creates a plain object from a CustomerFeedErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerFeedErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerFeedErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerFeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerFeedErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerFeedErrorEnum {

                        /** CustomerFeedError enum. */
                        enum CustomerFeedError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FEED_ALREADY_EXISTS_FOR_PLACEHOLDER_TYPE = 2,
                            CANNOT_CREATE_FOR_REMOVED_FEED = 3,
                            CANNOT_CREATE_ALREADY_EXISTING_CUSTOMER_FEED = 4,
                            CANNOT_MODIFY_REMOVED_CUSTOMER_FEED = 5,
                            INVALID_PLACEHOLDER_TYPE = 6,
                            MISSING_FEEDMAPPING_FOR_PLACEHOLDER_TYPE = 7,
                            PLACEHOLDER_TYPE_NOT_ALLOWED_ON_CUSTOMER_FEED = 8
                        }
                    }

                    /** Properties of a CustomerLifecycleGoalErrorEnum. */
                    interface ICustomerLifecycleGoalErrorEnum {
                    }

                    /** Represents a CustomerLifecycleGoalErrorEnum. */
                    class CustomerLifecycleGoalErrorEnum implements ICustomerLifecycleGoalErrorEnum {

                        /**
                         * Constructs a new CustomerLifecycleGoalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerLifecycleGoalErrorEnum);

                        /**
                         * Creates a new CustomerLifecycleGoalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLifecycleGoalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerLifecycleGoalErrorEnum): google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum;

                        /**
                         * Encodes the specified CustomerLifecycleGoalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum.verify|verify} messages.
                         * @param message CustomerLifecycleGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerLifecycleGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLifecycleGoalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum.verify|verify} messages.
                         * @param message CustomerLifecycleGoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerLifecycleGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLifecycleGoalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerLifecycleGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum;

                        /**
                         * Decodes a CustomerLifecycleGoalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerLifecycleGoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum;

                        /**
                         * Verifies a CustomerLifecycleGoalErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLifecycleGoalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerLifecycleGoalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum;

                        /**
                         * Creates a plain object from a CustomerLifecycleGoalErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerLifecycleGoalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLifecycleGoalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerLifecycleGoalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerLifecycleGoalErrorEnum {

                        /** CustomerLifecycleGoalError enum. */
                        enum CustomerLifecycleGoalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER_ACQUISITION_VALUE_MISSING = 2,
                            CUSTOMER_ACQUISITION_INVALID_VALUE = 3,
                            CUSTOMER_ACQUISITION_INVALID_HIGH_LIFETIME_VALUE = 4,
                            CUSTOMER_ACQUISITION_VALUE_CANNOT_BE_CLEARED = 5,
                            CUSTOMER_ACQUISITION_HIGH_LIFETIME_VALUE_CANNOT_BE_CLEARED = 6,
                            INVALID_EXISTING_USER_LIST = 7,
                            INVALID_HIGH_LIFETIME_VALUE_USER_LIST = 8
                        }
                    }

                    /** Properties of a CustomerManagerLinkErrorEnum. */
                    interface ICustomerManagerLinkErrorEnum {
                    }

                    /** Represents a CustomerManagerLinkErrorEnum. */
                    class CustomerManagerLinkErrorEnum implements ICustomerManagerLinkErrorEnum {

                        /**
                         * Constructs a new CustomerManagerLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerManagerLinkErrorEnum);

                        /**
                         * Creates a new CustomerManagerLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerManagerLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerManagerLinkErrorEnum): google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum;

                        /**
                         * Encodes the specified CustomerManagerLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum.verify|verify} messages.
                         * @param message CustomerManagerLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerManagerLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerManagerLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum.verify|verify} messages.
                         * @param message CustomerManagerLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerManagerLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerManagerLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerManagerLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum;

                        /**
                         * Decodes a CustomerManagerLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerManagerLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum;

                        /**
                         * Verifies a CustomerManagerLinkErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerManagerLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerManagerLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum;

                        /**
                         * Creates a plain object from a CustomerManagerLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerManagerLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerManagerLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerManagerLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerManagerLinkErrorEnum {

                        /** CustomerManagerLinkError enum. */
                        enum CustomerManagerLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_PENDING_INVITE = 2,
                            SAME_CLIENT_MORE_THAN_ONCE_PER_CALL = 3,
                            MANAGER_HAS_MAX_NUMBER_OF_LINKED_ACCOUNTS = 4,
                            CANNOT_UNLINK_ACCOUNT_WITHOUT_ACTIVE_USER = 5,
                            CANNOT_REMOVE_LAST_CLIENT_ACCOUNT_OWNER = 6,
                            CANNOT_CHANGE_ROLE_BY_NON_ACCOUNT_OWNER = 7,
                            CANNOT_CHANGE_ROLE_FOR_NON_ACTIVE_LINK_ACCOUNT = 8,
                            DUPLICATE_CHILD_FOUND = 9,
                            TEST_ACCOUNT_LINKS_TOO_MANY_CHILD_ACCOUNTS = 10
                        }
                    }

                    /** Properties of a CustomerSkAdNetworkConversionValueSchemaErrorEnum. */
                    interface ICustomerSkAdNetworkConversionValueSchemaErrorEnum {
                    }

                    /** Represents a CustomerSkAdNetworkConversionValueSchemaErrorEnum. */
                    class CustomerSkAdNetworkConversionValueSchemaErrorEnum implements ICustomerSkAdNetworkConversionValueSchemaErrorEnum {

                        /**
                         * Constructs a new CustomerSkAdNetworkConversionValueSchemaErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerSkAdNetworkConversionValueSchemaErrorEnum);

                        /**
                         * Creates a new CustomerSkAdNetworkConversionValueSchemaErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerSkAdNetworkConversionValueSchemaErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerSkAdNetworkConversionValueSchemaErrorEnum): google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum;

                        /**
                         * Encodes the specified CustomerSkAdNetworkConversionValueSchemaErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum.verify|verify} messages.
                         * @param message CustomerSkAdNetworkConversionValueSchemaErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerSkAdNetworkConversionValueSchemaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerSkAdNetworkConversionValueSchemaErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum.verify|verify} messages.
                         * @param message CustomerSkAdNetworkConversionValueSchemaErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerSkAdNetworkConversionValueSchemaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerSkAdNetworkConversionValueSchemaErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerSkAdNetworkConversionValueSchemaErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum;

                        /**
                         * Decodes a CustomerSkAdNetworkConversionValueSchemaErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerSkAdNetworkConversionValueSchemaErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum;

                        /**
                         * Verifies a CustomerSkAdNetworkConversionValueSchemaErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerSkAdNetworkConversionValueSchemaErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerSkAdNetworkConversionValueSchemaErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum;

                        /**
                         * Creates a plain object from a CustomerSkAdNetworkConversionValueSchemaErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerSkAdNetworkConversionValueSchemaErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerSkAdNetworkConversionValueSchemaErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerSkAdNetworkConversionValueSchemaErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerSkAdNetworkConversionValueSchemaErrorEnum {

                        /** CustomerSkAdNetworkConversionValueSchemaError enum. */
                        enum CustomerSkAdNetworkConversionValueSchemaError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_LINK_ID = 2,
                            INVALID_APP_ID = 3,
                            INVALID_SCHEMA = 4,
                            LINK_CODE_NOT_FOUND = 5,
                            INVALID_EVENT_COUNTER = 7,
                            INVALID_EVENT_NAME = 8
                        }
                    }

                    /** Properties of a CustomerUserAccessErrorEnum. */
                    interface ICustomerUserAccessErrorEnum {
                    }

                    /** Represents a CustomerUserAccessErrorEnum. */
                    class CustomerUserAccessErrorEnum implements ICustomerUserAccessErrorEnum {

                        /**
                         * Constructs a new CustomerUserAccessErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomerUserAccessErrorEnum);

                        /**
                         * Creates a new CustomerUserAccessErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerUserAccessErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomerUserAccessErrorEnum): google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum;

                        /**
                         * Encodes the specified CustomerUserAccessErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum.verify|verify} messages.
                         * @param message CustomerUserAccessErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomerUserAccessErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum.verify|verify} messages.
                         * @param message CustomerUserAccessErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomerUserAccessErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerUserAccessErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum;

                        /**
                         * Decodes a CustomerUserAccessErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerUserAccessErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum;

                        /**
                         * Verifies a CustomerUserAccessErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerUserAccessErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum;

                        /**
                         * Creates a plain object from a CustomerUserAccessErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomerUserAccessErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerUserAccessErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerUserAccessErrorEnum {

                        /** CustomerUserAccessError enum. */
                        enum CustomerUserAccessError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_USER_ID = 2,
                            REMOVAL_DISALLOWED = 3,
                            DISALLOWED_ACCESS_ROLE = 4,
                            LAST_ADMIN_USER_OF_SERVING_CUSTOMER = 5,
                            LAST_ADMIN_USER_OF_MANAGER = 6
                        }
                    }

                    /** Properties of a CustomizerAttributeErrorEnum. */
                    interface ICustomizerAttributeErrorEnum {
                    }

                    /** Represents a CustomizerAttributeErrorEnum. */
                    class CustomizerAttributeErrorEnum implements ICustomizerAttributeErrorEnum {

                        /**
                         * Constructs a new CustomizerAttributeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ICustomizerAttributeErrorEnum);

                        /**
                         * Creates a new CustomizerAttributeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomizerAttributeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ICustomizerAttributeErrorEnum): google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum;

                        /**
                         * Encodes the specified CustomizerAttributeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum.verify|verify} messages.
                         * @param message CustomizerAttributeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ICustomizerAttributeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomizerAttributeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum.verify|verify} messages.
                         * @param message CustomizerAttributeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ICustomizerAttributeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomizerAttributeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomizerAttributeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum;

                        /**
                         * Decodes a CustomizerAttributeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomizerAttributeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum;

                        /**
                         * Verifies a CustomizerAttributeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomizerAttributeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomizerAttributeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum;

                        /**
                         * Creates a plain object from a CustomizerAttributeErrorEnum message. Also converts values to other types if specified.
                         * @param message CustomizerAttributeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomizerAttributeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomizerAttributeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomizerAttributeErrorEnum {

                        /** CustomizerAttributeError enum. */
                        enum CustomizerAttributeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_CUSTOMIZER_ATTRIBUTE_NAME = 2
                        }
                    }

                    /** Properties of a DataLinkErrorEnum. */
                    interface IDataLinkErrorEnum {
                    }

                    /** Represents a DataLinkErrorEnum. */
                    class DataLinkErrorEnum implements IDataLinkErrorEnum {

                        /**
                         * Constructs a new DataLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IDataLinkErrorEnum);

                        /**
                         * Creates a new DataLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DataLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IDataLinkErrorEnum): google.ads.googleads.v23.errors.DataLinkErrorEnum;

                        /**
                         * Encodes the specified DataLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.DataLinkErrorEnum.verify|verify} messages.
                         * @param message DataLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IDataLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.DataLinkErrorEnum.verify|verify} messages.
                         * @param message DataLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IDataLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DataLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.DataLinkErrorEnum;

                        /**
                         * Decodes a DataLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DataLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.DataLinkErrorEnum;

                        /**
                         * Verifies a DataLinkErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DataLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.DataLinkErrorEnum;

                        /**
                         * Creates a plain object from a DataLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message DataLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.DataLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DataLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DataLinkErrorEnum {

                        /** DataLinkError enum. */
                        enum DataLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            YOUTUBE_CHANNEL_ID_INVALID = 2,
                            YOUTUBE_VIDEO_ID_INVALID = 3,
                            YOUTUBE_VIDEO_FROM_DIFFERENT_CHANNEL = 4,
                            PERMISSION_DENIED = 5,
                            INVALID_STATUS = 6,
                            INVALID_UPDATE_STATUS = 7,
                            INVALID_RESOURCE_NAME = 8
                        }
                    }

                    /** Properties of a DatabaseErrorEnum. */
                    interface IDatabaseErrorEnum {
                    }

                    /** Represents a DatabaseErrorEnum. */
                    class DatabaseErrorEnum implements IDatabaseErrorEnum {

                        /**
                         * Constructs a new DatabaseErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IDatabaseErrorEnum);

                        /**
                         * Creates a new DatabaseErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DatabaseErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IDatabaseErrorEnum): google.ads.googleads.v23.errors.DatabaseErrorEnum;

                        /**
                         * Encodes the specified DatabaseErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.DatabaseErrorEnum.verify|verify} messages.
                         * @param message DatabaseErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IDatabaseErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DatabaseErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.DatabaseErrorEnum.verify|verify} messages.
                         * @param message DatabaseErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IDatabaseErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DatabaseErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DatabaseErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.DatabaseErrorEnum;

                        /**
                         * Decodes a DatabaseErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DatabaseErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.DatabaseErrorEnum;

                        /**
                         * Verifies a DatabaseErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DatabaseErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DatabaseErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.DatabaseErrorEnum;

                        /**
                         * Creates a plain object from a DatabaseErrorEnum message. Also converts values to other types if specified.
                         * @param message DatabaseErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.DatabaseErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DatabaseErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DatabaseErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DatabaseErrorEnum {

                        /** DatabaseError enum. */
                        enum DatabaseError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONCURRENT_MODIFICATION = 2,
                            DATA_CONSTRAINT_VIOLATION = 3,
                            REQUEST_TOO_LARGE = 4
                        }
                    }

                    /** Properties of a DateErrorEnum. */
                    interface IDateErrorEnum {
                    }

                    /** Represents a DateErrorEnum. */
                    class DateErrorEnum implements IDateErrorEnum {

                        /**
                         * Constructs a new DateErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IDateErrorEnum);

                        /**
                         * Creates a new DateErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DateErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IDateErrorEnum): google.ads.googleads.v23.errors.DateErrorEnum;

                        /**
                         * Encodes the specified DateErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.DateErrorEnum.verify|verify} messages.
                         * @param message DateErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IDateErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DateErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.DateErrorEnum.verify|verify} messages.
                         * @param message DateErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IDateErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DateErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DateErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.DateErrorEnum;

                        /**
                         * Decodes a DateErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DateErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.DateErrorEnum;

                        /**
                         * Verifies a DateErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DateErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DateErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.DateErrorEnum;

                        /**
                         * Creates a plain object from a DateErrorEnum message. Also converts values to other types if specified.
                         * @param message DateErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.DateErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DateErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DateErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DateErrorEnum {

                        /** DateError enum. */
                        enum DateError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_FIELD_VALUES_IN_DATE = 2,
                            INVALID_FIELD_VALUES_IN_DATE_TIME = 3,
                            INVALID_STRING_DATE = 4,
                            INVALID_STRING_DATE_TIME_MICROS = 6,
                            INVALID_STRING_DATE_TIME_SECONDS = 11,
                            INVALID_STRING_DATE_TIME_SECONDS_WITH_OFFSET = 12,
                            EARLIER_THAN_MINIMUM_DATE = 7,
                            LATER_THAN_MAXIMUM_DATE = 8,
                            DATE_RANGE_MINIMUM_DATE_LATER_THAN_MAXIMUM_DATE = 9,
                            DATE_RANGE_MINIMUM_AND_MAXIMUM_DATES_BOTH_NULL = 10,
                            DATE_RANGE_ERROR_START_TIME_MUST_BE_THE_START_OF_A_DAY = 13,
                            DATE_RANGE_ERROR_END_TIME_MUST_BE_THE_END_OF_A_DAY = 14
                        }
                    }

                    /** Properties of a DateRangeErrorEnum. */
                    interface IDateRangeErrorEnum {
                    }

                    /** Represents a DateRangeErrorEnum. */
                    class DateRangeErrorEnum implements IDateRangeErrorEnum {

                        /**
                         * Constructs a new DateRangeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IDateRangeErrorEnum);

                        /**
                         * Creates a new DateRangeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DateRangeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IDateRangeErrorEnum): google.ads.googleads.v23.errors.DateRangeErrorEnum;

                        /**
                         * Encodes the specified DateRangeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.DateRangeErrorEnum.verify|verify} messages.
                         * @param message DateRangeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IDateRangeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DateRangeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.DateRangeErrorEnum.verify|verify} messages.
                         * @param message DateRangeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IDateRangeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DateRangeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DateRangeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.DateRangeErrorEnum;

                        /**
                         * Decodes a DateRangeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DateRangeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.DateRangeErrorEnum;

                        /**
                         * Verifies a DateRangeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DateRangeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DateRangeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.DateRangeErrorEnum;

                        /**
                         * Creates a plain object from a DateRangeErrorEnum message. Also converts values to other types if specified.
                         * @param message DateRangeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.DateRangeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DateRangeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DateRangeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DateRangeErrorEnum {

                        /** DateRangeError enum. */
                        enum DateRangeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_DATE = 2,
                            START_DATE_AFTER_END_DATE = 3,
                            CANNOT_SET_DATE_TO_PAST = 4,
                            AFTER_MAXIMUM_ALLOWABLE_DATE = 5,
                            CANNOT_MODIFY_START_DATE_IF_ALREADY_STARTED = 6
                        }
                    }

                    /** Properties of a DistinctErrorEnum. */
                    interface IDistinctErrorEnum {
                    }

                    /** Represents a DistinctErrorEnum. */
                    class DistinctErrorEnum implements IDistinctErrorEnum {

                        /**
                         * Constructs a new DistinctErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IDistinctErrorEnum);

                        /**
                         * Creates a new DistinctErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DistinctErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IDistinctErrorEnum): google.ads.googleads.v23.errors.DistinctErrorEnum;

                        /**
                         * Encodes the specified DistinctErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.DistinctErrorEnum.verify|verify} messages.
                         * @param message DistinctErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IDistinctErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DistinctErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.DistinctErrorEnum.verify|verify} messages.
                         * @param message DistinctErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IDistinctErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DistinctErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DistinctErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.DistinctErrorEnum;

                        /**
                         * Decodes a DistinctErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DistinctErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.DistinctErrorEnum;

                        /**
                         * Verifies a DistinctErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DistinctErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DistinctErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.DistinctErrorEnum;

                        /**
                         * Creates a plain object from a DistinctErrorEnum message. Also converts values to other types if specified.
                         * @param message DistinctErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.DistinctErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DistinctErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DistinctErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DistinctErrorEnum {

                        /** DistinctError enum. */
                        enum DistinctError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_ELEMENT = 2,
                            DUPLICATE_TYPE = 3
                        }
                    }

                    /** Properties of an EnumErrorEnum. */
                    interface IEnumErrorEnum {
                    }

                    /** Represents an EnumErrorEnum. */
                    class EnumErrorEnum implements IEnumErrorEnum {

                        /**
                         * Constructs a new EnumErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IEnumErrorEnum);

                        /**
                         * Creates a new EnumErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EnumErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IEnumErrorEnum): google.ads.googleads.v23.errors.EnumErrorEnum;

                        /**
                         * Encodes the specified EnumErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.EnumErrorEnum.verify|verify} messages.
                         * @param message EnumErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IEnumErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnumErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.EnumErrorEnum.verify|verify} messages.
                         * @param message EnumErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IEnumErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnumErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EnumErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.EnumErrorEnum;

                        /**
                         * Decodes an EnumErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EnumErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.EnumErrorEnum;

                        /**
                         * Verifies an EnumErrorEnum message.
                         * @param message Plain 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 EnumErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EnumErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.EnumErrorEnum;

                        /**
                         * Creates a plain object from an EnumErrorEnum message. Also converts values to other types if specified.
                         * @param message EnumErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.EnumErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnumErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EnumErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace EnumErrorEnum {

                        /** EnumError enum. */
                        enum EnumError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENUM_VALUE_NOT_PERMITTED = 3
                        }
                    }

                    /** Properties of a GoogleAdsFailure. */
                    interface IGoogleAdsFailure {

                        /** GoogleAdsFailure errors */
                        errors?: (google.ads.googleads.v23.errors.IGoogleAdsError[]|null);

                        /** GoogleAdsFailure request_id */
                        request_id?: (string|null);
                    }

                    /** Represents a GoogleAdsFailure. */
                    class GoogleAdsFailure implements IGoogleAdsFailure {

                        /**
                         * Constructs a new GoogleAdsFailure.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IGoogleAdsFailure);

                        /** GoogleAdsFailure errors. */
                        public errors: google.ads.googleads.v23.errors.IGoogleAdsError[];

                        /** GoogleAdsFailure request_id. */
                        public request_id: string;

                        /**
                         * Creates a new GoogleAdsFailure instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsFailure instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IGoogleAdsFailure): google.ads.googleads.v23.errors.GoogleAdsFailure;

                        /**
                         * Encodes the specified GoogleAdsFailure message. Does not implicitly {@link google.ads.googleads.v23.errors.GoogleAdsFailure.verify|verify} messages.
                         * @param message GoogleAdsFailure message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IGoogleAdsFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsFailure message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.GoogleAdsFailure.verify|verify} messages.
                         * @param message GoogleAdsFailure message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IGoogleAdsFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsFailure message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleAdsFailure
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.GoogleAdsFailure;

                        /**
                         * Decodes a GoogleAdsFailure message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsFailure
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.GoogleAdsFailure;

                        /**
                         * Verifies a GoogleAdsFailure message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsFailure message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleAdsFailure
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.GoogleAdsFailure;

                        /**
                         * Creates a plain object from a GoogleAdsFailure message. Also converts values to other types if specified.
                         * @param message GoogleAdsFailure
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.GoogleAdsFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsFailure to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleAdsFailure
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GoogleAdsError. */
                    interface IGoogleAdsError {

                        /** GoogleAdsError error_code */
                        error_code?: (google.ads.googleads.v23.errors.IErrorCode|null);

                        /** GoogleAdsError message */
                        message?: (string|null);

                        /** GoogleAdsError trigger */
                        trigger?: (google.ads.googleads.v23.common.IValue|null);

                        /** GoogleAdsError location */
                        location?: (google.ads.googleads.v23.errors.IErrorLocation|null);

                        /** GoogleAdsError details */
                        details?: (google.ads.googleads.v23.errors.IErrorDetails|null);
                    }

                    /** Represents a GoogleAdsError. */
                    class GoogleAdsError implements IGoogleAdsError {

                        /**
                         * Constructs a new GoogleAdsError.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IGoogleAdsError);

                        /** GoogleAdsError error_code. */
                        public error_code?: (google.ads.googleads.v23.errors.IErrorCode|null);

                        /** GoogleAdsError message. */
                        public message: string;

                        /** GoogleAdsError trigger. */
                        public trigger?: (google.ads.googleads.v23.common.IValue|null);

                        /** GoogleAdsError location. */
                        public location?: (google.ads.googleads.v23.errors.IErrorLocation|null);

                        /** GoogleAdsError details. */
                        public details?: (google.ads.googleads.v23.errors.IErrorDetails|null);

                        /**
                         * Creates a new GoogleAdsError instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsError instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IGoogleAdsError): google.ads.googleads.v23.errors.GoogleAdsError;

                        /**
                         * Encodes the specified GoogleAdsError message. Does not implicitly {@link google.ads.googleads.v23.errors.GoogleAdsError.verify|verify} messages.
                         * @param message GoogleAdsError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IGoogleAdsError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsError message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.GoogleAdsError.verify|verify} messages.
                         * @param message GoogleAdsError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IGoogleAdsError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsError message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleAdsError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.GoogleAdsError;

                        /**
                         * Decodes a GoogleAdsError message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.GoogleAdsError;

                        /**
                         * Verifies a GoogleAdsError message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsError message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleAdsError
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.GoogleAdsError;

                        /**
                         * Creates a plain object from a GoogleAdsError message. Also converts values to other types if specified.
                         * @param message GoogleAdsError
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.GoogleAdsError, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsError to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleAdsError
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ErrorCode. */
                    interface IErrorCode {

                        /** ErrorCode request_error */
                        request_error?: (google.ads.googleads.v23.errors.RequestErrorEnum.RequestError|keyof typeof google.ads.googleads.v23.errors.RequestErrorEnum.RequestError|null);

                        /** ErrorCode bidding_strategy_error */
                        bidding_strategy_error?: (google.ads.googleads.v23.errors.BiddingStrategyErrorEnum.BiddingStrategyError|keyof typeof google.ads.googleads.v23.errors.BiddingStrategyErrorEnum.BiddingStrategyError|null);

                        /** ErrorCode url_field_error */
                        url_field_error?: (google.ads.googleads.v23.errors.UrlFieldErrorEnum.UrlFieldError|keyof typeof google.ads.googleads.v23.errors.UrlFieldErrorEnum.UrlFieldError|null);

                        /** ErrorCode list_operation_error */
                        list_operation_error?: (google.ads.googleads.v23.errors.ListOperationErrorEnum.ListOperationError|keyof typeof google.ads.googleads.v23.errors.ListOperationErrorEnum.ListOperationError|null);

                        /** ErrorCode query_error */
                        query_error?: (google.ads.googleads.v23.errors.QueryErrorEnum.QueryError|keyof typeof google.ads.googleads.v23.errors.QueryErrorEnum.QueryError|null);

                        /** ErrorCode mutate_error */
                        mutate_error?: (google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|keyof typeof google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|null);

                        /** ErrorCode field_mask_error */
                        field_mask_error?: (google.ads.googleads.v23.errors.FieldMaskErrorEnum.FieldMaskError|keyof typeof google.ads.googleads.v23.errors.FieldMaskErrorEnum.FieldMaskError|null);

                        /** ErrorCode authorization_error */
                        authorization_error?: (google.ads.googleads.v23.errors.AuthorizationErrorEnum.AuthorizationError|keyof typeof google.ads.googleads.v23.errors.AuthorizationErrorEnum.AuthorizationError|null);

                        /** ErrorCode internal_error */
                        internal_error?: (google.ads.googleads.v23.errors.InternalErrorEnum.InternalError|keyof typeof google.ads.googleads.v23.errors.InternalErrorEnum.InternalError|null);

                        /** ErrorCode quota_error */
                        quota_error?: (google.ads.googleads.v23.errors.QuotaErrorEnum.QuotaError|keyof typeof google.ads.googleads.v23.errors.QuotaErrorEnum.QuotaError|null);

                        /** ErrorCode ad_error */
                        ad_error?: (google.ads.googleads.v23.errors.AdErrorEnum.AdError|keyof typeof google.ads.googleads.v23.errors.AdErrorEnum.AdError|null);

                        /** ErrorCode ad_group_error */
                        ad_group_error?: (google.ads.googleads.v23.errors.AdGroupErrorEnum.AdGroupError|keyof typeof google.ads.googleads.v23.errors.AdGroupErrorEnum.AdGroupError|null);

                        /** ErrorCode campaign_budget_error */
                        campaign_budget_error?: (google.ads.googleads.v23.errors.CampaignBudgetErrorEnum.CampaignBudgetError|keyof typeof google.ads.googleads.v23.errors.CampaignBudgetErrorEnum.CampaignBudgetError|null);

                        /** ErrorCode campaign_error */
                        campaign_error?: (google.ads.googleads.v23.errors.CampaignErrorEnum.CampaignError|keyof typeof google.ads.googleads.v23.errors.CampaignErrorEnum.CampaignError|null);

                        /** ErrorCode video_campaign_error */
                        video_campaign_error?: (google.ads.googleads.v23.errors.VideoCampaignErrorEnum.VideoCampaignError|keyof typeof google.ads.googleads.v23.errors.VideoCampaignErrorEnum.VideoCampaignError|null);

                        /** ErrorCode authentication_error */
                        authentication_error?: (google.ads.googleads.v23.errors.AuthenticationErrorEnum.AuthenticationError|keyof typeof google.ads.googleads.v23.errors.AuthenticationErrorEnum.AuthenticationError|null);

                        /** ErrorCode ad_group_criterion_customizer_error */
                        ad_group_criterion_customizer_error?: (google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum.AdGroupCriterionCustomizerError|keyof typeof google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum.AdGroupCriterionCustomizerError|null);

                        /** ErrorCode ad_group_criterion_error */
                        ad_group_criterion_error?: (google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|keyof typeof google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|null);

                        /** ErrorCode ad_group_customizer_error */
                        ad_group_customizer_error?: (google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum.AdGroupCustomizerError|keyof typeof google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum.AdGroupCustomizerError|null);

                        /** ErrorCode ad_customizer_error */
                        ad_customizer_error?: (google.ads.googleads.v23.errors.AdCustomizerErrorEnum.AdCustomizerError|keyof typeof google.ads.googleads.v23.errors.AdCustomizerErrorEnum.AdCustomizerError|null);

                        /** ErrorCode ad_group_ad_error */
                        ad_group_ad_error?: (google.ads.googleads.v23.errors.AdGroupAdErrorEnum.AdGroupAdError|keyof typeof google.ads.googleads.v23.errors.AdGroupAdErrorEnum.AdGroupAdError|null);

                        /** ErrorCode ad_sharing_error */
                        ad_sharing_error?: (google.ads.googleads.v23.errors.AdSharingErrorEnum.AdSharingError|keyof typeof google.ads.googleads.v23.errors.AdSharingErrorEnum.AdSharingError|null);

                        /** ErrorCode adx_error */
                        adx_error?: (google.ads.googleads.v23.errors.AdxErrorEnum.AdxError|keyof typeof google.ads.googleads.v23.errors.AdxErrorEnum.AdxError|null);

                        /** ErrorCode asset_error */
                        asset_error?: (google.ads.googleads.v23.errors.AssetErrorEnum.AssetError|keyof typeof google.ads.googleads.v23.errors.AssetErrorEnum.AssetError|null);

                        /** ErrorCode asset_group_asset_error */
                        asset_group_asset_error?: (google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum.AssetGroupAssetError|keyof typeof google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum.AssetGroupAssetError|null);

                        /** ErrorCode asset_group_listing_group_filter_error */
                        asset_group_listing_group_filter_error?: (google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum.AssetGroupListingGroupFilterError|keyof typeof google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum.AssetGroupListingGroupFilterError|null);

                        /** ErrorCode asset_group_error */
                        asset_group_error?: (google.ads.googleads.v23.errors.AssetGroupErrorEnum.AssetGroupError|keyof typeof google.ads.googleads.v23.errors.AssetGroupErrorEnum.AssetGroupError|null);

                        /** ErrorCode asset_set_asset_error */
                        asset_set_asset_error?: (google.ads.googleads.v23.errors.AssetSetAssetErrorEnum.AssetSetAssetError|keyof typeof google.ads.googleads.v23.errors.AssetSetAssetErrorEnum.AssetSetAssetError|null);

                        /** ErrorCode asset_set_link_error */
                        asset_set_link_error?: (google.ads.googleads.v23.errors.AssetSetLinkErrorEnum.AssetSetLinkError|keyof typeof google.ads.googleads.v23.errors.AssetSetLinkErrorEnum.AssetSetLinkError|null);

                        /** ErrorCode asset_set_error */
                        asset_set_error?: (google.ads.googleads.v23.errors.AssetSetErrorEnum.AssetSetError|keyof typeof google.ads.googleads.v23.errors.AssetSetErrorEnum.AssetSetError|null);

                        /** ErrorCode bidding_error */
                        bidding_error?: (google.ads.googleads.v23.errors.BiddingErrorEnum.BiddingError|keyof typeof google.ads.googleads.v23.errors.BiddingErrorEnum.BiddingError|null);

                        /** ErrorCode campaign_criterion_error */
                        campaign_criterion_error?: (google.ads.googleads.v23.errors.CampaignCriterionErrorEnum.CampaignCriterionError|keyof typeof google.ads.googleads.v23.errors.CampaignCriterionErrorEnum.CampaignCriterionError|null);

                        /** ErrorCode campaign_conversion_goal_error */
                        campaign_conversion_goal_error?: (google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum.CampaignConversionGoalError|keyof typeof google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum.CampaignConversionGoalError|null);

                        /** ErrorCode campaign_customizer_error */
                        campaign_customizer_error?: (google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum.CampaignCustomizerError|keyof typeof google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum.CampaignCustomizerError|null);

                        /** ErrorCode collection_size_error */
                        collection_size_error?: (google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|keyof typeof google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|null);

                        /** ErrorCode conversion_goal_campaign_config_error */
                        conversion_goal_campaign_config_error?: (google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum.ConversionGoalCampaignConfigError|keyof typeof google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum.ConversionGoalCampaignConfigError|null);

                        /** ErrorCode country_code_error */
                        country_code_error?: (google.ads.googleads.v23.errors.CountryCodeErrorEnum.CountryCodeError|keyof typeof google.ads.googleads.v23.errors.CountryCodeErrorEnum.CountryCodeError|null);

                        /** ErrorCode criterion_error */
                        criterion_error?: (google.ads.googleads.v23.errors.CriterionErrorEnum.CriterionError|keyof typeof google.ads.googleads.v23.errors.CriterionErrorEnum.CriterionError|null);

                        /** ErrorCode custom_conversion_goal_error */
                        custom_conversion_goal_error?: (google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum.CustomConversionGoalError|keyof typeof google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum.CustomConversionGoalError|null);

                        /** ErrorCode customer_customizer_error */
                        customer_customizer_error?: (google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum.CustomerCustomizerError|keyof typeof google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum.CustomerCustomizerError|null);

                        /** ErrorCode customer_error */
                        customer_error?: (google.ads.googleads.v23.errors.CustomerErrorEnum.CustomerError|keyof typeof google.ads.googleads.v23.errors.CustomerErrorEnum.CustomerError|null);

                        /** ErrorCode customizer_attribute_error */
                        customizer_attribute_error?: (google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum.CustomizerAttributeError|keyof typeof google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum.CustomizerAttributeError|null);

                        /** ErrorCode date_error */
                        date_error?: (google.ads.googleads.v23.errors.DateErrorEnum.DateError|keyof typeof google.ads.googleads.v23.errors.DateErrorEnum.DateError|null);

                        /** ErrorCode date_range_error */
                        date_range_error?: (google.ads.googleads.v23.errors.DateRangeErrorEnum.DateRangeError|keyof typeof google.ads.googleads.v23.errors.DateRangeErrorEnum.DateRangeError|null);

                        /** ErrorCode distinct_error */
                        distinct_error?: (google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|keyof typeof google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|null);

                        /** ErrorCode feed_attribute_reference_error */
                        feed_attribute_reference_error?: (google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|keyof typeof google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|null);

                        /** ErrorCode final_url_expansion_asset_view_error */
                        final_url_expansion_asset_view_error?: (google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError|keyof typeof google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError|null);

                        /** ErrorCode function_error */
                        function_error?: (google.ads.googleads.v23.errors.FunctionErrorEnum.FunctionError|keyof typeof google.ads.googleads.v23.errors.FunctionErrorEnum.FunctionError|null);

                        /** ErrorCode function_parsing_error */
                        function_parsing_error?: (google.ads.googleads.v23.errors.FunctionParsingErrorEnum.FunctionParsingError|keyof typeof google.ads.googleads.v23.errors.FunctionParsingErrorEnum.FunctionParsingError|null);

                        /** ErrorCode id_error */
                        id_error?: (google.ads.googleads.v23.errors.IdErrorEnum.IdError|keyof typeof google.ads.googleads.v23.errors.IdErrorEnum.IdError|null);

                        /** ErrorCode image_error */
                        image_error?: (google.ads.googleads.v23.errors.ImageErrorEnum.ImageError|keyof typeof google.ads.googleads.v23.errors.ImageErrorEnum.ImageError|null);

                        /** ErrorCode language_code_error */
                        language_code_error?: (google.ads.googleads.v23.errors.LanguageCodeErrorEnum.LanguageCodeError|keyof typeof google.ads.googleads.v23.errors.LanguageCodeErrorEnum.LanguageCodeError|null);

                        /** ErrorCode media_bundle_error */
                        media_bundle_error?: (google.ads.googleads.v23.errors.MediaBundleErrorEnum.MediaBundleError|keyof typeof google.ads.googleads.v23.errors.MediaBundleErrorEnum.MediaBundleError|null);

                        /** ErrorCode media_upload_error */
                        media_upload_error?: (google.ads.googleads.v23.errors.MediaUploadErrorEnum.MediaUploadError|keyof typeof google.ads.googleads.v23.errors.MediaUploadErrorEnum.MediaUploadError|null);

                        /** ErrorCode media_file_error */
                        media_file_error?: (google.ads.googleads.v23.errors.MediaFileErrorEnum.MediaFileError|keyof typeof google.ads.googleads.v23.errors.MediaFileErrorEnum.MediaFileError|null);

                        /** ErrorCode merchant_center_error */
                        merchant_center_error?: (google.ads.googleads.v23.errors.MerchantCenterErrorEnum.MerchantCenterError|keyof typeof google.ads.googleads.v23.errors.MerchantCenterErrorEnum.MerchantCenterError|null);

                        /** ErrorCode multiplier_error */
                        multiplier_error?: (google.ads.googleads.v23.errors.MultiplierErrorEnum.MultiplierError|keyof typeof google.ads.googleads.v23.errors.MultiplierErrorEnum.MultiplierError|null);

                        /** ErrorCode new_resource_creation_error */
                        new_resource_creation_error?: (google.ads.googleads.v23.errors.NewResourceCreationErrorEnum.NewResourceCreationError|keyof typeof google.ads.googleads.v23.errors.NewResourceCreationErrorEnum.NewResourceCreationError|null);

                        /** ErrorCode not_empty_error */
                        not_empty_error?: (google.ads.googleads.v23.errors.NotEmptyErrorEnum.NotEmptyError|keyof typeof google.ads.googleads.v23.errors.NotEmptyErrorEnum.NotEmptyError|null);

                        /** ErrorCode null_error */
                        null_error?: (google.ads.googleads.v23.errors.NullErrorEnum.NullError|keyof typeof google.ads.googleads.v23.errors.NullErrorEnum.NullError|null);

                        /** ErrorCode operator_error */
                        operator_error?: (google.ads.googleads.v23.errors.OperatorErrorEnum.OperatorError|keyof typeof google.ads.googleads.v23.errors.OperatorErrorEnum.OperatorError|null);

                        /** ErrorCode range_error */
                        range_error?: (google.ads.googleads.v23.errors.RangeErrorEnum.RangeError|keyof typeof google.ads.googleads.v23.errors.RangeErrorEnum.RangeError|null);

                        /** ErrorCode recommendation_error */
                        recommendation_error?: (google.ads.googleads.v23.errors.RecommendationErrorEnum.RecommendationError|keyof typeof google.ads.googleads.v23.errors.RecommendationErrorEnum.RecommendationError|null);

                        /** ErrorCode recommendation_subscription_error */
                        recommendation_subscription_error?: (google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum.RecommendationSubscriptionError|keyof typeof google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum.RecommendationSubscriptionError|null);

                        /** ErrorCode region_code_error */
                        region_code_error?: (google.ads.googleads.v23.errors.RegionCodeErrorEnum.RegionCodeError|keyof typeof google.ads.googleads.v23.errors.RegionCodeErrorEnum.RegionCodeError|null);

                        /** ErrorCode setting_error */
                        setting_error?: (google.ads.googleads.v23.errors.SettingErrorEnum.SettingError|keyof typeof google.ads.googleads.v23.errors.SettingErrorEnum.SettingError|null);

                        /** ErrorCode string_format_error */
                        string_format_error?: (google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|keyof typeof google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|null);

                        /** ErrorCode string_length_error */
                        string_length_error?: (google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|keyof typeof google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|null);

                        /** ErrorCode operation_access_denied_error */
                        operation_access_denied_error?: (google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|keyof typeof google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|null);

                        /** ErrorCode resource_access_denied_error */
                        resource_access_denied_error?: (google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|keyof typeof google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|null);

                        /** ErrorCode resource_count_limit_exceeded_error */
                        resource_count_limit_exceeded_error?: (google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|keyof typeof google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|null);

                        /** ErrorCode youtube_video_registration_error */
                        youtube_video_registration_error?: (google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|keyof typeof google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|null);

                        /** ErrorCode ad_group_bid_modifier_error */
                        ad_group_bid_modifier_error?: (google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|keyof typeof google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|null);

                        /** ErrorCode context_error */
                        context_error?: (google.ads.googleads.v23.errors.ContextErrorEnum.ContextError|keyof typeof google.ads.googleads.v23.errors.ContextErrorEnum.ContextError|null);

                        /** ErrorCode field_error */
                        field_error?: (google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|keyof typeof google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|null);

                        /** ErrorCode shared_set_error */
                        shared_set_error?: (google.ads.googleads.v23.errors.SharedSetErrorEnum.SharedSetError|keyof typeof google.ads.googleads.v23.errors.SharedSetErrorEnum.SharedSetError|null);

                        /** ErrorCode shared_criterion_error */
                        shared_criterion_error?: (google.ads.googleads.v23.errors.SharedCriterionErrorEnum.SharedCriterionError|keyof typeof google.ads.googleads.v23.errors.SharedCriterionErrorEnum.SharedCriterionError|null);

                        /** ErrorCode campaign_shared_set_error */
                        campaign_shared_set_error?: (google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|keyof typeof google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|null);

                        /** ErrorCode conversion_action_error */
                        conversion_action_error?: (google.ads.googleads.v23.errors.ConversionActionErrorEnum.ConversionActionError|keyof typeof google.ads.googleads.v23.errors.ConversionActionErrorEnum.ConversionActionError|null);

                        /** ErrorCode conversion_adjustment_upload_error */
                        conversion_adjustment_upload_error?: (google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|null);

                        /** ErrorCode conversion_custom_variable_error */
                        conversion_custom_variable_error?: (google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|keyof typeof google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|null);

                        /** ErrorCode conversion_upload_error */
                        conversion_upload_error?: (google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|null);

                        /** ErrorCode conversion_value_rule_error */
                        conversion_value_rule_error?: (google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|keyof typeof google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|null);

                        /** ErrorCode conversion_value_rule_set_error */
                        conversion_value_rule_set_error?: (google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|keyof typeof google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|null);

                        /** ErrorCode header_error */
                        header_error?: (google.ads.googleads.v23.errors.HeaderErrorEnum.HeaderError|keyof typeof google.ads.googleads.v23.errors.HeaderErrorEnum.HeaderError|null);

                        /** ErrorCode database_error */
                        database_error?: (google.ads.googleads.v23.errors.DatabaseErrorEnum.DatabaseError|keyof typeof google.ads.googleads.v23.errors.DatabaseErrorEnum.DatabaseError|null);

                        /** ErrorCode policy_finding_error */
                        policy_finding_error?: (google.ads.googleads.v23.errors.PolicyFindingErrorEnum.PolicyFindingError|keyof typeof google.ads.googleads.v23.errors.PolicyFindingErrorEnum.PolicyFindingError|null);

                        /** ErrorCode enum_error */
                        enum_error?: (google.ads.googleads.v23.errors.EnumErrorEnum.EnumError|keyof typeof google.ads.googleads.v23.errors.EnumErrorEnum.EnumError|null);

                        /** ErrorCode keyword_plan_error */
                        keyword_plan_error?: (google.ads.googleads.v23.errors.KeywordPlanErrorEnum.KeywordPlanError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanErrorEnum.KeywordPlanError|null);

                        /** ErrorCode keyword_plan_campaign_error */
                        keyword_plan_campaign_error?: (google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|null);

                        /** ErrorCode keyword_plan_campaign_keyword_error */
                        keyword_plan_campaign_keyword_error?: (google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|null);

                        /** ErrorCode keyword_plan_ad_group_error */
                        keyword_plan_ad_group_error?: (google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|null);

                        /** ErrorCode keyword_plan_ad_group_keyword_error */
                        keyword_plan_ad_group_keyword_error?: (google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|null);

                        /** ErrorCode keyword_plan_idea_error */
                        keyword_plan_idea_error?: (google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|null);

                        /** ErrorCode account_budget_proposal_error */
                        account_budget_proposal_error?: (google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|keyof typeof google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|null);

                        /** ErrorCode user_list_error */
                        user_list_error?: (google.ads.googleads.v23.errors.UserListErrorEnum.UserListError|keyof typeof google.ads.googleads.v23.errors.UserListErrorEnum.UserListError|null);

                        /** ErrorCode change_event_error */
                        change_event_error?: (google.ads.googleads.v23.errors.ChangeEventErrorEnum.ChangeEventError|keyof typeof google.ads.googleads.v23.errors.ChangeEventErrorEnum.ChangeEventError|null);

                        /** ErrorCode change_status_error */
                        change_status_error?: (google.ads.googleads.v23.errors.ChangeStatusErrorEnum.ChangeStatusError|keyof typeof google.ads.googleads.v23.errors.ChangeStatusErrorEnum.ChangeStatusError|null);

                        /** ErrorCode feed_error */
                        feed_error?: (google.ads.googleads.v23.errors.FeedErrorEnum.FeedError|keyof typeof google.ads.googleads.v23.errors.FeedErrorEnum.FeedError|null);

                        /** ErrorCode geo_target_constant_suggestion_error */
                        geo_target_constant_suggestion_error?: (google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|keyof typeof google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|null);

                        /** ErrorCode campaign_draft_error */
                        campaign_draft_error?: (google.ads.googleads.v23.errors.CampaignDraftErrorEnum.CampaignDraftError|keyof typeof google.ads.googleads.v23.errors.CampaignDraftErrorEnum.CampaignDraftError|null);

                        /** ErrorCode feed_item_error */
                        feed_item_error?: (google.ads.googleads.v23.errors.FeedItemErrorEnum.FeedItemError|keyof typeof google.ads.googleads.v23.errors.FeedItemErrorEnum.FeedItemError|null);

                        /** ErrorCode label_error */
                        label_error?: (google.ads.googleads.v23.errors.LabelErrorEnum.LabelError|keyof typeof google.ads.googleads.v23.errors.LabelErrorEnum.LabelError|null);

                        /** ErrorCode billing_setup_error */
                        billing_setup_error?: (google.ads.googleads.v23.errors.BillingSetupErrorEnum.BillingSetupError|keyof typeof google.ads.googleads.v23.errors.BillingSetupErrorEnum.BillingSetupError|null);

                        /** ErrorCode customer_client_link_error */
                        customer_client_link_error?: (google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|keyof typeof google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|null);

                        /** ErrorCode customer_manager_link_error */
                        customer_manager_link_error?: (google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|keyof typeof google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|null);

                        /** ErrorCode feed_mapping_error */
                        feed_mapping_error?: (google.ads.googleads.v23.errors.FeedMappingErrorEnum.FeedMappingError|keyof typeof google.ads.googleads.v23.errors.FeedMappingErrorEnum.FeedMappingError|null);

                        /** ErrorCode customer_feed_error */
                        customer_feed_error?: (google.ads.googleads.v23.errors.CustomerFeedErrorEnum.CustomerFeedError|keyof typeof google.ads.googleads.v23.errors.CustomerFeedErrorEnum.CustomerFeedError|null);

                        /** ErrorCode ad_group_feed_error */
                        ad_group_feed_error?: (google.ads.googleads.v23.errors.AdGroupFeedErrorEnum.AdGroupFeedError|keyof typeof google.ads.googleads.v23.errors.AdGroupFeedErrorEnum.AdGroupFeedError|null);

                        /** ErrorCode campaign_feed_error */
                        campaign_feed_error?: (google.ads.googleads.v23.errors.CampaignFeedErrorEnum.CampaignFeedError|keyof typeof google.ads.googleads.v23.errors.CampaignFeedErrorEnum.CampaignFeedError|null);

                        /** ErrorCode custom_interest_error */
                        custom_interest_error?: (google.ads.googleads.v23.errors.CustomInterestErrorEnum.CustomInterestError|keyof typeof google.ads.googleads.v23.errors.CustomInterestErrorEnum.CustomInterestError|null);

                        /** ErrorCode campaign_experiment_error */
                        campaign_experiment_error?: (google.ads.googleads.v23.errors.CampaignExperimentErrorEnum.CampaignExperimentError|keyof typeof google.ads.googleads.v23.errors.CampaignExperimentErrorEnum.CampaignExperimentError|null);

                        /** ErrorCode extension_feed_item_error */
                        extension_feed_item_error?: (google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|keyof typeof google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|null);

                        /** ErrorCode ad_parameter_error */
                        ad_parameter_error?: (google.ads.googleads.v23.errors.AdParameterErrorEnum.AdParameterError|keyof typeof google.ads.googleads.v23.errors.AdParameterErrorEnum.AdParameterError|null);

                        /** ErrorCode feed_item_validation_error */
                        feed_item_validation_error?: (google.ads.googleads.v23.errors.FeedItemValidationErrorEnum.FeedItemValidationError|keyof typeof google.ads.googleads.v23.errors.FeedItemValidationErrorEnum.FeedItemValidationError|null);

                        /** ErrorCode extension_setting_error */
                        extension_setting_error?: (google.ads.googleads.v23.errors.ExtensionSettingErrorEnum.ExtensionSettingError|keyof typeof google.ads.googleads.v23.errors.ExtensionSettingErrorEnum.ExtensionSettingError|null);

                        /** ErrorCode feed_item_set_error */
                        feed_item_set_error?: (google.ads.googleads.v23.errors.FeedItemSetErrorEnum.FeedItemSetError|keyof typeof google.ads.googleads.v23.errors.FeedItemSetErrorEnum.FeedItemSetError|null);

                        /** ErrorCode feed_item_set_link_error */
                        feed_item_set_link_error?: (google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|keyof typeof google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|null);

                        /** ErrorCode feed_item_target_error */
                        feed_item_target_error?: (google.ads.googleads.v23.errors.FeedItemTargetErrorEnum.FeedItemTargetError|keyof typeof google.ads.googleads.v23.errors.FeedItemTargetErrorEnum.FeedItemTargetError|null);

                        /** ErrorCode policy_violation_error */
                        policy_violation_error?: (google.ads.googleads.v23.errors.PolicyViolationErrorEnum.PolicyViolationError|keyof typeof google.ads.googleads.v23.errors.PolicyViolationErrorEnum.PolicyViolationError|null);

                        /** ErrorCode partial_failure_error */
                        partial_failure_error?: (google.ads.googleads.v23.errors.PartialFailureErrorEnum.PartialFailureError|keyof typeof google.ads.googleads.v23.errors.PartialFailureErrorEnum.PartialFailureError|null);

                        /** ErrorCode click_view_error */
                        click_view_error?: (google.ads.googleads.v23.errors.ClickViewErrorEnum.ClickViewError|keyof typeof google.ads.googleads.v23.errors.ClickViewErrorEnum.ClickViewError|null);

                        /** ErrorCode policy_validation_parameter_error */
                        policy_validation_parameter_error?: (google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|keyof typeof google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|null);

                        /** ErrorCode size_limit_error */
                        size_limit_error?: (google.ads.googleads.v23.errors.SizeLimitErrorEnum.SizeLimitError|keyof typeof google.ads.googleads.v23.errors.SizeLimitErrorEnum.SizeLimitError|null);

                        /** ErrorCode offline_user_data_job_error */
                        offline_user_data_job_error?: (google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|keyof typeof google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|null);

                        /** ErrorCode not_allowlisted_error */
                        not_allowlisted_error?: (google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|keyof typeof google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|null);

                        /** ErrorCode manager_link_error */
                        manager_link_error?: (google.ads.googleads.v23.errors.ManagerLinkErrorEnum.ManagerLinkError|keyof typeof google.ads.googleads.v23.errors.ManagerLinkErrorEnum.ManagerLinkError|null);

                        /** ErrorCode currency_code_error */
                        currency_code_error?: (google.ads.googleads.v23.errors.CurrencyCodeErrorEnum.CurrencyCodeError|keyof typeof google.ads.googleads.v23.errors.CurrencyCodeErrorEnum.CurrencyCodeError|null);

                        /** ErrorCode experiment_error */
                        experiment_error?: (google.ads.googleads.v23.errors.ExperimentErrorEnum.ExperimentError|keyof typeof google.ads.googleads.v23.errors.ExperimentErrorEnum.ExperimentError|null);

                        /** ErrorCode access_invitation_error */
                        access_invitation_error?: (google.ads.googleads.v23.errors.AccessInvitationErrorEnum.AccessInvitationError|keyof typeof google.ads.googleads.v23.errors.AccessInvitationErrorEnum.AccessInvitationError|null);

                        /** ErrorCode reach_plan_error */
                        reach_plan_error?: (google.ads.googleads.v23.errors.ReachPlanErrorEnum.ReachPlanError|keyof typeof google.ads.googleads.v23.errors.ReachPlanErrorEnum.ReachPlanError|null);

                        /** ErrorCode invoice_error */
                        invoice_error?: (google.ads.googleads.v23.errors.InvoiceErrorEnum.InvoiceError|keyof typeof google.ads.googleads.v23.errors.InvoiceErrorEnum.InvoiceError|null);

                        /** ErrorCode payments_account_error */
                        payments_account_error?: (google.ads.googleads.v23.errors.PaymentsAccountErrorEnum.PaymentsAccountError|keyof typeof google.ads.googleads.v23.errors.PaymentsAccountErrorEnum.PaymentsAccountError|null);

                        /** ErrorCode time_zone_error */
                        time_zone_error?: (google.ads.googleads.v23.errors.TimeZoneErrorEnum.TimeZoneError|keyof typeof google.ads.googleads.v23.errors.TimeZoneErrorEnum.TimeZoneError|null);

                        /** ErrorCode asset_link_error */
                        asset_link_error?: (google.ads.googleads.v23.errors.AssetLinkErrorEnum.AssetLinkError|keyof typeof google.ads.googleads.v23.errors.AssetLinkErrorEnum.AssetLinkError|null);

                        /** ErrorCode user_data_error */
                        user_data_error?: (google.ads.googleads.v23.errors.UserDataErrorEnum.UserDataError|keyof typeof google.ads.googleads.v23.errors.UserDataErrorEnum.UserDataError|null);

                        /** ErrorCode batch_job_error */
                        batch_job_error?: (google.ads.googleads.v23.errors.BatchJobErrorEnum.BatchJobError|keyof typeof google.ads.googleads.v23.errors.BatchJobErrorEnum.BatchJobError|null);

                        /** ErrorCode account_link_error */
                        account_link_error?: (google.ads.googleads.v23.errors.AccountLinkErrorEnum.AccountLinkError|keyof typeof google.ads.googleads.v23.errors.AccountLinkErrorEnum.AccountLinkError|null);

                        /** ErrorCode third_party_app_analytics_link_error */
                        third_party_app_analytics_link_error?: (google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|keyof typeof google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|null);

                        /** ErrorCode customer_user_access_error */
                        customer_user_access_error?: (google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|keyof typeof google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|null);

                        /** ErrorCode custom_audience_error */
                        custom_audience_error?: (google.ads.googleads.v23.errors.CustomAudienceErrorEnum.CustomAudienceError|keyof typeof google.ads.googleads.v23.errors.CustomAudienceErrorEnum.CustomAudienceError|null);

                        /** ErrorCode audience_error */
                        audience_error?: (google.ads.googleads.v23.errors.AudienceErrorEnum.AudienceError|keyof typeof google.ads.googleads.v23.errors.AudienceErrorEnum.AudienceError|null);

                        /** ErrorCode search_term_insight_error */
                        search_term_insight_error?: (google.ads.googleads.v23.errors.SearchTermInsightErrorEnum.SearchTermInsightError|keyof typeof google.ads.googleads.v23.errors.SearchTermInsightErrorEnum.SearchTermInsightError|null);

                        /** ErrorCode smart_campaign_error */
                        smart_campaign_error?: (google.ads.googleads.v23.errors.SmartCampaignErrorEnum.SmartCampaignError|keyof typeof google.ads.googleads.v23.errors.SmartCampaignErrorEnum.SmartCampaignError|null);

                        /** ErrorCode experiment_arm_error */
                        experiment_arm_error?: (google.ads.googleads.v23.errors.ExperimentArmErrorEnum.ExperimentArmError|keyof typeof google.ads.googleads.v23.errors.ExperimentArmErrorEnum.ExperimentArmError|null);

                        /** ErrorCode audience_insights_error */
                        audience_insights_error?: (google.ads.googleads.v23.errors.AudienceInsightsErrorEnum.AudienceInsightsError|keyof typeof google.ads.googleads.v23.errors.AudienceInsightsErrorEnum.AudienceInsightsError|null);

                        /** ErrorCode product_link_error */
                        product_link_error?: (google.ads.googleads.v23.errors.ProductLinkErrorEnum.ProductLinkError|keyof typeof google.ads.googleads.v23.errors.ProductLinkErrorEnum.ProductLinkError|null);

                        /** ErrorCode data_link_error */
                        data_link_error?: (google.ads.googleads.v23.errors.DataLinkErrorEnum.DataLinkError|keyof typeof google.ads.googleads.v23.errors.DataLinkErrorEnum.DataLinkError|null);

                        /** ErrorCode customer_sk_ad_network_conversion_value_schema_error */
                        customer_sk_ad_network_conversion_value_schema_error?: (google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum.CustomerSkAdNetworkConversionValueSchemaError|keyof typeof google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum.CustomerSkAdNetworkConversionValueSchemaError|null);

                        /** ErrorCode currency_error */
                        currency_error?: (google.ads.googleads.v23.errors.CurrencyErrorEnum.CurrencyError|keyof typeof google.ads.googleads.v23.errors.CurrencyErrorEnum.CurrencyError|null);

                        /** ErrorCode asset_group_signal_error */
                        asset_group_signal_error?: (google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum.AssetGroupSignalError|keyof typeof google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum.AssetGroupSignalError|null);

                        /** ErrorCode product_link_invitation_error */
                        product_link_invitation_error?: (google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum.ProductLinkInvitationError|keyof typeof google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum.ProductLinkInvitationError|null);

                        /** ErrorCode customer_lifecycle_goal_error */
                        customer_lifecycle_goal_error?: (google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum.CustomerLifecycleGoalError|keyof typeof google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum.CustomerLifecycleGoalError|null);

                        /** ErrorCode campaign_lifecycle_goal_error */
                        campaign_lifecycle_goal_error?: (google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum.CampaignLifecycleGoalError|keyof typeof google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum.CampaignLifecycleGoalError|null);

                        /** ErrorCode identity_verification_error */
                        identity_verification_error?: (google.ads.googleads.v23.errors.IdentityVerificationErrorEnum.IdentityVerificationError|keyof typeof google.ads.googleads.v23.errors.IdentityVerificationErrorEnum.IdentityVerificationError|null);

                        /** ErrorCode user_list_customer_type_error */
                        user_list_customer_type_error?: (google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum.UserListCustomerTypeError|keyof typeof google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum.UserListCustomerTypeError|null);

                        /** ErrorCode shopping_product_error */
                        shopping_product_error?: (google.ads.googleads.v23.errors.ShoppingProductErrorEnum.ShoppingProductError|keyof typeof google.ads.googleads.v23.errors.ShoppingProductErrorEnum.ShoppingProductError|null);

                        /** ErrorCode automatically_created_asset_removal_error */
                        automatically_created_asset_removal_error?: (google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum.AutomaticallyCreatedAssetRemovalError|keyof typeof google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum.AutomaticallyCreatedAssetRemovalError|null);

                        /** ErrorCode shareable_preview_error */
                        shareable_preview_error?: (google.ads.googleads.v23.errors.ShareablePreviewErrorEnum.ShareablePreviewError|keyof typeof google.ads.googleads.v23.errors.ShareablePreviewErrorEnum.ShareablePreviewError|null);

                        /** ErrorCode campaign_goal_config_error */
                        campaign_goal_config_error?: (google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum.CampaignGoalConfigError|keyof typeof google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum.CampaignGoalConfigError|null);

                        /** ErrorCode goal_error */
                        goal_error?: (google.ads.googleads.v23.errors.GoalErrorEnum.GoalError|keyof typeof google.ads.googleads.v23.errors.GoalErrorEnum.GoalError|null);

                        /** ErrorCode brand_guidelines_migration_error */
                        brand_guidelines_migration_error?: (google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum.BrandGuidelinesMigrationError|keyof typeof google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum.BrandGuidelinesMigrationError|null);

                        /** ErrorCode asset_generation_error */
                        asset_generation_error?: (google.ads.googleads.v23.errors.AssetGenerationErrorEnum.AssetGenerationError|keyof typeof google.ads.googleads.v23.errors.AssetGenerationErrorEnum.AssetGenerationError|null);

                        /** ErrorCode benchmarks_error */
                        benchmarks_error?: (google.ads.googleads.v23.errors.BenchmarksErrorEnum.BenchmarksError|keyof typeof google.ads.googleads.v23.errors.BenchmarksErrorEnum.BenchmarksError|null);

                        /** ErrorCode incentive_error */
                        incentive_error?: (google.ads.googleads.v23.errors.IncentiveErrorEnum.IncentiveError|keyof typeof google.ads.googleads.v23.errors.IncentiveErrorEnum.IncentiveError|null);
                    }

                    /** Represents an ErrorCode. */
                    class ErrorCode implements IErrorCode {

                        /**
                         * Constructs a new ErrorCode.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IErrorCode);

                        /** ErrorCode request_error. */
                        public request_error?: (google.ads.googleads.v23.errors.RequestErrorEnum.RequestError|keyof typeof google.ads.googleads.v23.errors.RequestErrorEnum.RequestError|null);

                        /** ErrorCode bidding_strategy_error. */
                        public bidding_strategy_error?: (google.ads.googleads.v23.errors.BiddingStrategyErrorEnum.BiddingStrategyError|keyof typeof google.ads.googleads.v23.errors.BiddingStrategyErrorEnum.BiddingStrategyError|null);

                        /** ErrorCode url_field_error. */
                        public url_field_error?: (google.ads.googleads.v23.errors.UrlFieldErrorEnum.UrlFieldError|keyof typeof google.ads.googleads.v23.errors.UrlFieldErrorEnum.UrlFieldError|null);

                        /** ErrorCode list_operation_error. */
                        public list_operation_error?: (google.ads.googleads.v23.errors.ListOperationErrorEnum.ListOperationError|keyof typeof google.ads.googleads.v23.errors.ListOperationErrorEnum.ListOperationError|null);

                        /** ErrorCode query_error. */
                        public query_error?: (google.ads.googleads.v23.errors.QueryErrorEnum.QueryError|keyof typeof google.ads.googleads.v23.errors.QueryErrorEnum.QueryError|null);

                        /** ErrorCode mutate_error. */
                        public mutate_error?: (google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|keyof typeof google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|null);

                        /** ErrorCode field_mask_error. */
                        public field_mask_error?: (google.ads.googleads.v23.errors.FieldMaskErrorEnum.FieldMaskError|keyof typeof google.ads.googleads.v23.errors.FieldMaskErrorEnum.FieldMaskError|null);

                        /** ErrorCode authorization_error. */
                        public authorization_error?: (google.ads.googleads.v23.errors.AuthorizationErrorEnum.AuthorizationError|keyof typeof google.ads.googleads.v23.errors.AuthorizationErrorEnum.AuthorizationError|null);

                        /** ErrorCode internal_error. */
                        public internal_error?: (google.ads.googleads.v23.errors.InternalErrorEnum.InternalError|keyof typeof google.ads.googleads.v23.errors.InternalErrorEnum.InternalError|null);

                        /** ErrorCode quota_error. */
                        public quota_error?: (google.ads.googleads.v23.errors.QuotaErrorEnum.QuotaError|keyof typeof google.ads.googleads.v23.errors.QuotaErrorEnum.QuotaError|null);

                        /** ErrorCode ad_error. */
                        public ad_error?: (google.ads.googleads.v23.errors.AdErrorEnum.AdError|keyof typeof google.ads.googleads.v23.errors.AdErrorEnum.AdError|null);

                        /** ErrorCode ad_group_error. */
                        public ad_group_error?: (google.ads.googleads.v23.errors.AdGroupErrorEnum.AdGroupError|keyof typeof google.ads.googleads.v23.errors.AdGroupErrorEnum.AdGroupError|null);

                        /** ErrorCode campaign_budget_error. */
                        public campaign_budget_error?: (google.ads.googleads.v23.errors.CampaignBudgetErrorEnum.CampaignBudgetError|keyof typeof google.ads.googleads.v23.errors.CampaignBudgetErrorEnum.CampaignBudgetError|null);

                        /** ErrorCode campaign_error. */
                        public campaign_error?: (google.ads.googleads.v23.errors.CampaignErrorEnum.CampaignError|keyof typeof google.ads.googleads.v23.errors.CampaignErrorEnum.CampaignError|null);

                        /** ErrorCode video_campaign_error. */
                        public video_campaign_error?: (google.ads.googleads.v23.errors.VideoCampaignErrorEnum.VideoCampaignError|keyof typeof google.ads.googleads.v23.errors.VideoCampaignErrorEnum.VideoCampaignError|null);

                        /** ErrorCode authentication_error. */
                        public authentication_error?: (google.ads.googleads.v23.errors.AuthenticationErrorEnum.AuthenticationError|keyof typeof google.ads.googleads.v23.errors.AuthenticationErrorEnum.AuthenticationError|null);

                        /** ErrorCode ad_group_criterion_customizer_error. */
                        public ad_group_criterion_customizer_error?: (google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum.AdGroupCriterionCustomizerError|keyof typeof google.ads.googleads.v23.errors.AdGroupCriterionCustomizerErrorEnum.AdGroupCriterionCustomizerError|null);

                        /** ErrorCode ad_group_criterion_error. */
                        public ad_group_criterion_error?: (google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|keyof typeof google.ads.googleads.v23.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|null);

                        /** ErrorCode ad_group_customizer_error. */
                        public ad_group_customizer_error?: (google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum.AdGroupCustomizerError|keyof typeof google.ads.googleads.v23.errors.AdGroupCustomizerErrorEnum.AdGroupCustomizerError|null);

                        /** ErrorCode ad_customizer_error. */
                        public ad_customizer_error?: (google.ads.googleads.v23.errors.AdCustomizerErrorEnum.AdCustomizerError|keyof typeof google.ads.googleads.v23.errors.AdCustomizerErrorEnum.AdCustomizerError|null);

                        /** ErrorCode ad_group_ad_error. */
                        public ad_group_ad_error?: (google.ads.googleads.v23.errors.AdGroupAdErrorEnum.AdGroupAdError|keyof typeof google.ads.googleads.v23.errors.AdGroupAdErrorEnum.AdGroupAdError|null);

                        /** ErrorCode ad_sharing_error. */
                        public ad_sharing_error?: (google.ads.googleads.v23.errors.AdSharingErrorEnum.AdSharingError|keyof typeof google.ads.googleads.v23.errors.AdSharingErrorEnum.AdSharingError|null);

                        /** ErrorCode adx_error. */
                        public adx_error?: (google.ads.googleads.v23.errors.AdxErrorEnum.AdxError|keyof typeof google.ads.googleads.v23.errors.AdxErrorEnum.AdxError|null);

                        /** ErrorCode asset_error. */
                        public asset_error?: (google.ads.googleads.v23.errors.AssetErrorEnum.AssetError|keyof typeof google.ads.googleads.v23.errors.AssetErrorEnum.AssetError|null);

                        /** ErrorCode asset_group_asset_error. */
                        public asset_group_asset_error?: (google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum.AssetGroupAssetError|keyof typeof google.ads.googleads.v23.errors.AssetGroupAssetErrorEnum.AssetGroupAssetError|null);

                        /** ErrorCode asset_group_listing_group_filter_error. */
                        public asset_group_listing_group_filter_error?: (google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum.AssetGroupListingGroupFilterError|keyof typeof google.ads.googleads.v23.errors.AssetGroupListingGroupFilterErrorEnum.AssetGroupListingGroupFilterError|null);

                        /** ErrorCode asset_group_error. */
                        public asset_group_error?: (google.ads.googleads.v23.errors.AssetGroupErrorEnum.AssetGroupError|keyof typeof google.ads.googleads.v23.errors.AssetGroupErrorEnum.AssetGroupError|null);

                        /** ErrorCode asset_set_asset_error. */
                        public asset_set_asset_error?: (google.ads.googleads.v23.errors.AssetSetAssetErrorEnum.AssetSetAssetError|keyof typeof google.ads.googleads.v23.errors.AssetSetAssetErrorEnum.AssetSetAssetError|null);

                        /** ErrorCode asset_set_link_error. */
                        public asset_set_link_error?: (google.ads.googleads.v23.errors.AssetSetLinkErrorEnum.AssetSetLinkError|keyof typeof google.ads.googleads.v23.errors.AssetSetLinkErrorEnum.AssetSetLinkError|null);

                        /** ErrorCode asset_set_error. */
                        public asset_set_error?: (google.ads.googleads.v23.errors.AssetSetErrorEnum.AssetSetError|keyof typeof google.ads.googleads.v23.errors.AssetSetErrorEnum.AssetSetError|null);

                        /** ErrorCode bidding_error. */
                        public bidding_error?: (google.ads.googleads.v23.errors.BiddingErrorEnum.BiddingError|keyof typeof google.ads.googleads.v23.errors.BiddingErrorEnum.BiddingError|null);

                        /** ErrorCode campaign_criterion_error. */
                        public campaign_criterion_error?: (google.ads.googleads.v23.errors.CampaignCriterionErrorEnum.CampaignCriterionError|keyof typeof google.ads.googleads.v23.errors.CampaignCriterionErrorEnum.CampaignCriterionError|null);

                        /** ErrorCode campaign_conversion_goal_error. */
                        public campaign_conversion_goal_error?: (google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum.CampaignConversionGoalError|keyof typeof google.ads.googleads.v23.errors.CampaignConversionGoalErrorEnum.CampaignConversionGoalError|null);

                        /** ErrorCode campaign_customizer_error. */
                        public campaign_customizer_error?: (google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum.CampaignCustomizerError|keyof typeof google.ads.googleads.v23.errors.CampaignCustomizerErrorEnum.CampaignCustomizerError|null);

                        /** ErrorCode collection_size_error. */
                        public collection_size_error?: (google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|keyof typeof google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|null);

                        /** ErrorCode conversion_goal_campaign_config_error. */
                        public conversion_goal_campaign_config_error?: (google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum.ConversionGoalCampaignConfigError|keyof typeof google.ads.googleads.v23.errors.ConversionGoalCampaignConfigErrorEnum.ConversionGoalCampaignConfigError|null);

                        /** ErrorCode country_code_error. */
                        public country_code_error?: (google.ads.googleads.v23.errors.CountryCodeErrorEnum.CountryCodeError|keyof typeof google.ads.googleads.v23.errors.CountryCodeErrorEnum.CountryCodeError|null);

                        /** ErrorCode criterion_error. */
                        public criterion_error?: (google.ads.googleads.v23.errors.CriterionErrorEnum.CriterionError|keyof typeof google.ads.googleads.v23.errors.CriterionErrorEnum.CriterionError|null);

                        /** ErrorCode custom_conversion_goal_error. */
                        public custom_conversion_goal_error?: (google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum.CustomConversionGoalError|keyof typeof google.ads.googleads.v23.errors.CustomConversionGoalErrorEnum.CustomConversionGoalError|null);

                        /** ErrorCode customer_customizer_error. */
                        public customer_customizer_error?: (google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum.CustomerCustomizerError|keyof typeof google.ads.googleads.v23.errors.CustomerCustomizerErrorEnum.CustomerCustomizerError|null);

                        /** ErrorCode customer_error. */
                        public customer_error?: (google.ads.googleads.v23.errors.CustomerErrorEnum.CustomerError|keyof typeof google.ads.googleads.v23.errors.CustomerErrorEnum.CustomerError|null);

                        /** ErrorCode customizer_attribute_error. */
                        public customizer_attribute_error?: (google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum.CustomizerAttributeError|keyof typeof google.ads.googleads.v23.errors.CustomizerAttributeErrorEnum.CustomizerAttributeError|null);

                        /** ErrorCode date_error. */
                        public date_error?: (google.ads.googleads.v23.errors.DateErrorEnum.DateError|keyof typeof google.ads.googleads.v23.errors.DateErrorEnum.DateError|null);

                        /** ErrorCode date_range_error. */
                        public date_range_error?: (google.ads.googleads.v23.errors.DateRangeErrorEnum.DateRangeError|keyof typeof google.ads.googleads.v23.errors.DateRangeErrorEnum.DateRangeError|null);

                        /** ErrorCode distinct_error. */
                        public distinct_error?: (google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|keyof typeof google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|null);

                        /** ErrorCode feed_attribute_reference_error. */
                        public feed_attribute_reference_error?: (google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|keyof typeof google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|null);

                        /** ErrorCode final_url_expansion_asset_view_error. */
                        public final_url_expansion_asset_view_error?: (google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError|keyof typeof google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum.FinalUrlExpansionAssetViewError|null);

                        /** ErrorCode function_error. */
                        public function_error?: (google.ads.googleads.v23.errors.FunctionErrorEnum.FunctionError|keyof typeof google.ads.googleads.v23.errors.FunctionErrorEnum.FunctionError|null);

                        /** ErrorCode function_parsing_error. */
                        public function_parsing_error?: (google.ads.googleads.v23.errors.FunctionParsingErrorEnum.FunctionParsingError|keyof typeof google.ads.googleads.v23.errors.FunctionParsingErrorEnum.FunctionParsingError|null);

                        /** ErrorCode id_error. */
                        public id_error?: (google.ads.googleads.v23.errors.IdErrorEnum.IdError|keyof typeof google.ads.googleads.v23.errors.IdErrorEnum.IdError|null);

                        /** ErrorCode image_error. */
                        public image_error?: (google.ads.googleads.v23.errors.ImageErrorEnum.ImageError|keyof typeof google.ads.googleads.v23.errors.ImageErrorEnum.ImageError|null);

                        /** ErrorCode language_code_error. */
                        public language_code_error?: (google.ads.googleads.v23.errors.LanguageCodeErrorEnum.LanguageCodeError|keyof typeof google.ads.googleads.v23.errors.LanguageCodeErrorEnum.LanguageCodeError|null);

                        /** ErrorCode media_bundle_error. */
                        public media_bundle_error?: (google.ads.googleads.v23.errors.MediaBundleErrorEnum.MediaBundleError|keyof typeof google.ads.googleads.v23.errors.MediaBundleErrorEnum.MediaBundleError|null);

                        /** ErrorCode media_upload_error. */
                        public media_upload_error?: (google.ads.googleads.v23.errors.MediaUploadErrorEnum.MediaUploadError|keyof typeof google.ads.googleads.v23.errors.MediaUploadErrorEnum.MediaUploadError|null);

                        /** ErrorCode media_file_error. */
                        public media_file_error?: (google.ads.googleads.v23.errors.MediaFileErrorEnum.MediaFileError|keyof typeof google.ads.googleads.v23.errors.MediaFileErrorEnum.MediaFileError|null);

                        /** ErrorCode merchant_center_error. */
                        public merchant_center_error?: (google.ads.googleads.v23.errors.MerchantCenterErrorEnum.MerchantCenterError|keyof typeof google.ads.googleads.v23.errors.MerchantCenterErrorEnum.MerchantCenterError|null);

                        /** ErrorCode multiplier_error. */
                        public multiplier_error?: (google.ads.googleads.v23.errors.MultiplierErrorEnum.MultiplierError|keyof typeof google.ads.googleads.v23.errors.MultiplierErrorEnum.MultiplierError|null);

                        /** ErrorCode new_resource_creation_error. */
                        public new_resource_creation_error?: (google.ads.googleads.v23.errors.NewResourceCreationErrorEnum.NewResourceCreationError|keyof typeof google.ads.googleads.v23.errors.NewResourceCreationErrorEnum.NewResourceCreationError|null);

                        /** ErrorCode not_empty_error. */
                        public not_empty_error?: (google.ads.googleads.v23.errors.NotEmptyErrorEnum.NotEmptyError|keyof typeof google.ads.googleads.v23.errors.NotEmptyErrorEnum.NotEmptyError|null);

                        /** ErrorCode null_error. */
                        public null_error?: (google.ads.googleads.v23.errors.NullErrorEnum.NullError|keyof typeof google.ads.googleads.v23.errors.NullErrorEnum.NullError|null);

                        /** ErrorCode operator_error. */
                        public operator_error?: (google.ads.googleads.v23.errors.OperatorErrorEnum.OperatorError|keyof typeof google.ads.googleads.v23.errors.OperatorErrorEnum.OperatorError|null);

                        /** ErrorCode range_error. */
                        public range_error?: (google.ads.googleads.v23.errors.RangeErrorEnum.RangeError|keyof typeof google.ads.googleads.v23.errors.RangeErrorEnum.RangeError|null);

                        /** ErrorCode recommendation_error. */
                        public recommendation_error?: (google.ads.googleads.v23.errors.RecommendationErrorEnum.RecommendationError|keyof typeof google.ads.googleads.v23.errors.RecommendationErrorEnum.RecommendationError|null);

                        /** ErrorCode recommendation_subscription_error. */
                        public recommendation_subscription_error?: (google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum.RecommendationSubscriptionError|keyof typeof google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum.RecommendationSubscriptionError|null);

                        /** ErrorCode region_code_error. */
                        public region_code_error?: (google.ads.googleads.v23.errors.RegionCodeErrorEnum.RegionCodeError|keyof typeof google.ads.googleads.v23.errors.RegionCodeErrorEnum.RegionCodeError|null);

                        /** ErrorCode setting_error. */
                        public setting_error?: (google.ads.googleads.v23.errors.SettingErrorEnum.SettingError|keyof typeof google.ads.googleads.v23.errors.SettingErrorEnum.SettingError|null);

                        /** ErrorCode string_format_error. */
                        public string_format_error?: (google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|keyof typeof google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|null);

                        /** ErrorCode string_length_error. */
                        public string_length_error?: (google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|keyof typeof google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|null);

                        /** ErrorCode operation_access_denied_error. */
                        public operation_access_denied_error?: (google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|keyof typeof google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|null);

                        /** ErrorCode resource_access_denied_error. */
                        public resource_access_denied_error?: (google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|keyof typeof google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|null);

                        /** ErrorCode resource_count_limit_exceeded_error. */
                        public resource_count_limit_exceeded_error?: (google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|keyof typeof google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|null);

                        /** ErrorCode youtube_video_registration_error. */
                        public youtube_video_registration_error?: (google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|keyof typeof google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|null);

                        /** ErrorCode ad_group_bid_modifier_error. */
                        public ad_group_bid_modifier_error?: (google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|keyof typeof google.ads.googleads.v23.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|null);

                        /** ErrorCode context_error. */
                        public context_error?: (google.ads.googleads.v23.errors.ContextErrorEnum.ContextError|keyof typeof google.ads.googleads.v23.errors.ContextErrorEnum.ContextError|null);

                        /** ErrorCode field_error. */
                        public field_error?: (google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|keyof typeof google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|null);

                        /** ErrorCode shared_set_error. */
                        public shared_set_error?: (google.ads.googleads.v23.errors.SharedSetErrorEnum.SharedSetError|keyof typeof google.ads.googleads.v23.errors.SharedSetErrorEnum.SharedSetError|null);

                        /** ErrorCode shared_criterion_error. */
                        public shared_criterion_error?: (google.ads.googleads.v23.errors.SharedCriterionErrorEnum.SharedCriterionError|keyof typeof google.ads.googleads.v23.errors.SharedCriterionErrorEnum.SharedCriterionError|null);

                        /** ErrorCode campaign_shared_set_error. */
                        public campaign_shared_set_error?: (google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|keyof typeof google.ads.googleads.v23.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|null);

                        /** ErrorCode conversion_action_error. */
                        public conversion_action_error?: (google.ads.googleads.v23.errors.ConversionActionErrorEnum.ConversionActionError|keyof typeof google.ads.googleads.v23.errors.ConversionActionErrorEnum.ConversionActionError|null);

                        /** ErrorCode conversion_adjustment_upload_error. */
                        public conversion_adjustment_upload_error?: (google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|null);

                        /** ErrorCode conversion_custom_variable_error. */
                        public conversion_custom_variable_error?: (google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|keyof typeof google.ads.googleads.v23.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|null);

                        /** ErrorCode conversion_upload_error. */
                        public conversion_upload_error?: (google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|null);

                        /** ErrorCode conversion_value_rule_error. */
                        public conversion_value_rule_error?: (google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|keyof typeof google.ads.googleads.v23.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|null);

                        /** ErrorCode conversion_value_rule_set_error. */
                        public conversion_value_rule_set_error?: (google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|keyof typeof google.ads.googleads.v23.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|null);

                        /** ErrorCode header_error. */
                        public header_error?: (google.ads.googleads.v23.errors.HeaderErrorEnum.HeaderError|keyof typeof google.ads.googleads.v23.errors.HeaderErrorEnum.HeaderError|null);

                        /** ErrorCode database_error. */
                        public database_error?: (google.ads.googleads.v23.errors.DatabaseErrorEnum.DatabaseError|keyof typeof google.ads.googleads.v23.errors.DatabaseErrorEnum.DatabaseError|null);

                        /** ErrorCode policy_finding_error. */
                        public policy_finding_error?: (google.ads.googleads.v23.errors.PolicyFindingErrorEnum.PolicyFindingError|keyof typeof google.ads.googleads.v23.errors.PolicyFindingErrorEnum.PolicyFindingError|null);

                        /** ErrorCode enum_error. */
                        public enum_error?: (google.ads.googleads.v23.errors.EnumErrorEnum.EnumError|keyof typeof google.ads.googleads.v23.errors.EnumErrorEnum.EnumError|null);

                        /** ErrorCode keyword_plan_error. */
                        public keyword_plan_error?: (google.ads.googleads.v23.errors.KeywordPlanErrorEnum.KeywordPlanError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanErrorEnum.KeywordPlanError|null);

                        /** ErrorCode keyword_plan_campaign_error. */
                        public keyword_plan_campaign_error?: (google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|null);

                        /** ErrorCode keyword_plan_campaign_keyword_error. */
                        public keyword_plan_campaign_keyword_error?: (google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|null);

                        /** ErrorCode keyword_plan_ad_group_error. */
                        public keyword_plan_ad_group_error?: (google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|null);

                        /** ErrorCode keyword_plan_ad_group_keyword_error. */
                        public keyword_plan_ad_group_keyword_error?: (google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|null);

                        /** ErrorCode keyword_plan_idea_error. */
                        public keyword_plan_idea_error?: (google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|keyof typeof google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|null);

                        /** ErrorCode account_budget_proposal_error. */
                        public account_budget_proposal_error?: (google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|keyof typeof google.ads.googleads.v23.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|null);

                        /** ErrorCode user_list_error. */
                        public user_list_error?: (google.ads.googleads.v23.errors.UserListErrorEnum.UserListError|keyof typeof google.ads.googleads.v23.errors.UserListErrorEnum.UserListError|null);

                        /** ErrorCode change_event_error. */
                        public change_event_error?: (google.ads.googleads.v23.errors.ChangeEventErrorEnum.ChangeEventError|keyof typeof google.ads.googleads.v23.errors.ChangeEventErrorEnum.ChangeEventError|null);

                        /** ErrorCode change_status_error. */
                        public change_status_error?: (google.ads.googleads.v23.errors.ChangeStatusErrorEnum.ChangeStatusError|keyof typeof google.ads.googleads.v23.errors.ChangeStatusErrorEnum.ChangeStatusError|null);

                        /** ErrorCode feed_error. */
                        public feed_error?: (google.ads.googleads.v23.errors.FeedErrorEnum.FeedError|keyof typeof google.ads.googleads.v23.errors.FeedErrorEnum.FeedError|null);

                        /** ErrorCode geo_target_constant_suggestion_error. */
                        public geo_target_constant_suggestion_error?: (google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|keyof typeof google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|null);

                        /** ErrorCode campaign_draft_error. */
                        public campaign_draft_error?: (google.ads.googleads.v23.errors.CampaignDraftErrorEnum.CampaignDraftError|keyof typeof google.ads.googleads.v23.errors.CampaignDraftErrorEnum.CampaignDraftError|null);

                        /** ErrorCode feed_item_error. */
                        public feed_item_error?: (google.ads.googleads.v23.errors.FeedItemErrorEnum.FeedItemError|keyof typeof google.ads.googleads.v23.errors.FeedItemErrorEnum.FeedItemError|null);

                        /** ErrorCode label_error. */
                        public label_error?: (google.ads.googleads.v23.errors.LabelErrorEnum.LabelError|keyof typeof google.ads.googleads.v23.errors.LabelErrorEnum.LabelError|null);

                        /** ErrorCode billing_setup_error. */
                        public billing_setup_error?: (google.ads.googleads.v23.errors.BillingSetupErrorEnum.BillingSetupError|keyof typeof google.ads.googleads.v23.errors.BillingSetupErrorEnum.BillingSetupError|null);

                        /** ErrorCode customer_client_link_error. */
                        public customer_client_link_error?: (google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|keyof typeof google.ads.googleads.v23.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|null);

                        /** ErrorCode customer_manager_link_error. */
                        public customer_manager_link_error?: (google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|keyof typeof google.ads.googleads.v23.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|null);

                        /** ErrorCode feed_mapping_error. */
                        public feed_mapping_error?: (google.ads.googleads.v23.errors.FeedMappingErrorEnum.FeedMappingError|keyof typeof google.ads.googleads.v23.errors.FeedMappingErrorEnum.FeedMappingError|null);

                        /** ErrorCode customer_feed_error. */
                        public customer_feed_error?: (google.ads.googleads.v23.errors.CustomerFeedErrorEnum.CustomerFeedError|keyof typeof google.ads.googleads.v23.errors.CustomerFeedErrorEnum.CustomerFeedError|null);

                        /** ErrorCode ad_group_feed_error. */
                        public ad_group_feed_error?: (google.ads.googleads.v23.errors.AdGroupFeedErrorEnum.AdGroupFeedError|keyof typeof google.ads.googleads.v23.errors.AdGroupFeedErrorEnum.AdGroupFeedError|null);

                        /** ErrorCode campaign_feed_error. */
                        public campaign_feed_error?: (google.ads.googleads.v23.errors.CampaignFeedErrorEnum.CampaignFeedError|keyof typeof google.ads.googleads.v23.errors.CampaignFeedErrorEnum.CampaignFeedError|null);

                        /** ErrorCode custom_interest_error. */
                        public custom_interest_error?: (google.ads.googleads.v23.errors.CustomInterestErrorEnum.CustomInterestError|keyof typeof google.ads.googleads.v23.errors.CustomInterestErrorEnum.CustomInterestError|null);

                        /** ErrorCode campaign_experiment_error. */
                        public campaign_experiment_error?: (google.ads.googleads.v23.errors.CampaignExperimentErrorEnum.CampaignExperimentError|keyof typeof google.ads.googleads.v23.errors.CampaignExperimentErrorEnum.CampaignExperimentError|null);

                        /** ErrorCode extension_feed_item_error. */
                        public extension_feed_item_error?: (google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|keyof typeof google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|null);

                        /** ErrorCode ad_parameter_error. */
                        public ad_parameter_error?: (google.ads.googleads.v23.errors.AdParameterErrorEnum.AdParameterError|keyof typeof google.ads.googleads.v23.errors.AdParameterErrorEnum.AdParameterError|null);

                        /** ErrorCode feed_item_validation_error. */
                        public feed_item_validation_error?: (google.ads.googleads.v23.errors.FeedItemValidationErrorEnum.FeedItemValidationError|keyof typeof google.ads.googleads.v23.errors.FeedItemValidationErrorEnum.FeedItemValidationError|null);

                        /** ErrorCode extension_setting_error. */
                        public extension_setting_error?: (google.ads.googleads.v23.errors.ExtensionSettingErrorEnum.ExtensionSettingError|keyof typeof google.ads.googleads.v23.errors.ExtensionSettingErrorEnum.ExtensionSettingError|null);

                        /** ErrorCode feed_item_set_error. */
                        public feed_item_set_error?: (google.ads.googleads.v23.errors.FeedItemSetErrorEnum.FeedItemSetError|keyof typeof google.ads.googleads.v23.errors.FeedItemSetErrorEnum.FeedItemSetError|null);

                        /** ErrorCode feed_item_set_link_error. */
                        public feed_item_set_link_error?: (google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|keyof typeof google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|null);

                        /** ErrorCode feed_item_target_error. */
                        public feed_item_target_error?: (google.ads.googleads.v23.errors.FeedItemTargetErrorEnum.FeedItemTargetError|keyof typeof google.ads.googleads.v23.errors.FeedItemTargetErrorEnum.FeedItemTargetError|null);

                        /** ErrorCode policy_violation_error. */
                        public policy_violation_error?: (google.ads.googleads.v23.errors.PolicyViolationErrorEnum.PolicyViolationError|keyof typeof google.ads.googleads.v23.errors.PolicyViolationErrorEnum.PolicyViolationError|null);

                        /** ErrorCode partial_failure_error. */
                        public partial_failure_error?: (google.ads.googleads.v23.errors.PartialFailureErrorEnum.PartialFailureError|keyof typeof google.ads.googleads.v23.errors.PartialFailureErrorEnum.PartialFailureError|null);

                        /** ErrorCode click_view_error. */
                        public click_view_error?: (google.ads.googleads.v23.errors.ClickViewErrorEnum.ClickViewError|keyof typeof google.ads.googleads.v23.errors.ClickViewErrorEnum.ClickViewError|null);

                        /** ErrorCode policy_validation_parameter_error. */
                        public policy_validation_parameter_error?: (google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|keyof typeof google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|null);

                        /** ErrorCode size_limit_error. */
                        public size_limit_error?: (google.ads.googleads.v23.errors.SizeLimitErrorEnum.SizeLimitError|keyof typeof google.ads.googleads.v23.errors.SizeLimitErrorEnum.SizeLimitError|null);

                        /** ErrorCode offline_user_data_job_error. */
                        public offline_user_data_job_error?: (google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|keyof typeof google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|null);

                        /** ErrorCode not_allowlisted_error. */
                        public not_allowlisted_error?: (google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|keyof typeof google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|null);

                        /** ErrorCode manager_link_error. */
                        public manager_link_error?: (google.ads.googleads.v23.errors.ManagerLinkErrorEnum.ManagerLinkError|keyof typeof google.ads.googleads.v23.errors.ManagerLinkErrorEnum.ManagerLinkError|null);

                        /** ErrorCode currency_code_error. */
                        public currency_code_error?: (google.ads.googleads.v23.errors.CurrencyCodeErrorEnum.CurrencyCodeError|keyof typeof google.ads.googleads.v23.errors.CurrencyCodeErrorEnum.CurrencyCodeError|null);

                        /** ErrorCode experiment_error. */
                        public experiment_error?: (google.ads.googleads.v23.errors.ExperimentErrorEnum.ExperimentError|keyof typeof google.ads.googleads.v23.errors.ExperimentErrorEnum.ExperimentError|null);

                        /** ErrorCode access_invitation_error. */
                        public access_invitation_error?: (google.ads.googleads.v23.errors.AccessInvitationErrorEnum.AccessInvitationError|keyof typeof google.ads.googleads.v23.errors.AccessInvitationErrorEnum.AccessInvitationError|null);

                        /** ErrorCode reach_plan_error. */
                        public reach_plan_error?: (google.ads.googleads.v23.errors.ReachPlanErrorEnum.ReachPlanError|keyof typeof google.ads.googleads.v23.errors.ReachPlanErrorEnum.ReachPlanError|null);

                        /** ErrorCode invoice_error. */
                        public invoice_error?: (google.ads.googleads.v23.errors.InvoiceErrorEnum.InvoiceError|keyof typeof google.ads.googleads.v23.errors.InvoiceErrorEnum.InvoiceError|null);

                        /** ErrorCode payments_account_error. */
                        public payments_account_error?: (google.ads.googleads.v23.errors.PaymentsAccountErrorEnum.PaymentsAccountError|keyof typeof google.ads.googleads.v23.errors.PaymentsAccountErrorEnum.PaymentsAccountError|null);

                        /** ErrorCode time_zone_error. */
                        public time_zone_error?: (google.ads.googleads.v23.errors.TimeZoneErrorEnum.TimeZoneError|keyof typeof google.ads.googleads.v23.errors.TimeZoneErrorEnum.TimeZoneError|null);

                        /** ErrorCode asset_link_error. */
                        public asset_link_error?: (google.ads.googleads.v23.errors.AssetLinkErrorEnum.AssetLinkError|keyof typeof google.ads.googleads.v23.errors.AssetLinkErrorEnum.AssetLinkError|null);

                        /** ErrorCode user_data_error. */
                        public user_data_error?: (google.ads.googleads.v23.errors.UserDataErrorEnum.UserDataError|keyof typeof google.ads.googleads.v23.errors.UserDataErrorEnum.UserDataError|null);

                        /** ErrorCode batch_job_error. */
                        public batch_job_error?: (google.ads.googleads.v23.errors.BatchJobErrorEnum.BatchJobError|keyof typeof google.ads.googleads.v23.errors.BatchJobErrorEnum.BatchJobError|null);

                        /** ErrorCode account_link_error. */
                        public account_link_error?: (google.ads.googleads.v23.errors.AccountLinkErrorEnum.AccountLinkError|keyof typeof google.ads.googleads.v23.errors.AccountLinkErrorEnum.AccountLinkError|null);

                        /** ErrorCode third_party_app_analytics_link_error. */
                        public third_party_app_analytics_link_error?: (google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|keyof typeof google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|null);

                        /** ErrorCode customer_user_access_error. */
                        public customer_user_access_error?: (google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|keyof typeof google.ads.googleads.v23.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|null);

                        /** ErrorCode custom_audience_error. */
                        public custom_audience_error?: (google.ads.googleads.v23.errors.CustomAudienceErrorEnum.CustomAudienceError|keyof typeof google.ads.googleads.v23.errors.CustomAudienceErrorEnum.CustomAudienceError|null);

                        /** ErrorCode audience_error. */
                        public audience_error?: (google.ads.googleads.v23.errors.AudienceErrorEnum.AudienceError|keyof typeof google.ads.googleads.v23.errors.AudienceErrorEnum.AudienceError|null);

                        /** ErrorCode search_term_insight_error. */
                        public search_term_insight_error?: (google.ads.googleads.v23.errors.SearchTermInsightErrorEnum.SearchTermInsightError|keyof typeof google.ads.googleads.v23.errors.SearchTermInsightErrorEnum.SearchTermInsightError|null);

                        /** ErrorCode smart_campaign_error. */
                        public smart_campaign_error?: (google.ads.googleads.v23.errors.SmartCampaignErrorEnum.SmartCampaignError|keyof typeof google.ads.googleads.v23.errors.SmartCampaignErrorEnum.SmartCampaignError|null);

                        /** ErrorCode experiment_arm_error. */
                        public experiment_arm_error?: (google.ads.googleads.v23.errors.ExperimentArmErrorEnum.ExperimentArmError|keyof typeof google.ads.googleads.v23.errors.ExperimentArmErrorEnum.ExperimentArmError|null);

                        /** ErrorCode audience_insights_error. */
                        public audience_insights_error?: (google.ads.googleads.v23.errors.AudienceInsightsErrorEnum.AudienceInsightsError|keyof typeof google.ads.googleads.v23.errors.AudienceInsightsErrorEnum.AudienceInsightsError|null);

                        /** ErrorCode product_link_error. */
                        public product_link_error?: (google.ads.googleads.v23.errors.ProductLinkErrorEnum.ProductLinkError|keyof typeof google.ads.googleads.v23.errors.ProductLinkErrorEnum.ProductLinkError|null);

                        /** ErrorCode data_link_error. */
                        public data_link_error?: (google.ads.googleads.v23.errors.DataLinkErrorEnum.DataLinkError|keyof typeof google.ads.googleads.v23.errors.DataLinkErrorEnum.DataLinkError|null);

                        /** ErrorCode customer_sk_ad_network_conversion_value_schema_error. */
                        public customer_sk_ad_network_conversion_value_schema_error?: (google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum.CustomerSkAdNetworkConversionValueSchemaError|keyof typeof google.ads.googleads.v23.errors.CustomerSkAdNetworkConversionValueSchemaErrorEnum.CustomerSkAdNetworkConversionValueSchemaError|null);

                        /** ErrorCode currency_error. */
                        public currency_error?: (google.ads.googleads.v23.errors.CurrencyErrorEnum.CurrencyError|keyof typeof google.ads.googleads.v23.errors.CurrencyErrorEnum.CurrencyError|null);

                        /** ErrorCode asset_group_signal_error. */
                        public asset_group_signal_error?: (google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum.AssetGroupSignalError|keyof typeof google.ads.googleads.v23.errors.AssetGroupSignalErrorEnum.AssetGroupSignalError|null);

                        /** ErrorCode product_link_invitation_error. */
                        public product_link_invitation_error?: (google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum.ProductLinkInvitationError|keyof typeof google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum.ProductLinkInvitationError|null);

                        /** ErrorCode customer_lifecycle_goal_error. */
                        public customer_lifecycle_goal_error?: (google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum.CustomerLifecycleGoalError|keyof typeof google.ads.googleads.v23.errors.CustomerLifecycleGoalErrorEnum.CustomerLifecycleGoalError|null);

                        /** ErrorCode campaign_lifecycle_goal_error. */
                        public campaign_lifecycle_goal_error?: (google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum.CampaignLifecycleGoalError|keyof typeof google.ads.googleads.v23.errors.CampaignLifecycleGoalErrorEnum.CampaignLifecycleGoalError|null);

                        /** ErrorCode identity_verification_error. */
                        public identity_verification_error?: (google.ads.googleads.v23.errors.IdentityVerificationErrorEnum.IdentityVerificationError|keyof typeof google.ads.googleads.v23.errors.IdentityVerificationErrorEnum.IdentityVerificationError|null);

                        /** ErrorCode user_list_customer_type_error. */
                        public user_list_customer_type_error?: (google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum.UserListCustomerTypeError|keyof typeof google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum.UserListCustomerTypeError|null);

                        /** ErrorCode shopping_product_error. */
                        public shopping_product_error?: (google.ads.googleads.v23.errors.ShoppingProductErrorEnum.ShoppingProductError|keyof typeof google.ads.googleads.v23.errors.ShoppingProductErrorEnum.ShoppingProductError|null);

                        /** ErrorCode automatically_created_asset_removal_error. */
                        public automatically_created_asset_removal_error?: (google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum.AutomaticallyCreatedAssetRemovalError|keyof typeof google.ads.googleads.v23.errors.AutomaticallyCreatedAssetRemovalErrorEnum.AutomaticallyCreatedAssetRemovalError|null);

                        /** ErrorCode shareable_preview_error. */
                        public shareable_preview_error?: (google.ads.googleads.v23.errors.ShareablePreviewErrorEnum.ShareablePreviewError|keyof typeof google.ads.googleads.v23.errors.ShareablePreviewErrorEnum.ShareablePreviewError|null);

                        /** ErrorCode campaign_goal_config_error. */
                        public campaign_goal_config_error?: (google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum.CampaignGoalConfigError|keyof typeof google.ads.googleads.v23.errors.CampaignGoalConfigErrorEnum.CampaignGoalConfigError|null);

                        /** ErrorCode goal_error. */
                        public goal_error?: (google.ads.googleads.v23.errors.GoalErrorEnum.GoalError|keyof typeof google.ads.googleads.v23.errors.GoalErrorEnum.GoalError|null);

                        /** ErrorCode brand_guidelines_migration_error. */
                        public brand_guidelines_migration_error?: (google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum.BrandGuidelinesMigrationError|keyof typeof google.ads.googleads.v23.errors.BrandGuidelinesMigrationErrorEnum.BrandGuidelinesMigrationError|null);

                        /** ErrorCode asset_generation_error. */
                        public asset_generation_error?: (google.ads.googleads.v23.errors.AssetGenerationErrorEnum.AssetGenerationError|keyof typeof google.ads.googleads.v23.errors.AssetGenerationErrorEnum.AssetGenerationError|null);

                        /** ErrorCode benchmarks_error. */
                        public benchmarks_error?: (google.ads.googleads.v23.errors.BenchmarksErrorEnum.BenchmarksError|keyof typeof google.ads.googleads.v23.errors.BenchmarksErrorEnum.BenchmarksError|null);

                        /** ErrorCode incentive_error. */
                        public incentive_error?: (google.ads.googleads.v23.errors.IncentiveErrorEnum.IncentiveError|keyof typeof google.ads.googleads.v23.errors.IncentiveErrorEnum.IncentiveError|null);

                        /** ErrorCode error_code. */
                        public error_code?: ("request_error"|"bidding_strategy_error"|"url_field_error"|"list_operation_error"|"query_error"|"mutate_error"|"field_mask_error"|"authorization_error"|"internal_error"|"quota_error"|"ad_error"|"ad_group_error"|"campaign_budget_error"|"campaign_error"|"video_campaign_error"|"authentication_error"|"ad_group_criterion_customizer_error"|"ad_group_criterion_error"|"ad_group_customizer_error"|"ad_customizer_error"|"ad_group_ad_error"|"ad_sharing_error"|"adx_error"|"asset_error"|"asset_group_asset_error"|"asset_group_listing_group_filter_error"|"asset_group_error"|"asset_set_asset_error"|"asset_set_link_error"|"asset_set_error"|"bidding_error"|"campaign_criterion_error"|"campaign_conversion_goal_error"|"campaign_customizer_error"|"collection_size_error"|"conversion_goal_campaign_config_error"|"country_code_error"|"criterion_error"|"custom_conversion_goal_error"|"customer_customizer_error"|"customer_error"|"customizer_attribute_error"|"date_error"|"date_range_error"|"distinct_error"|"feed_attribute_reference_error"|"final_url_expansion_asset_view_error"|"function_error"|"function_parsing_error"|"id_error"|"image_error"|"language_code_error"|"media_bundle_error"|"media_upload_error"|"media_file_error"|"merchant_center_error"|"multiplier_error"|"new_resource_creation_error"|"not_empty_error"|"null_error"|"operator_error"|"range_error"|"recommendation_error"|"recommendation_subscription_error"|"region_code_error"|"setting_error"|"string_format_error"|"string_length_error"|"operation_access_denied_error"|"resource_access_denied_error"|"resource_count_limit_exceeded_error"|"youtube_video_registration_error"|"ad_group_bid_modifier_error"|"context_error"|"field_error"|"shared_set_error"|"shared_criterion_error"|"campaign_shared_set_error"|"conversion_action_error"|"conversion_adjustment_upload_error"|"conversion_custom_variable_error"|"conversion_upload_error"|"conversion_value_rule_error"|"conversion_value_rule_set_error"|"header_error"|"database_error"|"policy_finding_error"|"enum_error"|"keyword_plan_error"|"keyword_plan_campaign_error"|"keyword_plan_campaign_keyword_error"|"keyword_plan_ad_group_error"|"keyword_plan_ad_group_keyword_error"|"keyword_plan_idea_error"|"account_budget_proposal_error"|"user_list_error"|"change_event_error"|"change_status_error"|"feed_error"|"geo_target_constant_suggestion_error"|"campaign_draft_error"|"feed_item_error"|"label_error"|"billing_setup_error"|"customer_client_link_error"|"customer_manager_link_error"|"feed_mapping_error"|"customer_feed_error"|"ad_group_feed_error"|"campaign_feed_error"|"custom_interest_error"|"campaign_experiment_error"|"extension_feed_item_error"|"ad_parameter_error"|"feed_item_validation_error"|"extension_setting_error"|"feed_item_set_error"|"feed_item_set_link_error"|"feed_item_target_error"|"policy_violation_error"|"partial_failure_error"|"click_view_error"|"policy_validation_parameter_error"|"size_limit_error"|"offline_user_data_job_error"|"not_allowlisted_error"|"manager_link_error"|"currency_code_error"|"experiment_error"|"access_invitation_error"|"reach_plan_error"|"invoice_error"|"payments_account_error"|"time_zone_error"|"asset_link_error"|"user_data_error"|"batch_job_error"|"account_link_error"|"third_party_app_analytics_link_error"|"customer_user_access_error"|"custom_audience_error"|"audience_error"|"search_term_insight_error"|"smart_campaign_error"|"experiment_arm_error"|"audience_insights_error"|"product_link_error"|"data_link_error"|"customer_sk_ad_network_conversion_value_schema_error"|"currency_error"|"asset_group_signal_error"|"product_link_invitation_error"|"customer_lifecycle_goal_error"|"campaign_lifecycle_goal_error"|"identity_verification_error"|"user_list_customer_type_error"|"shopping_product_error"|"automatically_created_asset_removal_error"|"shareable_preview_error"|"campaign_goal_config_error"|"goal_error"|"brand_guidelines_migration_error"|"asset_generation_error"|"benchmarks_error"|"incentive_error");

                        /**
                         * Creates a new ErrorCode instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ErrorCode instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IErrorCode): google.ads.googleads.v23.errors.ErrorCode;

                        /**
                         * Encodes the specified ErrorCode message. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorCode.verify|verify} messages.
                         * @param message ErrorCode message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IErrorCode, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ErrorCode message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorCode.verify|verify} messages.
                         * @param message ErrorCode message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IErrorCode, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ErrorCode message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ErrorCode
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ErrorCode;

                        /**
                         * Decodes an ErrorCode message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ErrorCode
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ErrorCode;

                        /**
                         * Verifies an ErrorCode message.
                         * @param message Plain 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 ErrorCode message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ErrorCode
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ErrorCode;

                        /**
                         * Creates a plain object from an ErrorCode message. Also converts values to other types if specified.
                         * @param message ErrorCode
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ErrorCode, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ErrorCode to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ErrorCode
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ErrorLocation. */
                    interface IErrorLocation {

                        /** ErrorLocation field_path_elements */
                        field_path_elements?: (google.ads.googleads.v23.errors.ErrorLocation.IFieldPathElement[]|null);
                    }

                    /** Represents an ErrorLocation. */
                    class ErrorLocation implements IErrorLocation {

                        /**
                         * Constructs a new ErrorLocation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IErrorLocation);

                        /** ErrorLocation field_path_elements. */
                        public field_path_elements: google.ads.googleads.v23.errors.ErrorLocation.IFieldPathElement[];

                        /**
                         * Creates a new ErrorLocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ErrorLocation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IErrorLocation): google.ads.googleads.v23.errors.ErrorLocation;

                        /**
                         * Encodes the specified ErrorLocation message. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorLocation.verify|verify} messages.
                         * @param message ErrorLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IErrorLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ErrorLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorLocation.verify|verify} messages.
                         * @param message ErrorLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IErrorLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ErrorLocation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ErrorLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ErrorLocation;

                        /**
                         * Decodes an ErrorLocation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ErrorLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ErrorLocation;

                        /**
                         * Verifies an ErrorLocation message.
                         * @param message Plain 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 ErrorLocation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ErrorLocation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ErrorLocation;

                        /**
                         * Creates a plain object from an ErrorLocation message. Also converts values to other types if specified.
                         * @param message ErrorLocation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ErrorLocation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ErrorLocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ErrorLocation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ErrorLocation {

                        /** Properties of a FieldPathElement. */
                        interface IFieldPathElement {

                            /** FieldPathElement field_name */
                            field_name?: (string|null);

                            /** FieldPathElement index */
                            index?: (number|null);
                        }

                        /** Represents a FieldPathElement. */
                        class FieldPathElement implements IFieldPathElement {

                            /**
                             * Constructs a new FieldPathElement.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.errors.ErrorLocation.IFieldPathElement);

                            /** FieldPathElement field_name. */
                            public field_name: string;

                            /** FieldPathElement index. */
                            public index?: (number|null);

                            /**
                             * Creates a new FieldPathElement instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FieldPathElement instance
                             */
                            public static create(properties?: google.ads.googleads.v23.errors.ErrorLocation.IFieldPathElement): google.ads.googleads.v23.errors.ErrorLocation.FieldPathElement;

                            /**
                             * Encodes the specified FieldPathElement message. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorLocation.FieldPathElement.verify|verify} messages.
                             * @param message FieldPathElement message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.errors.ErrorLocation.IFieldPathElement, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FieldPathElement message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorLocation.FieldPathElement.verify|verify} messages.
                             * @param message FieldPathElement message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.errors.ErrorLocation.IFieldPathElement, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FieldPathElement message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FieldPathElement
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ErrorLocation.FieldPathElement;

                            /**
                             * Decodes a FieldPathElement message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FieldPathElement
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ErrorLocation.FieldPathElement;

                            /**
                             * Verifies a FieldPathElement message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FieldPathElement message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FieldPathElement
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ErrorLocation.FieldPathElement;

                            /**
                             * Creates a plain object from a FieldPathElement message. Also converts values to other types if specified.
                             * @param message FieldPathElement
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.errors.ErrorLocation.FieldPathElement, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FieldPathElement to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FieldPathElement
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an ErrorDetails. */
                    interface IErrorDetails {

                        /** ErrorDetails unpublished_error_code */
                        unpublished_error_code?: (string|null);

                        /** ErrorDetails policy_violation_details */
                        policy_violation_details?: (google.ads.googleads.v23.errors.IPolicyViolationDetails|null);

                        /** ErrorDetails policy_finding_details */
                        policy_finding_details?: (google.ads.googleads.v23.errors.IPolicyFindingDetails|null);

                        /** ErrorDetails quota_error_details */
                        quota_error_details?: (google.ads.googleads.v23.errors.IQuotaErrorDetails|null);

                        /** ErrorDetails resource_count_details */
                        resource_count_details?: (google.ads.googleads.v23.errors.IResourceCountDetails|null);

                        /** ErrorDetails budget_per_day_minimum_error_details */
                        budget_per_day_minimum_error_details?: (google.ads.googleads.v23.errors.IBudgetPerDayMinimumErrorDetails|null);
                    }

                    /** Represents an ErrorDetails. */
                    class ErrorDetails implements IErrorDetails {

                        /**
                         * Constructs a new ErrorDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IErrorDetails);

                        /** ErrorDetails unpublished_error_code. */
                        public unpublished_error_code: string;

                        /** ErrorDetails policy_violation_details. */
                        public policy_violation_details?: (google.ads.googleads.v23.errors.IPolicyViolationDetails|null);

                        /** ErrorDetails policy_finding_details. */
                        public policy_finding_details?: (google.ads.googleads.v23.errors.IPolicyFindingDetails|null);

                        /** ErrorDetails quota_error_details. */
                        public quota_error_details?: (google.ads.googleads.v23.errors.IQuotaErrorDetails|null);

                        /** ErrorDetails resource_count_details. */
                        public resource_count_details?: (google.ads.googleads.v23.errors.IResourceCountDetails|null);

                        /** ErrorDetails budget_per_day_minimum_error_details. */
                        public budget_per_day_minimum_error_details?: (google.ads.googleads.v23.errors.IBudgetPerDayMinimumErrorDetails|null);

                        /**
                         * Creates a new ErrorDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ErrorDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IErrorDetails): google.ads.googleads.v23.errors.ErrorDetails;

                        /**
                         * Encodes the specified ErrorDetails message. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorDetails.verify|verify} messages.
                         * @param message ErrorDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ErrorDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ErrorDetails.verify|verify} messages.
                         * @param message ErrorDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ErrorDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ErrorDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ErrorDetails;

                        /**
                         * Decodes an ErrorDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ErrorDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ErrorDetails;

                        /**
                         * Verifies an ErrorDetails message.
                         * @param message Plain 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 ErrorDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ErrorDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ErrorDetails;

                        /**
                         * Creates a plain object from an ErrorDetails message. Also converts values to other types if specified.
                         * @param message ErrorDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ErrorDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ErrorDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ErrorDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PolicyViolationDetails. */
                    interface IPolicyViolationDetails {

                        /** PolicyViolationDetails external_policy_description */
                        external_policy_description?: (string|null);

                        /** PolicyViolationDetails key */
                        key?: (google.ads.googleads.v23.common.IPolicyViolationKey|null);

                        /** PolicyViolationDetails external_policy_name */
                        external_policy_name?: (string|null);

                        /** PolicyViolationDetails is_exemptible */
                        is_exemptible?: (boolean|null);
                    }

                    /** Represents a PolicyViolationDetails. */
                    class PolicyViolationDetails implements IPolicyViolationDetails {

                        /**
                         * Constructs a new PolicyViolationDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IPolicyViolationDetails);

                        /** PolicyViolationDetails external_policy_description. */
                        public external_policy_description: string;

                        /** PolicyViolationDetails key. */
                        public key?: (google.ads.googleads.v23.common.IPolicyViolationKey|null);

                        /** PolicyViolationDetails external_policy_name. */
                        public external_policy_name: string;

                        /** PolicyViolationDetails is_exemptible. */
                        public is_exemptible: boolean;

                        /**
                         * Creates a new PolicyViolationDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyViolationDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IPolicyViolationDetails): google.ads.googleads.v23.errors.PolicyViolationDetails;

                        /**
                         * Encodes the specified PolicyViolationDetails message. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyViolationDetails.verify|verify} messages.
                         * @param message PolicyViolationDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IPolicyViolationDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyViolationDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyViolationDetails.verify|verify} messages.
                         * @param message PolicyViolationDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IPolicyViolationDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyViolationDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyViolationDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.PolicyViolationDetails;

                        /**
                         * Decodes a PolicyViolationDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyViolationDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.PolicyViolationDetails;

                        /**
                         * Verifies a PolicyViolationDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyViolationDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyViolationDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.PolicyViolationDetails;

                        /**
                         * Creates a plain object from a PolicyViolationDetails message. Also converts values to other types if specified.
                         * @param message PolicyViolationDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.PolicyViolationDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyViolationDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyViolationDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PolicyFindingDetails. */
                    interface IPolicyFindingDetails {

                        /** PolicyFindingDetails policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v23.common.IPolicyTopicEntry[]|null);
                    }

                    /** Represents a PolicyFindingDetails. */
                    class PolicyFindingDetails implements IPolicyFindingDetails {

                        /**
                         * Constructs a new PolicyFindingDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IPolicyFindingDetails);

                        /** PolicyFindingDetails policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v23.common.IPolicyTopicEntry[];

                        /**
                         * Creates a new PolicyFindingDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyFindingDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IPolicyFindingDetails): google.ads.googleads.v23.errors.PolicyFindingDetails;

                        /**
                         * Encodes the specified PolicyFindingDetails message. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyFindingDetails.verify|verify} messages.
                         * @param message PolicyFindingDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IPolicyFindingDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyFindingDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyFindingDetails.verify|verify} messages.
                         * @param message PolicyFindingDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IPolicyFindingDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyFindingDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyFindingDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.PolicyFindingDetails;

                        /**
                         * Decodes a PolicyFindingDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyFindingDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.PolicyFindingDetails;

                        /**
                         * Verifies a PolicyFindingDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyFindingDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyFindingDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.PolicyFindingDetails;

                        /**
                         * Creates a plain object from a PolicyFindingDetails message. Also converts values to other types if specified.
                         * @param message PolicyFindingDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.PolicyFindingDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyFindingDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyFindingDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a QuotaErrorDetails. */
                    interface IQuotaErrorDetails {

                        /** QuotaErrorDetails rate_scope */
                        rate_scope?: (google.ads.googleads.v23.errors.QuotaErrorDetails.QuotaRateScope|keyof typeof google.ads.googleads.v23.errors.QuotaErrorDetails.QuotaRateScope|null);

                        /** QuotaErrorDetails rate_name */
                        rate_name?: (string|null);

                        /** QuotaErrorDetails retry_delay */
                        retry_delay?: (google.protobuf.IDuration|null);
                    }

                    /** Represents a QuotaErrorDetails. */
                    class QuotaErrorDetails implements IQuotaErrorDetails {

                        /**
                         * Constructs a new QuotaErrorDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IQuotaErrorDetails);

                        /** QuotaErrorDetails rate_scope. */
                        public rate_scope: (google.ads.googleads.v23.errors.QuotaErrorDetails.QuotaRateScope|keyof typeof google.ads.googleads.v23.errors.QuotaErrorDetails.QuotaRateScope);

                        /** QuotaErrorDetails rate_name. */
                        public rate_name: string;

                        /** QuotaErrorDetails retry_delay. */
                        public retry_delay?: (google.protobuf.IDuration|null);

                        /**
                         * Creates a new QuotaErrorDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QuotaErrorDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IQuotaErrorDetails): google.ads.googleads.v23.errors.QuotaErrorDetails;

                        /**
                         * Encodes the specified QuotaErrorDetails message. Does not implicitly {@link google.ads.googleads.v23.errors.QuotaErrorDetails.verify|verify} messages.
                         * @param message QuotaErrorDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IQuotaErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QuotaErrorDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.QuotaErrorDetails.verify|verify} messages.
                         * @param message QuotaErrorDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IQuotaErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QuotaErrorDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QuotaErrorDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.QuotaErrorDetails;

                        /**
                         * Decodes a QuotaErrorDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QuotaErrorDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.QuotaErrorDetails;

                        /**
                         * Verifies a QuotaErrorDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QuotaErrorDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QuotaErrorDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.QuotaErrorDetails;

                        /**
                         * Creates a plain object from a QuotaErrorDetails message. Also converts values to other types if specified.
                         * @param message QuotaErrorDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.QuotaErrorDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QuotaErrorDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QuotaErrorDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace QuotaErrorDetails {

                        /** QuotaRateScope enum. */
                        enum QuotaRateScope {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACCOUNT = 2,
                            DEVELOPER = 3
                        }
                    }

                    /** Properties of a ResourceCountDetails. */
                    interface IResourceCountDetails {

                        /** ResourceCountDetails enclosing_id */
                        enclosing_id?: (string|null);

                        /** ResourceCountDetails enclosing_resource */
                        enclosing_resource?: (string|null);

                        /** ResourceCountDetails limit */
                        limit?: (number|null);

                        /** ResourceCountDetails limit_type */
                        limit_type?: (google.ads.googleads.v23.enums.ResourceLimitTypeEnum.ResourceLimitType|keyof typeof google.ads.googleads.v23.enums.ResourceLimitTypeEnum.ResourceLimitType|null);

                        /** ResourceCountDetails existing_count */
                        existing_count?: (number|null);
                    }

                    /** Represents a ResourceCountDetails. */
                    class ResourceCountDetails implements IResourceCountDetails {

                        /**
                         * Constructs a new ResourceCountDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IResourceCountDetails);

                        /** ResourceCountDetails enclosing_id. */
                        public enclosing_id: string;

                        /** ResourceCountDetails enclosing_resource. */
                        public enclosing_resource: string;

                        /** ResourceCountDetails limit. */
                        public limit: number;

                        /** ResourceCountDetails limit_type. */
                        public limit_type: (google.ads.googleads.v23.enums.ResourceLimitTypeEnum.ResourceLimitType|keyof typeof google.ads.googleads.v23.enums.ResourceLimitTypeEnum.ResourceLimitType);

                        /** ResourceCountDetails existing_count. */
                        public existing_count: number;

                        /**
                         * Creates a new ResourceCountDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResourceCountDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IResourceCountDetails): google.ads.googleads.v23.errors.ResourceCountDetails;

                        /**
                         * Encodes the specified ResourceCountDetails message. Does not implicitly {@link google.ads.googleads.v23.errors.ResourceCountDetails.verify|verify} messages.
                         * @param message ResourceCountDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IResourceCountDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceCountDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ResourceCountDetails.verify|verify} messages.
                         * @param message ResourceCountDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IResourceCountDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceCountDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ResourceCountDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ResourceCountDetails;

                        /**
                         * Decodes a ResourceCountDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ResourceCountDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ResourceCountDetails;

                        /**
                         * Verifies a ResourceCountDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceCountDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ResourceCountDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ResourceCountDetails;

                        /**
                         * Creates a plain object from a ResourceCountDetails message. Also converts values to other types if specified.
                         * @param message ResourceCountDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ResourceCountDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceCountDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ResourceCountDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BudgetPerDayMinimumErrorDetails. */
                    interface IBudgetPerDayMinimumErrorDetails {

                        /** BudgetPerDayMinimumErrorDetails currency_code */
                        currency_code?: (string|null);

                        /** BudgetPerDayMinimumErrorDetails budget_per_day_minimum_micros */
                        budget_per_day_minimum_micros?: (number|null);

                        /** BudgetPerDayMinimumErrorDetails minimum_budget_amount_micros */
                        minimum_budget_amount_micros?: (number|null);

                        /** BudgetPerDayMinimumErrorDetails minimum_budget_total_amount_micros */
                        minimum_budget_total_amount_micros?: (number|null);

                        /** BudgetPerDayMinimumErrorDetails failed_budget_amount_micros */
                        failed_budget_amount_micros?: (number|null);

                        /** BudgetPerDayMinimumErrorDetails failed_budget_total_amount_micros */
                        failed_budget_total_amount_micros?: (number|null);
                    }

                    /** Represents a BudgetPerDayMinimumErrorDetails. */
                    class BudgetPerDayMinimumErrorDetails implements IBudgetPerDayMinimumErrorDetails {

                        /**
                         * Constructs a new BudgetPerDayMinimumErrorDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IBudgetPerDayMinimumErrorDetails);

                        /** BudgetPerDayMinimumErrorDetails currency_code. */
                        public currency_code: string;

                        /** BudgetPerDayMinimumErrorDetails budget_per_day_minimum_micros. */
                        public budget_per_day_minimum_micros: number;

                        /** BudgetPerDayMinimumErrorDetails minimum_budget_amount_micros. */
                        public minimum_budget_amount_micros: number;

                        /** BudgetPerDayMinimumErrorDetails minimum_budget_total_amount_micros. */
                        public minimum_budget_total_amount_micros: number;

                        /** BudgetPerDayMinimumErrorDetails failed_budget_amount_micros. */
                        public failed_budget_amount_micros: number;

                        /** BudgetPerDayMinimumErrorDetails failed_budget_total_amount_micros. */
                        public failed_budget_total_amount_micros: number;

                        /**
                         * Creates a new BudgetPerDayMinimumErrorDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetPerDayMinimumErrorDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IBudgetPerDayMinimumErrorDetails): google.ads.googleads.v23.errors.BudgetPerDayMinimumErrorDetails;

                        /**
                         * Encodes the specified BudgetPerDayMinimumErrorDetails message. Does not implicitly {@link google.ads.googleads.v23.errors.BudgetPerDayMinimumErrorDetails.verify|verify} messages.
                         * @param message BudgetPerDayMinimumErrorDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IBudgetPerDayMinimumErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetPerDayMinimumErrorDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.BudgetPerDayMinimumErrorDetails.verify|verify} messages.
                         * @param message BudgetPerDayMinimumErrorDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IBudgetPerDayMinimumErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetPerDayMinimumErrorDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BudgetPerDayMinimumErrorDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.BudgetPerDayMinimumErrorDetails;

                        /**
                         * Decodes a BudgetPerDayMinimumErrorDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BudgetPerDayMinimumErrorDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.BudgetPerDayMinimumErrorDetails;

                        /**
                         * Verifies a BudgetPerDayMinimumErrorDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetPerDayMinimumErrorDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BudgetPerDayMinimumErrorDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.BudgetPerDayMinimumErrorDetails;

                        /**
                         * Creates a plain object from a BudgetPerDayMinimumErrorDetails message. Also converts values to other types if specified.
                         * @param message BudgetPerDayMinimumErrorDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.BudgetPerDayMinimumErrorDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetPerDayMinimumErrorDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BudgetPerDayMinimumErrorDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExperimentArmErrorEnum. */
                    interface IExperimentArmErrorEnum {
                    }

                    /** Represents an ExperimentArmErrorEnum. */
                    class ExperimentArmErrorEnum implements IExperimentArmErrorEnum {

                        /**
                         * Constructs a new ExperimentArmErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IExperimentArmErrorEnum);

                        /**
                         * Creates a new ExperimentArmErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentArmErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IExperimentArmErrorEnum): google.ads.googleads.v23.errors.ExperimentArmErrorEnum;

                        /**
                         * Encodes the specified ExperimentArmErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ExperimentArmErrorEnum.verify|verify} messages.
                         * @param message ExperimentArmErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IExperimentArmErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentArmErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ExperimentArmErrorEnum.verify|verify} messages.
                         * @param message ExperimentArmErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IExperimentArmErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentArmErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentArmErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ExperimentArmErrorEnum;

                        /**
                         * Decodes an ExperimentArmErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentArmErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ExperimentArmErrorEnum;

                        /**
                         * Verifies an ExperimentArmErrorEnum message.
                         * @param message Plain 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 ExperimentArmErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentArmErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ExperimentArmErrorEnum;

                        /**
                         * Creates a plain object from an ExperimentArmErrorEnum message. Also converts values to other types if specified.
                         * @param message ExperimentArmErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ExperimentArmErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentArmErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentArmErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExperimentArmErrorEnum {

                        /** ExperimentArmError enum. */
                        enum ExperimentArmError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXPERIMENT_ARM_COUNT_LIMIT_EXCEEDED = 2,
                            INVALID_CAMPAIGN_STATUS = 3,
                            DUPLICATE_EXPERIMENT_ARM_NAME = 4,
                            CANNOT_SET_TREATMENT_ARM_CAMPAIGN = 5,
                            CANNOT_MODIFY_CAMPAIGN_IDS = 6,
                            CANNOT_MODIFY_CAMPAIGN_WITHOUT_SUFFIX_SET = 7,
                            CANNOT_MUTATE_TRAFFIC_SPLIT_AFTER_START = 8,
                            CANNOT_ADD_CAMPAIGN_WITH_SHARED_BUDGET = 9,
                            CANNOT_ADD_CAMPAIGN_WITH_CUSTOM_BUDGET = 10,
                            CANNOT_ADD_CAMPAIGNS_WITH_DYNAMIC_ASSETS_ENABLED = 11,
                            UNSUPPORTED_CAMPAIGN_ADVERTISING_CHANNEL_SUB_TYPE = 12,
                            CANNOT_ADD_BASE_CAMPAIGN_WITH_DATE_RANGE = 13,
                            BIDDING_STRATEGY_NOT_SUPPORTED_IN_EXPERIMENTS = 14,
                            TRAFFIC_SPLIT_NOT_SUPPORTED_FOR_CHANNEL_TYPE = 15
                        }
                    }

                    /** Properties of an ExperimentErrorEnum. */
                    interface IExperimentErrorEnum {
                    }

                    /** Represents an ExperimentErrorEnum. */
                    class ExperimentErrorEnum implements IExperimentErrorEnum {

                        /**
                         * Constructs a new ExperimentErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IExperimentErrorEnum);

                        /**
                         * Creates a new ExperimentErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IExperimentErrorEnum): google.ads.googleads.v23.errors.ExperimentErrorEnum;

                        /**
                         * Encodes the specified ExperimentErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ExperimentErrorEnum.verify|verify} messages.
                         * @param message ExperimentErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IExperimentErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ExperimentErrorEnum.verify|verify} messages.
                         * @param message ExperimentErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IExperimentErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ExperimentErrorEnum;

                        /**
                         * Decodes an ExperimentErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ExperimentErrorEnum;

                        /**
                         * Verifies an ExperimentErrorEnum message.
                         * @param message Plain 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 ExperimentErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ExperimentErrorEnum;

                        /**
                         * Creates a plain object from an ExperimentErrorEnum message. Also converts values to other types if specified.
                         * @param message ExperimentErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ExperimentErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExperimentErrorEnum {

                        /** ExperimentError enum. */
                        enum ExperimentError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_SET_START_DATE_IN_PAST = 2,
                            END_DATE_BEFORE_START_DATE = 3,
                            START_DATE_TOO_FAR_IN_FUTURE = 4,
                            DUPLICATE_EXPERIMENT_NAME = 5,
                            CANNOT_MODIFY_REMOVED_EXPERIMENT = 6,
                            START_DATE_ALREADY_PASSED = 7,
                            CANNOT_SET_END_DATE_IN_PAST = 8,
                            CANNOT_SET_STATUS_TO_REMOVED = 9,
                            CANNOT_MODIFY_PAST_END_DATE = 10,
                            INVALID_STATUS = 11,
                            INVALID_CAMPAIGN_CHANNEL_TYPE = 12,
                            OVERLAPPING_MEMBERS_AND_DATE_RANGE = 13,
                            INVALID_TRIAL_ARM_TRAFFIC_SPLIT = 14,
                            TRAFFIC_SPLIT_OVERLAPPING = 15,
                            SUM_TRIAL_ARM_TRAFFIC_UNEQUALS_TO_TRIAL_TRAFFIC_SPLIT_DENOMINATOR = 16,
                            CANNOT_MODIFY_TRAFFIC_SPLIT_AFTER_START = 17,
                            EXPERIMENT_NOT_FOUND = 18,
                            EXPERIMENT_NOT_YET_STARTED = 19,
                            CANNOT_HAVE_MULTIPLE_CONTROL_ARMS = 20,
                            IN_DESIGN_CAMPAIGNS_NOT_SET = 21,
                            CANNOT_SET_STATUS_TO_GRADUATED = 22,
                            CANNOT_CREATE_EXPERIMENT_CAMPAIGN_WITH_SHARED_BUDGET = 23,
                            CANNOT_CREATE_EXPERIMENT_CAMPAIGN_WITH_CUSTOM_BUDGET = 24,
                            STATUS_TRANSITION_INVALID = 25,
                            DUPLICATE_EXPERIMENT_CAMPAIGN_NAME = 26,
                            CANNOT_REMOVE_IN_CREATION_EXPERIMENT = 27,
                            CANNOT_ADD_CAMPAIGN_WITH_DEPRECATED_AD_TYPES = 28,
                            CANNOT_ENABLE_SYNC_FOR_UNSUPPORTED_EXPERIMENT_TYPE = 29,
                            INVALID_DURATION_FOR_AN_EXPERIMENT = 30,
                            MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION = 31
                        }
                    }

                    /** Properties of an ExtensionFeedItemErrorEnum. */
                    interface IExtensionFeedItemErrorEnum {
                    }

                    /** Represents an ExtensionFeedItemErrorEnum. */
                    class ExtensionFeedItemErrorEnum implements IExtensionFeedItemErrorEnum {

                        /**
                         * Constructs a new ExtensionFeedItemErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IExtensionFeedItemErrorEnum);

                        /**
                         * Creates a new ExtensionFeedItemErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExtensionFeedItemErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IExtensionFeedItemErrorEnum): google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum;

                        /**
                         * Encodes the specified ExtensionFeedItemErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum.verify|verify} messages.
                         * @param message ExtensionFeedItemErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IExtensionFeedItemErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionFeedItemErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum.verify|verify} messages.
                         * @param message ExtensionFeedItemErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IExtensionFeedItemErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionFeedItemErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExtensionFeedItemErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum;

                        /**
                         * Decodes an ExtensionFeedItemErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExtensionFeedItemErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum;

                        /**
                         * Verifies an ExtensionFeedItemErrorEnum message.
                         * @param message Plain 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 ExtensionFeedItemErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExtensionFeedItemErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum;

                        /**
                         * Creates a plain object from an ExtensionFeedItemErrorEnum message. Also converts values to other types if specified.
                         * @param message ExtensionFeedItemErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ExtensionFeedItemErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionFeedItemErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExtensionFeedItemErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExtensionFeedItemErrorEnum {

                        /** ExtensionFeedItemError enum. */
                        enum ExtensionFeedItemError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VALUE_OUT_OF_RANGE = 2,
                            URL_LIST_TOO_LONG = 3,
                            CANNOT_HAVE_RESTRICTION_ON_EMPTY_GEO_TARGETING = 4,
                            CANNOT_SET_WITH_FINAL_URLS = 5,
                            CANNOT_SET_WITHOUT_FINAL_URLS = 6,
                            INVALID_PHONE_NUMBER = 7,
                            PHONE_NUMBER_NOT_SUPPORTED_FOR_COUNTRY = 8,
                            CARRIER_SPECIFIC_SHORT_NUMBER_NOT_ALLOWED = 9,
                            PREMIUM_RATE_NUMBER_NOT_ALLOWED = 10,
                            DISALLOWED_NUMBER_TYPE = 11,
                            INVALID_DOMESTIC_PHONE_NUMBER_FORMAT = 12,
                            VANITY_PHONE_NUMBER_NOT_ALLOWED = 13,
                            INVALID_CALL_CONVERSION_ACTION = 14,
                            CUSTOMER_NOT_ON_ALLOWLIST_FOR_CALLTRACKING = 47,
                            CALLTRACKING_NOT_SUPPORTED_FOR_COUNTRY = 16,
                            CUSTOMER_CONSENT_FOR_CALL_RECORDING_REQUIRED = 17,
                            INVALID_APP_ID = 18,
                            QUOTES_IN_REVIEW_EXTENSION_SNIPPET = 19,
                            HYPHENS_IN_REVIEW_EXTENSION_SNIPPET = 20,
                            REVIEW_EXTENSION_SOURCE_INELIGIBLE = 21,
                            SOURCE_NAME_IN_REVIEW_EXTENSION_TEXT = 22,
                            INCONSISTENT_CURRENCY_CODES = 23,
                            PRICE_EXTENSION_HAS_DUPLICATED_HEADERS = 24,
                            PRICE_ITEM_HAS_DUPLICATED_HEADER_AND_DESCRIPTION = 25,
                            PRICE_EXTENSION_HAS_TOO_FEW_ITEMS = 26,
                            PRICE_EXTENSION_HAS_TOO_MANY_ITEMS = 27,
                            UNSUPPORTED_VALUE = 28,
                            UNSUPPORTED_VALUE_IN_SELECTED_LANGUAGE = 29,
                            INVALID_DEVICE_PREFERENCE = 30,
                            INVALID_SCHEDULE_END = 31,
                            DATE_TIME_MUST_BE_IN_ACCOUNT_TIME_ZONE = 32,
                            INVALID_SNIPPETS_HEADER = 33,
                            CANNOT_OPERATE_ON_REMOVED_FEED_ITEM = 34,
                            PHONE_NUMBER_NOT_SUPPORTED_WITH_CALLTRACKING_FOR_COUNTRY = 35,
                            CONFLICTING_CALL_CONVERSION_SETTINGS = 36,
                            EXTENSION_TYPE_MISMATCH = 37,
                            EXTENSION_SUBTYPE_REQUIRED = 38,
                            EXTENSION_TYPE_UNSUPPORTED = 39,
                            CANNOT_OPERATE_ON_FEED_WITH_MULTIPLE_MAPPINGS = 40,
                            CANNOT_OPERATE_ON_FEED_WITH_KEY_ATTRIBUTES = 41,
                            INVALID_PRICE_FORMAT = 42,
                            PROMOTION_INVALID_TIME = 43,
                            TOO_MANY_DECIMAL_PLACES_SPECIFIED = 44,
                            CONCRETE_EXTENSION_TYPE_REQUIRED = 45,
                            SCHEDULE_END_NOT_AFTER_START = 46
                        }
                    }

                    /** Properties of an ExtensionSettingErrorEnum. */
                    interface IExtensionSettingErrorEnum {
                    }

                    /** Represents an ExtensionSettingErrorEnum. */
                    class ExtensionSettingErrorEnum implements IExtensionSettingErrorEnum {

                        /**
                         * Constructs a new ExtensionSettingErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IExtensionSettingErrorEnum);

                        /**
                         * Creates a new ExtensionSettingErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExtensionSettingErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IExtensionSettingErrorEnum): google.ads.googleads.v23.errors.ExtensionSettingErrorEnum;

                        /**
                         * Encodes the specified ExtensionSettingErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ExtensionSettingErrorEnum.verify|verify} messages.
                         * @param message ExtensionSettingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IExtensionSettingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionSettingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ExtensionSettingErrorEnum.verify|verify} messages.
                         * @param message ExtensionSettingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IExtensionSettingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionSettingErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExtensionSettingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ExtensionSettingErrorEnum;

                        /**
                         * Decodes an ExtensionSettingErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExtensionSettingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ExtensionSettingErrorEnum;

                        /**
                         * Verifies an ExtensionSettingErrorEnum message.
                         * @param message Plain 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 ExtensionSettingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExtensionSettingErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ExtensionSettingErrorEnum;

                        /**
                         * Creates a plain object from an ExtensionSettingErrorEnum message. Also converts values to other types if specified.
                         * @param message ExtensionSettingErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ExtensionSettingErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionSettingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExtensionSettingErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExtensionSettingErrorEnum {

                        /** ExtensionSettingError enum. */
                        enum ExtensionSettingError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXTENSIONS_REQUIRED = 2,
                            FEED_TYPE_EXTENSION_TYPE_MISMATCH = 3,
                            INVALID_FEED_TYPE = 4,
                            INVALID_FEED_TYPE_FOR_CUSTOMER_EXTENSION_SETTING = 5,
                            CANNOT_CHANGE_FEED_ITEM_ON_CREATE = 6,
                            CANNOT_UPDATE_NEWLY_CREATED_EXTENSION = 7,
                            NO_EXISTING_AD_GROUP_EXTENSION_SETTING_FOR_TYPE = 8,
                            NO_EXISTING_CAMPAIGN_EXTENSION_SETTING_FOR_TYPE = 9,
                            NO_EXISTING_CUSTOMER_EXTENSION_SETTING_FOR_TYPE = 10,
                            AD_GROUP_EXTENSION_SETTING_ALREADY_EXISTS = 11,
                            CAMPAIGN_EXTENSION_SETTING_ALREADY_EXISTS = 12,
                            CUSTOMER_EXTENSION_SETTING_ALREADY_EXISTS = 13,
                            AD_GROUP_FEED_ALREADY_EXISTS_FOR_PLACEHOLDER_TYPE = 14,
                            CAMPAIGN_FEED_ALREADY_EXISTS_FOR_PLACEHOLDER_TYPE = 15,
                            CUSTOMER_FEED_ALREADY_EXISTS_FOR_PLACEHOLDER_TYPE = 16,
                            VALUE_OUT_OF_RANGE = 17,
                            CANNOT_SET_FIELD_WITH_FINAL_URLS = 18,
                            FINAL_URLS_NOT_SET = 19,
                            INVALID_PHONE_NUMBER = 20,
                            PHONE_NUMBER_NOT_SUPPORTED_FOR_COUNTRY = 21,
                            CARRIER_SPECIFIC_SHORT_NUMBER_NOT_ALLOWED = 22,
                            PREMIUM_RATE_NUMBER_NOT_ALLOWED = 23,
                            DISALLOWED_NUMBER_TYPE = 24,
                            INVALID_DOMESTIC_PHONE_NUMBER_FORMAT = 25,
                            VANITY_PHONE_NUMBER_NOT_ALLOWED = 26,
                            INVALID_COUNTRY_CODE = 27,
                            INVALID_CALL_CONVERSION_TYPE_ID = 28,
                            CUSTOMER_NOT_IN_ALLOWLIST_FOR_CALLTRACKING = 69,
                            CALLTRACKING_NOT_SUPPORTED_FOR_COUNTRY = 30,
                            INVALID_APP_ID = 31,
                            QUOTES_IN_REVIEW_EXTENSION_SNIPPET = 32,
                            HYPHENS_IN_REVIEW_EXTENSION_SNIPPET = 33,
                            REVIEW_EXTENSION_SOURCE_NOT_ELIGIBLE = 34,
                            SOURCE_NAME_IN_REVIEW_EXTENSION_TEXT = 35,
                            MISSING_FIELD = 36,
                            INCONSISTENT_CURRENCY_CODES = 37,
                            PRICE_EXTENSION_HAS_DUPLICATED_HEADERS = 38,
                            PRICE_ITEM_HAS_DUPLICATED_HEADER_AND_DESCRIPTION = 39,
                            PRICE_EXTENSION_HAS_TOO_FEW_ITEMS = 40,
                            PRICE_EXTENSION_HAS_TOO_MANY_ITEMS = 41,
                            UNSUPPORTED_VALUE = 42,
                            INVALID_DEVICE_PREFERENCE = 43,
                            INVALID_SCHEDULE_END = 45,
                            DATE_TIME_MUST_BE_IN_ACCOUNT_TIME_ZONE = 47,
                            OVERLAPPING_SCHEDULES_NOT_ALLOWED = 48,
                            SCHEDULE_END_NOT_AFTER_START = 49,
                            TOO_MANY_SCHEDULES_PER_DAY = 50,
                            DUPLICATE_EXTENSION_FEED_ITEM_EDIT = 51,
                            INVALID_SNIPPETS_HEADER = 52,
                            PHONE_NUMBER_NOT_SUPPORTED_WITH_CALLTRACKING_FOR_COUNTRY = 53,
                            CAMPAIGN_TARGETING_MISMATCH = 54,
                            CANNOT_OPERATE_ON_REMOVED_FEED = 55,
                            EXTENSION_TYPE_REQUIRED = 56,
                            INCOMPATIBLE_UNDERLYING_MATCHING_FUNCTION = 57,
                            START_DATE_AFTER_END_DATE = 58,
                            INVALID_PRICE_FORMAT = 59,
                            PROMOTION_INVALID_TIME = 60,
                            PROMOTION_CANNOT_SET_PERCENT_DISCOUNT_AND_MONEY_DISCOUNT = 61,
                            PROMOTION_CANNOT_SET_PROMOTION_CODE_AND_ORDERS_OVER_AMOUNT = 62,
                            TOO_MANY_DECIMAL_PLACES_SPECIFIED = 63,
                            INVALID_LANGUAGE_CODE = 64,
                            UNSUPPORTED_LANGUAGE = 65,
                            CUSTOMER_CONSENT_FOR_CALL_RECORDING_REQUIRED = 66,
                            EXTENSION_SETTING_UPDATE_IS_A_NOOP = 67,
                            DISALLOWED_TEXT = 68
                        }
                    }

                    /** Properties of a FeedAttributeReferenceErrorEnum. */
                    interface IFeedAttributeReferenceErrorEnum {
                    }

                    /** Represents a FeedAttributeReferenceErrorEnum. */
                    class FeedAttributeReferenceErrorEnum implements IFeedAttributeReferenceErrorEnum {

                        /**
                         * Constructs a new FeedAttributeReferenceErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedAttributeReferenceErrorEnum);

                        /**
                         * Creates a new FeedAttributeReferenceErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedAttributeReferenceErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedAttributeReferenceErrorEnum): google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum;

                        /**
                         * Encodes the specified FeedAttributeReferenceErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum.verify|verify} messages.
                         * @param message FeedAttributeReferenceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedAttributeReferenceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedAttributeReferenceErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum.verify|verify} messages.
                         * @param message FeedAttributeReferenceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedAttributeReferenceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedAttributeReferenceErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedAttributeReferenceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum;

                        /**
                         * Decodes a FeedAttributeReferenceErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedAttributeReferenceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum;

                        /**
                         * Verifies a FeedAttributeReferenceErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedAttributeReferenceErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedAttributeReferenceErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum;

                        /**
                         * Creates a plain object from a FeedAttributeReferenceErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedAttributeReferenceErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedAttributeReferenceErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedAttributeReferenceErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedAttributeReferenceErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedAttributeReferenceErrorEnum {

                        /** FeedAttributeReferenceError enum. */
                        enum FeedAttributeReferenceError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_REFERENCE_REMOVED_FEED = 2,
                            INVALID_FEED_NAME = 3,
                            INVALID_FEED_ATTRIBUTE_NAME = 4
                        }
                    }

                    /** Properties of a FeedErrorEnum. */
                    interface IFeedErrorEnum {
                    }

                    /** Represents a FeedErrorEnum. */
                    class FeedErrorEnum implements IFeedErrorEnum {

                        /**
                         * Constructs a new FeedErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedErrorEnum);

                        /**
                         * Creates a new FeedErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedErrorEnum): google.ads.googleads.v23.errors.FeedErrorEnum;

                        /**
                         * Encodes the specified FeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedErrorEnum.verify|verify} messages.
                         * @param message FeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedErrorEnum.verify|verify} messages.
                         * @param message FeedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedErrorEnum;

                        /**
                         * Decodes a FeedErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedErrorEnum;

                        /**
                         * Verifies a FeedErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedErrorEnum;

                        /**
                         * Creates a plain object from a FeedErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedErrorEnum {

                        /** FeedError enum. */
                        enum FeedError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ATTRIBUTE_NAMES_NOT_UNIQUE = 2,
                            ATTRIBUTES_DO_NOT_MATCH_EXISTING_ATTRIBUTES = 3,
                            CANNOT_SPECIFY_USER_ORIGIN_FOR_SYSTEM_FEED = 4,
                            CANNOT_SPECIFY_GOOGLE_ORIGIN_FOR_NON_SYSTEM_FEED = 5,
                            CANNOT_SPECIFY_FEED_ATTRIBUTES_FOR_SYSTEM_FEED = 6,
                            CANNOT_UPDATE_FEED_ATTRIBUTES_WITH_ORIGIN_GOOGLE = 7,
                            FEED_REMOVED = 8,
                            INVALID_ORIGIN_VALUE = 9,
                            FEED_ORIGIN_IS_NOT_USER = 10,
                            INVALID_AUTH_TOKEN_FOR_EMAIL = 11,
                            INVALID_EMAIL = 12,
                            DUPLICATE_FEED_NAME = 13,
                            INVALID_FEED_NAME = 14,
                            MISSING_OAUTH_INFO = 15,
                            NEW_ATTRIBUTE_CANNOT_BE_PART_OF_UNIQUE_KEY = 16,
                            TOO_MANY_ATTRIBUTES = 17,
                            INVALID_BUSINESS_ACCOUNT = 18,
                            BUSINESS_ACCOUNT_CANNOT_ACCESS_LOCATION_ACCOUNT = 19,
                            INVALID_AFFILIATE_CHAIN_ID = 20,
                            DUPLICATE_SYSTEM_FEED = 21,
                            GMB_ACCESS_ERROR = 22,
                            CANNOT_HAVE_LOCATION_AND_AFFILIATE_LOCATION_FEEDS = 23,
                            LEGACY_EXTENSION_TYPE_READ_ONLY = 24
                        }
                    }

                    /** Properties of a FeedItemErrorEnum. */
                    interface IFeedItemErrorEnum {
                    }

                    /** Represents a FeedItemErrorEnum. */
                    class FeedItemErrorEnum implements IFeedItemErrorEnum {

                        /**
                         * Constructs a new FeedItemErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedItemErrorEnum);

                        /**
                         * Creates a new FeedItemErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedItemErrorEnum): google.ads.googleads.v23.errors.FeedItemErrorEnum;

                        /**
                         * Encodes the specified FeedItemErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemErrorEnum.verify|verify} messages.
                         * @param message FeedItemErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedItemErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemErrorEnum.verify|verify} messages.
                         * @param message FeedItemErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedItemErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedItemErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedItemErrorEnum;

                        /**
                         * Decodes a FeedItemErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedItemErrorEnum;

                        /**
                         * Verifies a FeedItemErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedItemErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedItemErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedItemErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedItemErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedItemErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedItemErrorEnum {

                        /** FeedItemError enum. */
                        enum FeedItemError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_CONVERT_ATTRIBUTE_VALUE_FROM_STRING = 2,
                            CANNOT_OPERATE_ON_REMOVED_FEED_ITEM = 3,
                            DATE_TIME_MUST_BE_IN_ACCOUNT_TIME_ZONE = 4,
                            KEY_ATTRIBUTES_NOT_FOUND = 5,
                            INVALID_URL = 6,
                            MISSING_KEY_ATTRIBUTES = 7,
                            KEY_ATTRIBUTES_NOT_UNIQUE = 8,
                            CANNOT_MODIFY_KEY_ATTRIBUTE_VALUE = 9,
                            SIZE_TOO_LARGE_FOR_MULTI_VALUE_ATTRIBUTE = 10,
                            LEGACY_FEED_TYPE_READ_ONLY = 11
                        }
                    }

                    /** Properties of a FeedItemSetErrorEnum. */
                    interface IFeedItemSetErrorEnum {
                    }

                    /** Represents a FeedItemSetErrorEnum. */
                    class FeedItemSetErrorEnum implements IFeedItemSetErrorEnum {

                        /**
                         * Constructs a new FeedItemSetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedItemSetErrorEnum);

                        /**
                         * Creates a new FeedItemSetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedItemSetErrorEnum): google.ads.googleads.v23.errors.FeedItemSetErrorEnum;

                        /**
                         * Encodes the specified FeedItemSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemSetErrorEnum.verify|verify} messages.
                         * @param message FeedItemSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedItemSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemSetErrorEnum.verify|verify} messages.
                         * @param message FeedItemSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedItemSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedItemSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedItemSetErrorEnum;

                        /**
                         * Decodes a FeedItemSetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedItemSetErrorEnum;

                        /**
                         * Verifies a FeedItemSetErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedItemSetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedItemSetErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemSetErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedItemSetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedItemSetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedItemSetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedItemSetErrorEnum {

                        /** FeedItemSetError enum. */
                        enum FeedItemSetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FEED_ITEM_SET_REMOVED = 2,
                            CANNOT_CLEAR_DYNAMIC_FILTER = 3,
                            CANNOT_CREATE_DYNAMIC_FILTER = 4,
                            INVALID_FEED_TYPE = 5,
                            DUPLICATE_NAME = 6,
                            WRONG_DYNAMIC_FILTER_FOR_FEED_TYPE = 7,
                            DYNAMIC_FILTER_INVALID_CHAIN_IDS = 8
                        }
                    }

                    /** Properties of a FeedItemSetLinkErrorEnum. */
                    interface IFeedItemSetLinkErrorEnum {
                    }

                    /** Represents a FeedItemSetLinkErrorEnum. */
                    class FeedItemSetLinkErrorEnum implements IFeedItemSetLinkErrorEnum {

                        /**
                         * Constructs a new FeedItemSetLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedItemSetLinkErrorEnum);

                        /**
                         * Creates a new FeedItemSetLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSetLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedItemSetLinkErrorEnum): google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum;

                        /**
                         * Encodes the specified FeedItemSetLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum.verify|verify} messages.
                         * @param message FeedItemSetLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedItemSetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum.verify|verify} messages.
                         * @param message FeedItemSetLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedItemSetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedItemSetLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum;

                        /**
                         * Decodes a FeedItemSetLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSetLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum;

                        /**
                         * Verifies a FeedItemSetLinkErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedItemSetLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemSetLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedItemSetLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedItemSetLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedItemSetLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedItemSetLinkErrorEnum {

                        /** FeedItemSetLinkError enum. */
                        enum FeedItemSetLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FEED_ID_MISMATCH = 2,
                            NO_MUTATE_ALLOWED_FOR_DYNAMIC_SET = 3
                        }
                    }

                    /** Properties of a FeedItemTargetErrorEnum. */
                    interface IFeedItemTargetErrorEnum {
                    }

                    /** Represents a FeedItemTargetErrorEnum. */
                    class FeedItemTargetErrorEnum implements IFeedItemTargetErrorEnum {

                        /**
                         * Constructs a new FeedItemTargetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedItemTargetErrorEnum);

                        /**
                         * Creates a new FeedItemTargetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemTargetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedItemTargetErrorEnum): google.ads.googleads.v23.errors.FeedItemTargetErrorEnum;

                        /**
                         * Encodes the specified FeedItemTargetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemTargetErrorEnum.verify|verify} messages.
                         * @param message FeedItemTargetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedItemTargetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemTargetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemTargetErrorEnum.verify|verify} messages.
                         * @param message FeedItemTargetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedItemTargetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemTargetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedItemTargetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedItemTargetErrorEnum;

                        /**
                         * Decodes a FeedItemTargetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemTargetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedItemTargetErrorEnum;

                        /**
                         * Verifies a FeedItemTargetErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemTargetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedItemTargetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedItemTargetErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemTargetErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedItemTargetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedItemTargetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemTargetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedItemTargetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedItemTargetErrorEnum {

                        /** FeedItemTargetError enum. */
                        enum FeedItemTargetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MUST_SET_TARGET_ONEOF_ON_CREATE = 2,
                            FEED_ITEM_TARGET_ALREADY_EXISTS = 3,
                            FEED_ITEM_SCHEDULES_CANNOT_OVERLAP = 4,
                            TARGET_LIMIT_EXCEEDED_FOR_GIVEN_TYPE = 5,
                            TOO_MANY_SCHEDULES_PER_DAY = 6,
                            CANNOT_HAVE_ENABLED_CAMPAIGN_AND_ENABLED_AD_GROUP_TARGETS = 7,
                            DUPLICATE_AD_SCHEDULE = 8,
                            DUPLICATE_KEYWORD = 9
                        }
                    }

                    /** Properties of a FeedItemValidationErrorEnum. */
                    interface IFeedItemValidationErrorEnum {
                    }

                    /** Represents a FeedItemValidationErrorEnum. */
                    class FeedItemValidationErrorEnum implements IFeedItemValidationErrorEnum {

                        /**
                         * Constructs a new FeedItemValidationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedItemValidationErrorEnum);

                        /**
                         * Creates a new FeedItemValidationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemValidationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedItemValidationErrorEnum): google.ads.googleads.v23.errors.FeedItemValidationErrorEnum;

                        /**
                         * Encodes the specified FeedItemValidationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemValidationErrorEnum.verify|verify} messages.
                         * @param message FeedItemValidationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedItemValidationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemValidationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedItemValidationErrorEnum.verify|verify} messages.
                         * @param message FeedItemValidationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedItemValidationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemValidationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedItemValidationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedItemValidationErrorEnum;

                        /**
                         * Decodes a FeedItemValidationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemValidationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedItemValidationErrorEnum;

                        /**
                         * Verifies a FeedItemValidationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemValidationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedItemValidationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedItemValidationErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemValidationErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedItemValidationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedItemValidationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemValidationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedItemValidationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedItemValidationErrorEnum {

                        /** FeedItemValidationError enum. */
                        enum FeedItemValidationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STRING_TOO_SHORT = 2,
                            STRING_TOO_LONG = 3,
                            VALUE_NOT_SPECIFIED = 4,
                            INVALID_DOMESTIC_PHONE_NUMBER_FORMAT = 5,
                            INVALID_PHONE_NUMBER = 6,
                            PHONE_NUMBER_NOT_SUPPORTED_FOR_COUNTRY = 7,
                            PREMIUM_RATE_NUMBER_NOT_ALLOWED = 8,
                            DISALLOWED_NUMBER_TYPE = 9,
                            VALUE_OUT_OF_RANGE = 10,
                            CALLTRACKING_NOT_SUPPORTED_FOR_COUNTRY = 11,
                            CUSTOMER_NOT_IN_ALLOWLIST_FOR_CALLTRACKING = 99,
                            INVALID_COUNTRY_CODE = 13,
                            INVALID_APP_ID = 14,
                            MISSING_ATTRIBUTES_FOR_FIELDS = 15,
                            INVALID_TYPE_ID = 16,
                            INVALID_EMAIL_ADDRESS = 17,
                            INVALID_HTTPS_URL = 18,
                            MISSING_DELIVERY_ADDRESS = 19,
                            START_DATE_AFTER_END_DATE = 20,
                            MISSING_FEED_ITEM_START_TIME = 21,
                            MISSING_FEED_ITEM_END_TIME = 22,
                            MISSING_FEED_ITEM_ID = 23,
                            VANITY_PHONE_NUMBER_NOT_ALLOWED = 24,
                            INVALID_REVIEW_EXTENSION_SNIPPET = 25,
                            INVALID_NUMBER_FORMAT = 26,
                            INVALID_DATE_FORMAT = 27,
                            INVALID_PRICE_FORMAT = 28,
                            UNKNOWN_PLACEHOLDER_FIELD = 29,
                            MISSING_ENHANCED_SITELINK_DESCRIPTION_LINE = 30,
                            REVIEW_EXTENSION_SOURCE_INELIGIBLE = 31,
                            HYPHENS_IN_REVIEW_EXTENSION_SNIPPET = 32,
                            DOUBLE_QUOTES_IN_REVIEW_EXTENSION_SNIPPET = 33,
                            QUOTES_IN_REVIEW_EXTENSION_SNIPPET = 34,
                            INVALID_FORM_ENCODED_PARAMS = 35,
                            INVALID_URL_PARAMETER_NAME = 36,
                            NO_GEOCODING_RESULT = 37,
                            SOURCE_NAME_IN_REVIEW_EXTENSION_TEXT = 38,
                            CARRIER_SPECIFIC_SHORT_NUMBER_NOT_ALLOWED = 39,
                            INVALID_PLACEHOLDER_FIELD_ID = 40,
                            INVALID_URL_TAG = 41,
                            LIST_TOO_LONG = 42,
                            INVALID_ATTRIBUTES_COMBINATION = 43,
                            DUPLICATE_VALUES = 44,
                            INVALID_CALL_CONVERSION_ACTION_ID = 45,
                            CANNOT_SET_WITHOUT_FINAL_URLS = 46,
                            APP_ID_DOESNT_EXIST_IN_APP_STORE = 47,
                            INVALID_FINAL_URL = 48,
                            INVALID_TRACKING_URL = 49,
                            INVALID_FINAL_URL_FOR_APP_DOWNLOAD_URL = 50,
                            LIST_TOO_SHORT = 51,
                            INVALID_USER_ACTION = 52,
                            INVALID_TYPE_NAME = 53,
                            INVALID_EVENT_CHANGE_STATUS = 54,
                            INVALID_SNIPPETS_HEADER = 55,
                            INVALID_ANDROID_APP_LINK = 56,
                            NUMBER_TYPE_WITH_CALLTRACKING_NOT_SUPPORTED_FOR_COUNTRY = 57,
                            RESERVED_KEYWORD_OTHER = 58,
                            DUPLICATE_OPTION_LABELS = 59,
                            DUPLICATE_OPTION_PREFILLS = 60,
                            UNEQUAL_LIST_LENGTHS = 61,
                            INCONSISTENT_CURRENCY_CODES = 62,
                            PRICE_EXTENSION_HAS_DUPLICATED_HEADERS = 63,
                            ITEM_HAS_DUPLICATED_HEADER_AND_DESCRIPTION = 64,
                            PRICE_EXTENSION_HAS_TOO_FEW_ITEMS = 65,
                            UNSUPPORTED_VALUE = 66,
                            INVALID_FINAL_MOBILE_URL = 67,
                            INVALID_KEYWORDLESS_AD_RULE_LABEL = 68,
                            VALUE_TRACK_PARAMETER_NOT_SUPPORTED = 69,
                            UNSUPPORTED_VALUE_IN_SELECTED_LANGUAGE = 70,
                            INVALID_IOS_APP_LINK = 71,
                            MISSING_IOS_APP_LINK_OR_IOS_APP_STORE_ID = 72,
                            PROMOTION_INVALID_TIME = 73,
                            PROMOTION_CANNOT_SET_PERCENT_OFF_AND_MONEY_AMOUNT_OFF = 74,
                            PROMOTION_CANNOT_SET_PROMOTION_CODE_AND_ORDERS_OVER_AMOUNT = 75,
                            TOO_MANY_DECIMAL_PLACES_SPECIFIED = 76,
                            AD_CUSTOMIZERS_NOT_ALLOWED = 77,
                            INVALID_LANGUAGE_CODE = 78,
                            UNSUPPORTED_LANGUAGE = 79,
                            IF_FUNCTION_NOT_ALLOWED = 80,
                            INVALID_FINAL_URL_SUFFIX = 81,
                            INVALID_TAG_IN_FINAL_URL_SUFFIX = 82,
                            INVALID_FINAL_URL_SUFFIX_FORMAT = 83,
                            CUSTOMER_CONSENT_FOR_CALL_RECORDING_REQUIRED = 84,
                            ONLY_ONE_DELIVERY_OPTION_IS_ALLOWED = 85,
                            NO_DELIVERY_OPTION_IS_SET = 86,
                            INVALID_CONVERSION_REPORTING_STATE = 87,
                            IMAGE_SIZE_WRONG = 88,
                            EMAIL_DELIVERY_NOT_AVAILABLE_IN_COUNTRY = 89,
                            AUTO_REPLY_NOT_AVAILABLE_IN_COUNTRY = 90,
                            INVALID_LATITUDE_VALUE = 91,
                            INVALID_LONGITUDE_VALUE = 92,
                            TOO_MANY_LABELS = 93,
                            INVALID_IMAGE_URL = 94,
                            MISSING_LATITUDE_VALUE = 95,
                            MISSING_LONGITUDE_VALUE = 96,
                            ADDRESS_NOT_FOUND = 97,
                            ADDRESS_NOT_TARGETABLE = 98,
                            INVALID_ASSET_ID = 100,
                            INCOMPATIBLE_ASSET_TYPE = 101,
                            IMAGE_ERROR_UNEXPECTED_SIZE = 102,
                            IMAGE_ERROR_ASPECT_RATIO_NOT_ALLOWED = 103,
                            IMAGE_ERROR_FILE_TOO_LARGE = 104,
                            IMAGE_ERROR_FORMAT_NOT_ALLOWED = 105,
                            IMAGE_ERROR_CONSTRAINTS_VIOLATED = 106,
                            IMAGE_ERROR_SERVER_ERROR = 107
                        }
                    }

                    /** Properties of a FeedMappingErrorEnum. */
                    interface IFeedMappingErrorEnum {
                    }

                    /** Represents a FeedMappingErrorEnum. */
                    class FeedMappingErrorEnum implements IFeedMappingErrorEnum {

                        /**
                         * Constructs a new FeedMappingErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFeedMappingErrorEnum);

                        /**
                         * Creates a new FeedMappingErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedMappingErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFeedMappingErrorEnum): google.ads.googleads.v23.errors.FeedMappingErrorEnum;

                        /**
                         * Encodes the specified FeedMappingErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FeedMappingErrorEnum.verify|verify} messages.
                         * @param message FeedMappingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFeedMappingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedMappingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FeedMappingErrorEnum.verify|verify} messages.
                         * @param message FeedMappingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFeedMappingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedMappingErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FeedMappingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FeedMappingErrorEnum;

                        /**
                         * Decodes a FeedMappingErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedMappingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FeedMappingErrorEnum;

                        /**
                         * Verifies a FeedMappingErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedMappingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FeedMappingErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FeedMappingErrorEnum;

                        /**
                         * Creates a plain object from a FeedMappingErrorEnum message. Also converts values to other types if specified.
                         * @param message FeedMappingErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FeedMappingErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedMappingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FeedMappingErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FeedMappingErrorEnum {

                        /** FeedMappingError enum. */
                        enum FeedMappingError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_PLACEHOLDER_FIELD = 2,
                            INVALID_CRITERION_FIELD = 3,
                            INVALID_PLACEHOLDER_TYPE = 4,
                            INVALID_CRITERION_TYPE = 5,
                            NO_ATTRIBUTE_FIELD_MAPPINGS = 7,
                            FEED_ATTRIBUTE_TYPE_MISMATCH = 8,
                            CANNOT_OPERATE_ON_MAPPINGS_FOR_SYSTEM_GENERATED_FEED = 9,
                            MULTIPLE_MAPPINGS_FOR_PLACEHOLDER_TYPE = 10,
                            MULTIPLE_MAPPINGS_FOR_CRITERION_TYPE = 11,
                            MULTIPLE_MAPPINGS_FOR_PLACEHOLDER_FIELD = 12,
                            MULTIPLE_MAPPINGS_FOR_CRITERION_FIELD = 13,
                            UNEXPECTED_ATTRIBUTE_FIELD_MAPPINGS = 14,
                            LOCATION_PLACEHOLDER_ONLY_FOR_PLACES_FEEDS = 15,
                            CANNOT_MODIFY_MAPPINGS_FOR_TYPED_FEED = 16,
                            INVALID_PLACEHOLDER_TYPE_FOR_NON_SYSTEM_GENERATED_FEED = 17,
                            INVALID_PLACEHOLDER_TYPE_FOR_SYSTEM_GENERATED_FEED_TYPE = 18,
                            ATTRIBUTE_FIELD_MAPPING_MISSING_FIELD = 19,
                            LEGACY_FEED_TYPE_READ_ONLY = 20
                        }
                    }

                    /** Properties of a FieldErrorEnum. */
                    interface IFieldErrorEnum {
                    }

                    /** Represents a FieldErrorEnum. */
                    class FieldErrorEnum implements IFieldErrorEnum {

                        /**
                         * Constructs a new FieldErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFieldErrorEnum);

                        /**
                         * Creates a new FieldErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FieldErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFieldErrorEnum): google.ads.googleads.v23.errors.FieldErrorEnum;

                        /**
                         * Encodes the specified FieldErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FieldErrorEnum.verify|verify} messages.
                         * @param message FieldErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFieldErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FieldErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FieldErrorEnum.verify|verify} messages.
                         * @param message FieldErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFieldErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FieldErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FieldErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FieldErrorEnum;

                        /**
                         * Decodes a FieldErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FieldErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FieldErrorEnum;

                        /**
                         * Verifies a FieldErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FieldErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FieldErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FieldErrorEnum;

                        /**
                         * Creates a plain object from a FieldErrorEnum message. Also converts values to other types if specified.
                         * @param message FieldErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FieldErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FieldErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FieldErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FieldErrorEnum {

                        /** FieldError enum. */
                        enum FieldError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REQUIRED = 2,
                            IMMUTABLE_FIELD = 3,
                            INVALID_VALUE = 4,
                            VALUE_MUST_BE_UNSET = 5,
                            REQUIRED_NONEMPTY_LIST = 6,
                            FIELD_CANNOT_BE_CLEARED = 7,
                            BLOCKED_VALUE = 9,
                            FIELD_CAN_ONLY_BE_CLEARED = 10
                        }
                    }

                    /** Properties of a FieldMaskErrorEnum. */
                    interface IFieldMaskErrorEnum {
                    }

                    /** Represents a FieldMaskErrorEnum. */
                    class FieldMaskErrorEnum implements IFieldMaskErrorEnum {

                        /**
                         * Constructs a new FieldMaskErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFieldMaskErrorEnum);

                        /**
                         * Creates a new FieldMaskErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FieldMaskErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFieldMaskErrorEnum): google.ads.googleads.v23.errors.FieldMaskErrorEnum;

                        /**
                         * Encodes the specified FieldMaskErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FieldMaskErrorEnum.verify|verify} messages.
                         * @param message FieldMaskErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFieldMaskErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FieldMaskErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FieldMaskErrorEnum.verify|verify} messages.
                         * @param message FieldMaskErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFieldMaskErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FieldMaskErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FieldMaskErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FieldMaskErrorEnum;

                        /**
                         * Decodes a FieldMaskErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FieldMaskErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FieldMaskErrorEnum;

                        /**
                         * Verifies a FieldMaskErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FieldMaskErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FieldMaskErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FieldMaskErrorEnum;

                        /**
                         * Creates a plain object from a FieldMaskErrorEnum message. Also converts values to other types if specified.
                         * @param message FieldMaskErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FieldMaskErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FieldMaskErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FieldMaskErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FieldMaskErrorEnum {

                        /** FieldMaskError enum. */
                        enum FieldMaskError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FIELD_MASK_MISSING = 5,
                            FIELD_MASK_NOT_ALLOWED = 4,
                            FIELD_NOT_FOUND = 2,
                            FIELD_HAS_SUBFIELDS = 3
                        }
                    }

                    /** Properties of a FinalUrlExpansionAssetViewErrorEnum. */
                    interface IFinalUrlExpansionAssetViewErrorEnum {
                    }

                    /** Represents a FinalUrlExpansionAssetViewErrorEnum. */
                    class FinalUrlExpansionAssetViewErrorEnum implements IFinalUrlExpansionAssetViewErrorEnum {

                        /**
                         * Constructs a new FinalUrlExpansionAssetViewErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFinalUrlExpansionAssetViewErrorEnum);

                        /**
                         * Creates a new FinalUrlExpansionAssetViewErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FinalUrlExpansionAssetViewErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFinalUrlExpansionAssetViewErrorEnum): google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum;

                        /**
                         * Encodes the specified FinalUrlExpansionAssetViewErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum.verify|verify} messages.
                         * @param message FinalUrlExpansionAssetViewErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFinalUrlExpansionAssetViewErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FinalUrlExpansionAssetViewErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum.verify|verify} messages.
                         * @param message FinalUrlExpansionAssetViewErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFinalUrlExpansionAssetViewErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FinalUrlExpansionAssetViewErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FinalUrlExpansionAssetViewErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum;

                        /**
                         * Decodes a FinalUrlExpansionAssetViewErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FinalUrlExpansionAssetViewErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum;

                        /**
                         * Verifies a FinalUrlExpansionAssetViewErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FinalUrlExpansionAssetViewErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FinalUrlExpansionAssetViewErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum;

                        /**
                         * Creates a plain object from a FinalUrlExpansionAssetViewErrorEnum message. Also converts values to other types if specified.
                         * @param message FinalUrlExpansionAssetViewErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FinalUrlExpansionAssetViewErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FinalUrlExpansionAssetViewErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FinalUrlExpansionAssetViewErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FinalUrlExpansionAssetViewErrorEnum {

                        /** FinalUrlExpansionAssetViewError enum. */
                        enum FinalUrlExpansionAssetViewError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MISSING_REQUIRED_FILTER = 2,
                            REQUIRES_ADVERTISING_CHANNEL_TYPE_FILTER = 3,
                            INVALID_ADVERTISING_CHANNEL_TYPE_IN_FILTER = 4,
                            CANNOT_SELECT_ASSET_GROUP = 5,
                            CANNOT_SELECT_AD_GROUP = 6,
                            REQUIRES_FILTER_BY_SINGLE_RESOURCE = 7,
                            CANNOT_SELECT_BOTH_AD_GROUP_AND_ASSET_GROUP = 8,
                            CANNOT_FILTER_BY_BOTH_AD_GROUP_AND_ASSET_GROUP = 9
                        }
                    }

                    /** Properties of a FunctionErrorEnum. */
                    interface IFunctionErrorEnum {
                    }

                    /** Represents a FunctionErrorEnum. */
                    class FunctionErrorEnum implements IFunctionErrorEnum {

                        /**
                         * Constructs a new FunctionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFunctionErrorEnum);

                        /**
                         * Creates a new FunctionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FunctionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFunctionErrorEnum): google.ads.googleads.v23.errors.FunctionErrorEnum;

                        /**
                         * Encodes the specified FunctionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FunctionErrorEnum.verify|verify} messages.
                         * @param message FunctionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFunctionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FunctionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FunctionErrorEnum.verify|verify} messages.
                         * @param message FunctionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFunctionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FunctionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FunctionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FunctionErrorEnum;

                        /**
                         * Decodes a FunctionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FunctionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FunctionErrorEnum;

                        /**
                         * Verifies a FunctionErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FunctionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FunctionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FunctionErrorEnum;

                        /**
                         * Creates a plain object from a FunctionErrorEnum message. Also converts values to other types if specified.
                         * @param message FunctionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FunctionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FunctionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FunctionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FunctionErrorEnum {

                        /** FunctionError enum. */
                        enum FunctionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_FUNCTION_FORMAT = 2,
                            DATA_TYPE_MISMATCH = 3,
                            INVALID_CONJUNCTION_OPERANDS = 4,
                            INVALID_NUMBER_OF_OPERANDS = 5,
                            INVALID_OPERAND_TYPE = 6,
                            INVALID_OPERATOR = 7,
                            INVALID_REQUEST_CONTEXT_TYPE = 8,
                            INVALID_FUNCTION_FOR_CALL_PLACEHOLDER = 9,
                            INVALID_FUNCTION_FOR_PLACEHOLDER = 10,
                            INVALID_OPERAND = 11,
                            MISSING_CONSTANT_OPERAND_VALUE = 12,
                            INVALID_CONSTANT_OPERAND_VALUE = 13,
                            INVALID_NESTING = 14,
                            MULTIPLE_FEED_IDS_NOT_SUPPORTED = 15,
                            INVALID_FUNCTION_FOR_FEED_WITH_FIXED_SCHEMA = 16,
                            INVALID_ATTRIBUTE_NAME = 17
                        }
                    }

                    /** Properties of a FunctionParsingErrorEnum. */
                    interface IFunctionParsingErrorEnum {
                    }

                    /** Represents a FunctionParsingErrorEnum. */
                    class FunctionParsingErrorEnum implements IFunctionParsingErrorEnum {

                        /**
                         * Constructs a new FunctionParsingErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IFunctionParsingErrorEnum);

                        /**
                         * Creates a new FunctionParsingErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FunctionParsingErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IFunctionParsingErrorEnum): google.ads.googleads.v23.errors.FunctionParsingErrorEnum;

                        /**
                         * Encodes the specified FunctionParsingErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.FunctionParsingErrorEnum.verify|verify} messages.
                         * @param message FunctionParsingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IFunctionParsingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FunctionParsingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.FunctionParsingErrorEnum.verify|verify} messages.
                         * @param message FunctionParsingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IFunctionParsingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FunctionParsingErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FunctionParsingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.FunctionParsingErrorEnum;

                        /**
                         * Decodes a FunctionParsingErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FunctionParsingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.FunctionParsingErrorEnum;

                        /**
                         * Verifies a FunctionParsingErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FunctionParsingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FunctionParsingErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.FunctionParsingErrorEnum;

                        /**
                         * Creates a plain object from a FunctionParsingErrorEnum message. Also converts values to other types if specified.
                         * @param message FunctionParsingErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.FunctionParsingErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FunctionParsingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FunctionParsingErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FunctionParsingErrorEnum {

                        /** FunctionParsingError enum. */
                        enum FunctionParsingError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_MORE_INPUT = 2,
                            EXPECTED_CHARACTER = 3,
                            UNEXPECTED_SEPARATOR = 4,
                            UNMATCHED_LEFT_BRACKET = 5,
                            UNMATCHED_RIGHT_BRACKET = 6,
                            TOO_MANY_NESTED_FUNCTIONS = 7,
                            MISSING_RIGHT_HAND_OPERAND = 8,
                            INVALID_OPERATOR_NAME = 9,
                            FEED_ATTRIBUTE_OPERAND_ARGUMENT_NOT_INTEGER = 10,
                            NO_OPERANDS = 11,
                            TOO_MANY_OPERANDS = 12
                        }
                    }

                    /** Properties of a GeoTargetConstantSuggestionErrorEnum. */
                    interface IGeoTargetConstantSuggestionErrorEnum {
                    }

                    /** Represents a GeoTargetConstantSuggestionErrorEnum. */
                    class GeoTargetConstantSuggestionErrorEnum implements IGeoTargetConstantSuggestionErrorEnum {

                        /**
                         * Constructs a new GeoTargetConstantSuggestionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IGeoTargetConstantSuggestionErrorEnum);

                        /**
                         * Creates a new GeoTargetConstantSuggestionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetConstantSuggestionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IGeoTargetConstantSuggestionErrorEnum): google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum.verify|verify} messages.
                         * @param message GeoTargetConstantSuggestionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IGeoTargetConstantSuggestionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum.verify|verify} messages.
                         * @param message GeoTargetConstantSuggestionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IGeoTargetConstantSuggestionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstantSuggestionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeoTargetConstantSuggestionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum;

                        /**
                         * Decodes a GeoTargetConstantSuggestionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeoTargetConstantSuggestionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum;

                        /**
                         * Verifies a GeoTargetConstantSuggestionErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstantSuggestionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeoTargetConstantSuggestionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum;

                        /**
                         * Creates a plain object from a GeoTargetConstantSuggestionErrorEnum message. Also converts values to other types if specified.
                         * @param message GeoTargetConstantSuggestionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.GeoTargetConstantSuggestionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstantSuggestionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeoTargetConstantSuggestionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GeoTargetConstantSuggestionErrorEnum {

                        /** GeoTargetConstantSuggestionError enum. */
                        enum GeoTargetConstantSuggestionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LOCATION_NAME_SIZE_LIMIT = 2,
                            LOCATION_NAME_LIMIT = 3,
                            INVALID_COUNTRY_CODE = 4,
                            REQUEST_PARAMETERS_UNSET = 5
                        }
                    }

                    /** Properties of a GoalErrorEnum. */
                    interface IGoalErrorEnum {
                    }

                    /** Represents a GoalErrorEnum. */
                    class GoalErrorEnum implements IGoalErrorEnum {

                        /**
                         * Constructs a new GoalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IGoalErrorEnum);

                        /**
                         * Creates a new GoalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IGoalErrorEnum): google.ads.googleads.v23.errors.GoalErrorEnum;

                        /**
                         * Encodes the specified GoalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.GoalErrorEnum.verify|verify} messages.
                         * @param message GoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.GoalErrorEnum.verify|verify} messages.
                         * @param message GoalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IGoalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.GoalErrorEnum;

                        /**
                         * Decodes a GoalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.GoalErrorEnum;

                        /**
                         * Verifies a GoalErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.GoalErrorEnum;

                        /**
                         * Creates a plain object from a GoalErrorEnum message. Also converts values to other types if specified.
                         * @param message GoalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.GoalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GoalErrorEnum {

                        /** GoalError enum. */
                        enum GoalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RETENTION_GOAL_ALREADY_EXISTS = 4,
                            HIGH_LIFETIME_VALUE_PRESENT_BUT_VALUE_ABSENT = 5,
                            HIGH_LIFETIME_VALUE_LESS_THAN_OR_EQUAL_TO_VALUE = 6,
                            CUSTOMER_LIFECYCLE_OPTIMIZATION_ACCOUNT_TYPE_NOT_ALLOWED = 7
                        }
                    }

                    /** Properties of a HeaderErrorEnum. */
                    interface IHeaderErrorEnum {
                    }

                    /** Represents a HeaderErrorEnum. */
                    class HeaderErrorEnum implements IHeaderErrorEnum {

                        /**
                         * Constructs a new HeaderErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IHeaderErrorEnum);

                        /**
                         * Creates a new HeaderErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HeaderErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IHeaderErrorEnum): google.ads.googleads.v23.errors.HeaderErrorEnum;

                        /**
                         * Encodes the specified HeaderErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.HeaderErrorEnum.verify|verify} messages.
                         * @param message HeaderErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IHeaderErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HeaderErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.HeaderErrorEnum.verify|verify} messages.
                         * @param message HeaderErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IHeaderErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HeaderErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HeaderErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.HeaderErrorEnum;

                        /**
                         * Decodes a HeaderErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HeaderErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.HeaderErrorEnum;

                        /**
                         * Verifies a HeaderErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HeaderErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HeaderErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.HeaderErrorEnum;

                        /**
                         * Creates a plain object from a HeaderErrorEnum message. Also converts values to other types if specified.
                         * @param message HeaderErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.HeaderErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HeaderErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HeaderErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace HeaderErrorEnum {

                        /** HeaderError enum. */
                        enum HeaderError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_LOGIN_CUSTOMER_ID = 3,
                            INVALID_LINKED_CUSTOMER_ID = 7
                        }
                    }

                    /** Properties of an IdErrorEnum. */
                    interface IIdErrorEnum {
                    }

                    /** Represents an IdErrorEnum. */
                    class IdErrorEnum implements IIdErrorEnum {

                        /**
                         * Constructs a new IdErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IIdErrorEnum);

                        /**
                         * Creates a new IdErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IdErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IIdErrorEnum): google.ads.googleads.v23.errors.IdErrorEnum;

                        /**
                         * Encodes the specified IdErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.IdErrorEnum.verify|verify} messages.
                         * @param message IdErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IIdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.IdErrorEnum.verify|verify} messages.
                         * @param message IdErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IIdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IdErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.IdErrorEnum;

                        /**
                         * Decodes an IdErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IdErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.IdErrorEnum;

                        /**
                         * Verifies an IdErrorEnum message.
                         * @param message Plain 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 IdErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IdErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.IdErrorEnum;

                        /**
                         * Creates a plain object from an IdErrorEnum message. Also converts values to other types if specified.
                         * @param message IdErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.IdErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IdErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IdErrorEnum {

                        /** IdError enum. */
                        enum IdError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_FOUND = 2
                        }
                    }

                    /** Properties of an IdentityVerificationErrorEnum. */
                    interface IIdentityVerificationErrorEnum {
                    }

                    /** Represents an IdentityVerificationErrorEnum. */
                    class IdentityVerificationErrorEnum implements IIdentityVerificationErrorEnum {

                        /**
                         * Constructs a new IdentityVerificationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IIdentityVerificationErrorEnum);

                        /**
                         * Creates a new IdentityVerificationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IdentityVerificationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IIdentityVerificationErrorEnum): google.ads.googleads.v23.errors.IdentityVerificationErrorEnum;

                        /**
                         * Encodes the specified IdentityVerificationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.IdentityVerificationErrorEnum.verify|verify} messages.
                         * @param message IdentityVerificationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IIdentityVerificationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdentityVerificationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.IdentityVerificationErrorEnum.verify|verify} messages.
                         * @param message IdentityVerificationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IIdentityVerificationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdentityVerificationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IdentityVerificationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.IdentityVerificationErrorEnum;

                        /**
                         * Decodes an IdentityVerificationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IdentityVerificationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.IdentityVerificationErrorEnum;

                        /**
                         * Verifies an IdentityVerificationErrorEnum message.
                         * @param message Plain 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 IdentityVerificationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IdentityVerificationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.IdentityVerificationErrorEnum;

                        /**
                         * Creates a plain object from an IdentityVerificationErrorEnum message. Also converts values to other types if specified.
                         * @param message IdentityVerificationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.IdentityVerificationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdentityVerificationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IdentityVerificationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IdentityVerificationErrorEnum {

                        /** IdentityVerificationError enum. */
                        enum IdentityVerificationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_EFFECTIVE_BILLING = 2,
                            BILLING_NOT_ON_MONTHLY_INVOICING = 3,
                            VERIFICATION_ALREADY_STARTED = 4
                        }
                    }

                    /** Properties of an ImageErrorEnum. */
                    interface IImageErrorEnum {
                    }

                    /** Represents an ImageErrorEnum. */
                    class ImageErrorEnum implements IImageErrorEnum {

                        /**
                         * Constructs a new ImageErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IImageErrorEnum);

                        /**
                         * Creates a new ImageErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ImageErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IImageErrorEnum): google.ads.googleads.v23.errors.ImageErrorEnum;

                        /**
                         * Encodes the specified ImageErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ImageErrorEnum.verify|verify} messages.
                         * @param message ImageErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IImageErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ImageErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ImageErrorEnum.verify|verify} messages.
                         * @param message ImageErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IImageErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ImageErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ImageErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ImageErrorEnum;

                        /**
                         * Decodes an ImageErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ImageErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ImageErrorEnum;

                        /**
                         * Verifies an ImageErrorEnum message.
                         * @param message Plain 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 ImageErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ImageErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ImageErrorEnum;

                        /**
                         * Creates a plain object from an ImageErrorEnum message. Also converts values to other types if specified.
                         * @param message ImageErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ImageErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ImageErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ImageErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ImageErrorEnum {

                        /** ImageError enum. */
                        enum ImageError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_IMAGE = 2,
                            STORAGE_ERROR = 3,
                            BAD_REQUEST = 4,
                            UNEXPECTED_SIZE = 5,
                            ANIMATED_NOT_ALLOWED = 6,
                            ANIMATION_TOO_LONG = 7,
                            SERVER_ERROR = 8,
                            CMYK_JPEG_NOT_ALLOWED = 9,
                            FLASH_NOT_ALLOWED = 10,
                            FLASH_WITHOUT_CLICKTAG = 11,
                            FLASH_ERROR_AFTER_FIXING_CLICK_TAG = 12,
                            ANIMATED_VISUAL_EFFECT = 13,
                            FLASH_ERROR = 14,
                            LAYOUT_PROBLEM = 15,
                            PROBLEM_READING_IMAGE_FILE = 16,
                            ERROR_STORING_IMAGE = 17,
                            ASPECT_RATIO_NOT_ALLOWED = 18,
                            FLASH_HAS_NETWORK_OBJECTS = 19,
                            FLASH_HAS_NETWORK_METHODS = 20,
                            FLASH_HAS_URL = 21,
                            FLASH_HAS_MOUSE_TRACKING = 22,
                            FLASH_HAS_RANDOM_NUM = 23,
                            FLASH_SELF_TARGETS = 24,
                            FLASH_BAD_GETURL_TARGET = 25,
                            FLASH_VERSION_NOT_SUPPORTED = 26,
                            FLASH_WITHOUT_HARD_CODED_CLICK_URL = 27,
                            INVALID_FLASH_FILE = 28,
                            FAILED_TO_FIX_CLICK_TAG_IN_FLASH = 29,
                            FLASH_ACCESSES_NETWORK_RESOURCES = 30,
                            FLASH_EXTERNAL_JS_CALL = 31,
                            FLASH_EXTERNAL_FS_CALL = 32,
                            FILE_TOO_LARGE = 33,
                            IMAGE_DATA_TOO_LARGE = 34,
                            IMAGE_PROCESSING_ERROR = 35,
                            IMAGE_TOO_SMALL = 36,
                            INVALID_INPUT = 37,
                            PROBLEM_READING_FILE = 38,
                            IMAGE_CONSTRAINTS_VIOLATED = 39,
                            FORMAT_NOT_ALLOWED = 40
                        }
                    }

                    /** Properties of an IncentiveErrorEnum. */
                    interface IIncentiveErrorEnum {
                    }

                    /** Represents an IncentiveErrorEnum. */
                    class IncentiveErrorEnum implements IIncentiveErrorEnum {

                        /**
                         * Constructs a new IncentiveErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IIncentiveErrorEnum);

                        /**
                         * Creates a new IncentiveErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IncentiveErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IIncentiveErrorEnum): google.ads.googleads.v23.errors.IncentiveErrorEnum;

                        /**
                         * Encodes the specified IncentiveErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.IncentiveErrorEnum.verify|verify} messages.
                         * @param message IncentiveErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IIncentiveErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncentiveErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.IncentiveErrorEnum.verify|verify} messages.
                         * @param message IncentiveErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IIncentiveErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncentiveErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IncentiveErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.IncentiveErrorEnum;

                        /**
                         * Decodes an IncentiveErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IncentiveErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.IncentiveErrorEnum;

                        /**
                         * Verifies an IncentiveErrorEnum message.
                         * @param message Plain 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 IncentiveErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IncentiveErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.IncentiveErrorEnum;

                        /**
                         * Creates a plain object from an IncentiveErrorEnum message. Also converts values to other types if specified.
                         * @param message IncentiveErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.IncentiveErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncentiveErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IncentiveErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IncentiveErrorEnum {

                        /** IncentiveError enum. */
                        enum IncentiveError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_INCENTIVE_ID = 2
                        }
                    }

                    /** Properties of an InternalErrorEnum. */
                    interface IInternalErrorEnum {
                    }

                    /** Represents an InternalErrorEnum. */
                    class InternalErrorEnum implements IInternalErrorEnum {

                        /**
                         * Constructs a new InternalErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IInternalErrorEnum);

                        /**
                         * Creates a new InternalErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InternalErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IInternalErrorEnum): google.ads.googleads.v23.errors.InternalErrorEnum;

                        /**
                         * Encodes the specified InternalErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.InternalErrorEnum.verify|verify} messages.
                         * @param message InternalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IInternalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InternalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.InternalErrorEnum.verify|verify} messages.
                         * @param message InternalErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IInternalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InternalErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InternalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.InternalErrorEnum;

                        /**
                         * Decodes an InternalErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InternalErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.InternalErrorEnum;

                        /**
                         * Verifies an InternalErrorEnum message.
                         * @param message Plain 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 InternalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InternalErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.InternalErrorEnum;

                        /**
                         * Creates a plain object from an InternalErrorEnum message. Also converts values to other types if specified.
                         * @param message InternalErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.InternalErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InternalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InternalErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace InternalErrorEnum {

                        /** InternalError enum. */
                        enum InternalError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INTERNAL_ERROR = 2,
                            ERROR_CODE_NOT_PUBLISHED = 3,
                            TRANSIENT_ERROR = 4,
                            DEADLINE_EXCEEDED = 5
                        }
                    }

                    /** Properties of an InvoiceErrorEnum. */
                    interface IInvoiceErrorEnum {
                    }

                    /** Represents an InvoiceErrorEnum. */
                    class InvoiceErrorEnum implements IInvoiceErrorEnum {

                        /**
                         * Constructs a new InvoiceErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IInvoiceErrorEnum);

                        /**
                         * Creates a new InvoiceErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InvoiceErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IInvoiceErrorEnum): google.ads.googleads.v23.errors.InvoiceErrorEnum;

                        /**
                         * Encodes the specified InvoiceErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.InvoiceErrorEnum.verify|verify} messages.
                         * @param message InvoiceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IInvoiceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InvoiceErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.InvoiceErrorEnum.verify|verify} messages.
                         * @param message InvoiceErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IInvoiceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InvoiceErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InvoiceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.InvoiceErrorEnum;

                        /**
                         * Decodes an InvoiceErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InvoiceErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.InvoiceErrorEnum;

                        /**
                         * Verifies an InvoiceErrorEnum message.
                         * @param message Plain 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 InvoiceErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InvoiceErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.InvoiceErrorEnum;

                        /**
                         * Creates a plain object from an InvoiceErrorEnum message. Also converts values to other types if specified.
                         * @param message InvoiceErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.InvoiceErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InvoiceErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InvoiceErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace InvoiceErrorEnum {

                        /** InvoiceError enum. */
                        enum InvoiceError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            YEAR_MONTH_TOO_OLD = 2,
                            NOT_INVOICED_CUSTOMER = 3,
                            BILLING_SETUP_NOT_APPROVED = 4,
                            BILLING_SETUP_NOT_ON_MONTHLY_INVOICING = 5,
                            NON_SERVING_CUSTOMER = 6
                        }
                    }

                    /** Properties of a KeywordPlanAdGroupErrorEnum. */
                    interface IKeywordPlanAdGroupErrorEnum {
                    }

                    /** Represents a KeywordPlanAdGroupErrorEnum. */
                    class KeywordPlanAdGroupErrorEnum implements IKeywordPlanAdGroupErrorEnum {

                        /**
                         * Constructs a new KeywordPlanAdGroupErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IKeywordPlanAdGroupErrorEnum);

                        /**
                         * Creates a new KeywordPlanAdGroupErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroupErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IKeywordPlanAdGroupErrorEnum): google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanAdGroupErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanAdGroupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IKeywordPlanAdGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanAdGroupErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IKeywordPlanAdGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAdGroupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum;

                        /**
                         * Decodes a KeywordPlanAdGroupErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAdGroupErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum;

                        /**
                         * Verifies a KeywordPlanAdGroupErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAdGroupErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupErrorEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanAdGroupErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.KeywordPlanAdGroupErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAdGroupErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanAdGroupErrorEnum {

                        /** KeywordPlanAdGroupError enum. */
                        enum KeywordPlanAdGroupError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_NAME = 2,
                            DUPLICATE_NAME = 3
                        }
                    }

                    /** Properties of a KeywordPlanAdGroupKeywordErrorEnum. */
                    interface IKeywordPlanAdGroupKeywordErrorEnum {
                    }

                    /** Represents a KeywordPlanAdGroupKeywordErrorEnum. */
                    class KeywordPlanAdGroupKeywordErrorEnum implements IKeywordPlanAdGroupKeywordErrorEnum {

                        /**
                         * Constructs a new KeywordPlanAdGroupKeywordErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IKeywordPlanAdGroupKeywordErrorEnum);

                        /**
                         * Creates a new KeywordPlanAdGroupKeywordErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroupKeywordErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IKeywordPlanAdGroupKeywordErrorEnum): google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanAdGroupKeywordErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IKeywordPlanAdGroupKeywordErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanAdGroupKeywordErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IKeywordPlanAdGroupKeywordErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupKeywordErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAdGroupKeywordErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum;

                        /**
                         * Decodes a KeywordPlanAdGroupKeywordErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAdGroupKeywordErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum;

                        /**
                         * Verifies a KeywordPlanAdGroupKeywordErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupKeywordErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAdGroupKeywordErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupKeywordErrorEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanAdGroupKeywordErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.KeywordPlanAdGroupKeywordErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupKeywordErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAdGroupKeywordErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanAdGroupKeywordErrorEnum {

                        /** KeywordPlanAdGroupKeywordError enum. */
                        enum KeywordPlanAdGroupKeywordError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_KEYWORD_MATCH_TYPE = 2,
                            DUPLICATE_KEYWORD = 3,
                            KEYWORD_TEXT_TOO_LONG = 4,
                            KEYWORD_HAS_INVALID_CHARS = 5,
                            KEYWORD_HAS_TOO_MANY_WORDS = 6,
                            INVALID_KEYWORD_TEXT = 7,
                            NEGATIVE_KEYWORD_HAS_CPC_BID = 8,
                            NEW_BMM_KEYWORDS_NOT_ALLOWED = 9
                        }
                    }

                    /** Properties of a KeywordPlanCampaignErrorEnum. */
                    interface IKeywordPlanCampaignErrorEnum {
                    }

                    /** Represents a KeywordPlanCampaignErrorEnum. */
                    class KeywordPlanCampaignErrorEnum implements IKeywordPlanCampaignErrorEnum {

                        /**
                         * Constructs a new KeywordPlanCampaignErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IKeywordPlanCampaignErrorEnum);

                        /**
                         * Creates a new KeywordPlanCampaignErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IKeywordPlanCampaignErrorEnum): google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanCampaignErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanCampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IKeywordPlanCampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanCampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IKeywordPlanCampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanCampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum;

                        /**
                         * Decodes a KeywordPlanCampaignErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum;

                        /**
                         * Verifies a KeywordPlanCampaignErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanCampaignErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignErrorEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanCampaignErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.KeywordPlanCampaignErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanCampaignErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanCampaignErrorEnum {

                        /** KeywordPlanCampaignError enum. */
                        enum KeywordPlanCampaignError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_NAME = 2,
                            INVALID_LANGUAGES = 3,
                            INVALID_GEOS = 4,
                            DUPLICATE_NAME = 5,
                            MAX_GEOS_EXCEEDED = 6,
                            MAX_LANGUAGES_EXCEEDED = 7
                        }
                    }

                    /** Properties of a KeywordPlanCampaignKeywordErrorEnum. */
                    interface IKeywordPlanCampaignKeywordErrorEnum {
                    }

                    /** Represents a KeywordPlanCampaignKeywordErrorEnum. */
                    class KeywordPlanCampaignKeywordErrorEnum implements IKeywordPlanCampaignKeywordErrorEnum {

                        /**
                         * Constructs a new KeywordPlanCampaignKeywordErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IKeywordPlanCampaignKeywordErrorEnum);

                        /**
                         * Creates a new KeywordPlanCampaignKeywordErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignKeywordErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IKeywordPlanCampaignKeywordErrorEnum): google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanCampaignKeywordErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IKeywordPlanCampaignKeywordErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanCampaignKeywordErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IKeywordPlanCampaignKeywordErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignKeywordErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanCampaignKeywordErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum;

                        /**
                         * Decodes a KeywordPlanCampaignKeywordErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaignKeywordErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum;

                        /**
                         * Verifies a KeywordPlanCampaignKeywordErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignKeywordErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanCampaignKeywordErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignKeywordErrorEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanCampaignKeywordErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.KeywordPlanCampaignKeywordErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignKeywordErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanCampaignKeywordErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanCampaignKeywordErrorEnum {

                        /** KeywordPlanCampaignKeywordError enum. */
                        enum KeywordPlanCampaignKeywordError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN_KEYWORD_IS_POSITIVE = 8
                        }
                    }

                    /** Properties of a KeywordPlanErrorEnum. */
                    interface IKeywordPlanErrorEnum {
                    }

                    /** Represents a KeywordPlanErrorEnum. */
                    class KeywordPlanErrorEnum implements IKeywordPlanErrorEnum {

                        /**
                         * Constructs a new KeywordPlanErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IKeywordPlanErrorEnum);

                        /**
                         * Creates a new KeywordPlanErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IKeywordPlanErrorEnum): google.ads.googleads.v23.errors.KeywordPlanErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IKeywordPlanErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IKeywordPlanErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.KeywordPlanErrorEnum;

                        /**
                         * Decodes a KeywordPlanErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.KeywordPlanErrorEnum;

                        /**
                         * Verifies a KeywordPlanErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.KeywordPlanErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanErrorEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.KeywordPlanErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanErrorEnum {

                        /** KeywordPlanError enum. */
                        enum KeywordPlanError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BID_MULTIPLIER_OUT_OF_RANGE = 2,
                            BID_TOO_HIGH = 3,
                            BID_TOO_LOW = 4,
                            BID_TOO_MANY_FRACTIONAL_DIGITS = 5,
                            DAILY_BUDGET_TOO_LOW = 6,
                            DAILY_BUDGET_TOO_MANY_FRACTIONAL_DIGITS = 7,
                            INVALID_VALUE = 8,
                            KEYWORD_PLAN_HAS_NO_KEYWORDS = 9,
                            KEYWORD_PLAN_NOT_ENABLED = 10,
                            KEYWORD_PLAN_NOT_FOUND = 11,
                            MISSING_BID = 13,
                            MISSING_FORECAST_PERIOD = 14,
                            INVALID_FORECAST_DATE_RANGE = 15,
                            INVALID_NAME = 16
                        }
                    }

                    /** Properties of a KeywordPlanIdeaErrorEnum. */
                    interface IKeywordPlanIdeaErrorEnum {
                    }

                    /** Represents a KeywordPlanIdeaErrorEnum. */
                    class KeywordPlanIdeaErrorEnum implements IKeywordPlanIdeaErrorEnum {

                        /**
                         * Constructs a new KeywordPlanIdeaErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IKeywordPlanIdeaErrorEnum);

                        /**
                         * Creates a new KeywordPlanIdeaErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanIdeaErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IKeywordPlanIdeaErrorEnum): google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanIdeaErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanIdeaErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IKeywordPlanIdeaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanIdeaErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum.verify|verify} messages.
                         * @param message KeywordPlanIdeaErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IKeywordPlanIdeaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanIdeaErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanIdeaErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum;

                        /**
                         * Decodes a KeywordPlanIdeaErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanIdeaErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum;

                        /**
                         * Verifies a KeywordPlanIdeaErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanIdeaErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanIdeaErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanIdeaErrorEnum message. Also converts values to other types if specified.
                         * @param message KeywordPlanIdeaErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.KeywordPlanIdeaErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanIdeaErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanIdeaErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace KeywordPlanIdeaErrorEnum {

                        /** KeywordPlanIdeaError enum. */
                        enum KeywordPlanIdeaError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            URL_CRAWL_ERROR = 2,
                            INVALID_VALUE = 3
                        }
                    }

                    /** Properties of a LabelErrorEnum. */
                    interface ILabelErrorEnum {
                    }

                    /** Represents a LabelErrorEnum. */
                    class LabelErrorEnum implements ILabelErrorEnum {

                        /**
                         * Constructs a new LabelErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ILabelErrorEnum);

                        /**
                         * Creates a new LabelErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LabelErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ILabelErrorEnum): google.ads.googleads.v23.errors.LabelErrorEnum;

                        /**
                         * Encodes the specified LabelErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.LabelErrorEnum.verify|verify} messages.
                         * @param message LabelErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ILabelErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LabelErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.LabelErrorEnum.verify|verify} messages.
                         * @param message LabelErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ILabelErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LabelErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LabelErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.LabelErrorEnum;

                        /**
                         * Decodes a LabelErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LabelErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.LabelErrorEnum;

                        /**
                         * Verifies a LabelErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LabelErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LabelErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.LabelErrorEnum;

                        /**
                         * Creates a plain object from a LabelErrorEnum message. Also converts values to other types if specified.
                         * @param message LabelErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.LabelErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LabelErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LabelErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LabelErrorEnum {

                        /** LabelError enum. */
                        enum LabelError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_APPLY_INACTIVE_LABEL = 2,
                            CANNOT_APPLY_LABEL_TO_DISABLED_AD_GROUP_CRITERION = 3,
                            CANNOT_APPLY_LABEL_TO_NEGATIVE_AD_GROUP_CRITERION = 4,
                            EXCEEDED_LABEL_LIMIT_PER_TYPE = 5,
                            INVALID_RESOURCE_FOR_MANAGER_LABEL = 6,
                            DUPLICATE_NAME = 7,
                            INVALID_LABEL_NAME = 8,
                            CANNOT_ATTACH_LABEL_TO_DRAFT = 9,
                            CANNOT_ATTACH_NON_MANAGER_LABEL_TO_CUSTOMER = 10
                        }
                    }

                    /** Properties of a LanguageCodeErrorEnum. */
                    interface ILanguageCodeErrorEnum {
                    }

                    /** Represents a LanguageCodeErrorEnum. */
                    class LanguageCodeErrorEnum implements ILanguageCodeErrorEnum {

                        /**
                         * Constructs a new LanguageCodeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ILanguageCodeErrorEnum);

                        /**
                         * Creates a new LanguageCodeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LanguageCodeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ILanguageCodeErrorEnum): google.ads.googleads.v23.errors.LanguageCodeErrorEnum;

                        /**
                         * Encodes the specified LanguageCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.LanguageCodeErrorEnum.verify|verify} messages.
                         * @param message LanguageCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ILanguageCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LanguageCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.LanguageCodeErrorEnum.verify|verify} messages.
                         * @param message LanguageCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ILanguageCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LanguageCodeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LanguageCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.LanguageCodeErrorEnum;

                        /**
                         * Decodes a LanguageCodeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LanguageCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.LanguageCodeErrorEnum;

                        /**
                         * Verifies a LanguageCodeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LanguageCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LanguageCodeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.LanguageCodeErrorEnum;

                        /**
                         * Creates a plain object from a LanguageCodeErrorEnum message. Also converts values to other types if specified.
                         * @param message LanguageCodeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.LanguageCodeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LanguageCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LanguageCodeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace LanguageCodeErrorEnum {

                        /** LanguageCodeError enum. */
                        enum LanguageCodeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LANGUAGE_CODE_NOT_FOUND = 2,
                            INVALID_LANGUAGE_CODE = 3
                        }
                    }

                    /** Properties of a ListOperationErrorEnum. */
                    interface IListOperationErrorEnum {
                    }

                    /** Represents a ListOperationErrorEnum. */
                    class ListOperationErrorEnum implements IListOperationErrorEnum {

                        /**
                         * Constructs a new ListOperationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IListOperationErrorEnum);

                        /**
                         * Creates a new ListOperationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListOperationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IListOperationErrorEnum): google.ads.googleads.v23.errors.ListOperationErrorEnum;

                        /**
                         * Encodes the specified ListOperationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ListOperationErrorEnum.verify|verify} messages.
                         * @param message ListOperationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IListOperationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListOperationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ListOperationErrorEnum.verify|verify} messages.
                         * @param message ListOperationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IListOperationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListOperationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListOperationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ListOperationErrorEnum;

                        /**
                         * Decodes a ListOperationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListOperationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ListOperationErrorEnum;

                        /**
                         * Verifies a ListOperationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListOperationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListOperationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ListOperationErrorEnum;

                        /**
                         * Creates a plain object from a ListOperationErrorEnum message. Also converts values to other types if specified.
                         * @param message ListOperationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ListOperationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListOperationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListOperationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListOperationErrorEnum {

                        /** ListOperationError enum. */
                        enum ListOperationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REQUIRED_FIELD_MISSING = 7,
                            DUPLICATE_VALUES = 8
                        }
                    }

                    /** Properties of a ManagerLinkErrorEnum. */
                    interface IManagerLinkErrorEnum {
                    }

                    /** Represents a ManagerLinkErrorEnum. */
                    class ManagerLinkErrorEnum implements IManagerLinkErrorEnum {

                        /**
                         * Constructs a new ManagerLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IManagerLinkErrorEnum);

                        /**
                         * Creates a new ManagerLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManagerLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IManagerLinkErrorEnum): google.ads.googleads.v23.errors.ManagerLinkErrorEnum;

                        /**
                         * Encodes the specified ManagerLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ManagerLinkErrorEnum.verify|verify} messages.
                         * @param message ManagerLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IManagerLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManagerLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ManagerLinkErrorEnum.verify|verify} messages.
                         * @param message ManagerLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IManagerLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManagerLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManagerLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ManagerLinkErrorEnum;

                        /**
                         * Decodes a ManagerLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManagerLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ManagerLinkErrorEnum;

                        /**
                         * Verifies a ManagerLinkErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManagerLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManagerLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ManagerLinkErrorEnum;

                        /**
                         * Creates a plain object from a ManagerLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message ManagerLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ManagerLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManagerLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManagerLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ManagerLinkErrorEnum {

                        /** ManagerLinkError enum. */
                        enum ManagerLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACCOUNTS_NOT_COMPATIBLE_FOR_LINKING = 2,
                            TOO_MANY_MANAGERS = 3,
                            TOO_MANY_INVITES = 4,
                            ALREADY_INVITED_BY_THIS_MANAGER = 5,
                            ALREADY_MANAGED_BY_THIS_MANAGER = 6,
                            ALREADY_MANAGED_IN_HIERARCHY = 7,
                            DUPLICATE_CHILD_FOUND = 8,
                            CLIENT_HAS_NO_ADMIN_USER = 9,
                            MAX_DEPTH_EXCEEDED = 10,
                            CYCLE_NOT_ALLOWED = 11,
                            TOO_MANY_ACCOUNTS = 12,
                            TOO_MANY_ACCOUNTS_AT_MANAGER = 13,
                            NON_OWNER_USER_CANNOT_MODIFY_LINK = 14,
                            SUSPENDED_ACCOUNT_CANNOT_ADD_CLIENTS = 15,
                            CLIENT_OUTSIDE_TREE = 16,
                            INVALID_STATUS_CHANGE = 17,
                            INVALID_CHANGE = 18,
                            CUSTOMER_CANNOT_MANAGE_SELF = 19,
                            CREATING_ENABLED_LINK_NOT_ALLOWED = 20
                        }
                    }

                    /** Properties of a MediaBundleErrorEnum. */
                    interface IMediaBundleErrorEnum {
                    }

                    /** Represents a MediaBundleErrorEnum. */
                    class MediaBundleErrorEnum implements IMediaBundleErrorEnum {

                        /**
                         * Constructs a new MediaBundleErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IMediaBundleErrorEnum);

                        /**
                         * Creates a new MediaBundleErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaBundleErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IMediaBundleErrorEnum): google.ads.googleads.v23.errors.MediaBundleErrorEnum;

                        /**
                         * Encodes the specified MediaBundleErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.MediaBundleErrorEnum.verify|verify} messages.
                         * @param message MediaBundleErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IMediaBundleErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaBundleErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.MediaBundleErrorEnum.verify|verify} messages.
                         * @param message MediaBundleErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IMediaBundleErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaBundleErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaBundleErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.MediaBundleErrorEnum;

                        /**
                         * Decodes a MediaBundleErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaBundleErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.MediaBundleErrorEnum;

                        /**
                         * Verifies a MediaBundleErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaBundleErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaBundleErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.MediaBundleErrorEnum;

                        /**
                         * Creates a plain object from a MediaBundleErrorEnum message. Also converts values to other types if specified.
                         * @param message MediaBundleErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.MediaBundleErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaBundleErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaBundleErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MediaBundleErrorEnum {

                        /** MediaBundleError enum. */
                        enum MediaBundleError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BAD_REQUEST = 3,
                            DOUBLECLICK_BUNDLE_NOT_ALLOWED = 4,
                            EXTERNAL_URL_NOT_ALLOWED = 5,
                            FILE_TOO_LARGE = 6,
                            GOOGLE_WEB_DESIGNER_ZIP_FILE_NOT_PUBLISHED = 7,
                            INVALID_INPUT = 8,
                            INVALID_MEDIA_BUNDLE = 9,
                            INVALID_MEDIA_BUNDLE_ENTRY = 10,
                            INVALID_MIME_TYPE = 11,
                            INVALID_PATH = 12,
                            INVALID_URL_REFERENCE = 13,
                            MEDIA_DATA_TOO_LARGE = 14,
                            MISSING_PRIMARY_MEDIA_BUNDLE_ENTRY = 15,
                            SERVER_ERROR = 16,
                            STORAGE_ERROR = 17,
                            SWIFFY_BUNDLE_NOT_ALLOWED = 18,
                            TOO_MANY_FILES = 19,
                            UNEXPECTED_SIZE = 20,
                            UNSUPPORTED_GOOGLE_WEB_DESIGNER_ENVIRONMENT = 21,
                            UNSUPPORTED_HTML5_FEATURE = 22,
                            URL_IN_MEDIA_BUNDLE_NOT_SSL_COMPLIANT = 23,
                            CUSTOM_EXIT_NOT_ALLOWED = 24
                        }
                    }

                    /** Properties of a MediaFileErrorEnum. */
                    interface IMediaFileErrorEnum {
                    }

                    /** Represents a MediaFileErrorEnum. */
                    class MediaFileErrorEnum implements IMediaFileErrorEnum {

                        /**
                         * Constructs a new MediaFileErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IMediaFileErrorEnum);

                        /**
                         * Creates a new MediaFileErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaFileErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IMediaFileErrorEnum): google.ads.googleads.v23.errors.MediaFileErrorEnum;

                        /**
                         * Encodes the specified MediaFileErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.MediaFileErrorEnum.verify|verify} messages.
                         * @param message MediaFileErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IMediaFileErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaFileErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.MediaFileErrorEnum.verify|verify} messages.
                         * @param message MediaFileErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IMediaFileErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaFileErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaFileErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.MediaFileErrorEnum;

                        /**
                         * Decodes a MediaFileErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaFileErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.MediaFileErrorEnum;

                        /**
                         * Verifies a MediaFileErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaFileErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaFileErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.MediaFileErrorEnum;

                        /**
                         * Creates a plain object from a MediaFileErrorEnum message. Also converts values to other types if specified.
                         * @param message MediaFileErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.MediaFileErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaFileErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaFileErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MediaFileErrorEnum {

                        /** MediaFileError enum. */
                        enum MediaFileError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_CREATE_STANDARD_ICON = 2,
                            CANNOT_SELECT_STANDARD_ICON_WITH_OTHER_TYPES = 3,
                            CANNOT_SPECIFY_MEDIA_FILE_ID_AND_DATA = 4,
                            DUPLICATE_MEDIA = 5,
                            EMPTY_FIELD = 6,
                            RESOURCE_REFERENCED_IN_MULTIPLE_OPS = 7,
                            FIELD_NOT_SUPPORTED_FOR_MEDIA_SUB_TYPE = 8,
                            INVALID_MEDIA_FILE_ID = 9,
                            INVALID_MEDIA_SUB_TYPE = 10,
                            INVALID_MEDIA_FILE_TYPE = 11,
                            INVALID_MIME_TYPE = 12,
                            INVALID_REFERENCE_ID = 13,
                            INVALID_YOU_TUBE_ID = 14,
                            MEDIA_FILE_FAILED_TRANSCODING = 15,
                            MEDIA_NOT_TRANSCODED = 16,
                            MEDIA_TYPE_DOES_NOT_MATCH_MEDIA_FILE_TYPE = 17,
                            NO_FIELDS_SPECIFIED = 18,
                            NULL_REFERENCE_ID_AND_MEDIA_ID = 19,
                            TOO_LONG = 20,
                            UNSUPPORTED_TYPE = 21,
                            YOU_TUBE_SERVICE_UNAVAILABLE = 22,
                            YOU_TUBE_VIDEO_HAS_NON_POSITIVE_DURATION = 23,
                            YOU_TUBE_VIDEO_NOT_FOUND = 24
                        }
                    }

                    /** Properties of a MediaUploadErrorEnum. */
                    interface IMediaUploadErrorEnum {
                    }

                    /** Represents a MediaUploadErrorEnum. */
                    class MediaUploadErrorEnum implements IMediaUploadErrorEnum {

                        /**
                         * Constructs a new MediaUploadErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IMediaUploadErrorEnum);

                        /**
                         * Creates a new MediaUploadErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaUploadErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IMediaUploadErrorEnum): google.ads.googleads.v23.errors.MediaUploadErrorEnum;

                        /**
                         * Encodes the specified MediaUploadErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.MediaUploadErrorEnum.verify|verify} messages.
                         * @param message MediaUploadErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IMediaUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaUploadErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.MediaUploadErrorEnum.verify|verify} messages.
                         * @param message MediaUploadErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IMediaUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaUploadErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaUploadErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.MediaUploadErrorEnum;

                        /**
                         * Decodes a MediaUploadErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaUploadErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.MediaUploadErrorEnum;

                        /**
                         * Verifies a MediaUploadErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaUploadErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaUploadErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.MediaUploadErrorEnum;

                        /**
                         * Creates a plain object from a MediaUploadErrorEnum message. Also converts values to other types if specified.
                         * @param message MediaUploadErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.MediaUploadErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaUploadErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaUploadErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MediaUploadErrorEnum {

                        /** MediaUploadError enum. */
                        enum MediaUploadError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FILE_TOO_BIG = 2,
                            UNPARSEABLE_IMAGE = 3,
                            ANIMATED_IMAGE_NOT_ALLOWED = 4,
                            FORMAT_NOT_ALLOWED = 5,
                            EXTERNAL_URL_NOT_ALLOWED = 6,
                            INVALID_URL_REFERENCE = 7,
                            MISSING_PRIMARY_MEDIA_BUNDLE_ENTRY = 8,
                            ANIMATED_VISUAL_EFFECT = 9,
                            ANIMATION_TOO_LONG = 10,
                            ASPECT_RATIO_NOT_ALLOWED = 11,
                            AUDIO_NOT_ALLOWED_IN_MEDIA_BUNDLE = 12,
                            CMYK_JPEG_NOT_ALLOWED = 13,
                            FLASH_NOT_ALLOWED = 14,
                            FRAME_RATE_TOO_HIGH = 15,
                            GOOGLE_WEB_DESIGNER_ZIP_FILE_NOT_PUBLISHED = 16,
                            IMAGE_CONSTRAINTS_VIOLATED = 17,
                            INVALID_MEDIA_BUNDLE = 18,
                            INVALID_MEDIA_BUNDLE_ENTRY = 19,
                            INVALID_MIME_TYPE = 20,
                            INVALID_PATH = 21,
                            LAYOUT_PROBLEM = 22,
                            MALFORMED_URL = 23,
                            MEDIA_BUNDLE_NOT_ALLOWED = 24,
                            MEDIA_BUNDLE_NOT_COMPATIBLE_TO_PRODUCT_TYPE = 25,
                            MEDIA_BUNDLE_REJECTED_BY_MULTIPLE_ASSET_SPECS = 26,
                            TOO_MANY_FILES_IN_MEDIA_BUNDLE = 27,
                            UNSUPPORTED_GOOGLE_WEB_DESIGNER_ENVIRONMENT = 28,
                            UNSUPPORTED_HTML5_FEATURE = 29,
                            URL_IN_MEDIA_BUNDLE_NOT_SSL_COMPLIANT = 30,
                            VIDEO_FILE_NAME_TOO_LONG = 31,
                            VIDEO_MULTIPLE_FILES_WITH_SAME_NAME = 32,
                            VIDEO_NOT_ALLOWED_IN_MEDIA_BUNDLE = 33,
                            CANNOT_UPLOAD_MEDIA_TYPE_THROUGH_API = 34,
                            DIMENSIONS_NOT_ALLOWED = 35
                        }
                    }

                    /** Properties of a MerchantCenterErrorEnum. */
                    interface IMerchantCenterErrorEnum {
                    }

                    /** Represents a MerchantCenterErrorEnum. */
                    class MerchantCenterErrorEnum implements IMerchantCenterErrorEnum {

                        /**
                         * Constructs a new MerchantCenterErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IMerchantCenterErrorEnum);

                        /**
                         * Creates a new MerchantCenterErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MerchantCenterErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IMerchantCenterErrorEnum): google.ads.googleads.v23.errors.MerchantCenterErrorEnum;

                        /**
                         * Encodes the specified MerchantCenterErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.MerchantCenterErrorEnum.verify|verify} messages.
                         * @param message MerchantCenterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IMerchantCenterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MerchantCenterErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.MerchantCenterErrorEnum.verify|verify} messages.
                         * @param message MerchantCenterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IMerchantCenterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MerchantCenterErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MerchantCenterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.MerchantCenterErrorEnum;

                        /**
                         * Decodes a MerchantCenterErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MerchantCenterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.MerchantCenterErrorEnum;

                        /**
                         * Verifies a MerchantCenterErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MerchantCenterErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MerchantCenterErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.MerchantCenterErrorEnum;

                        /**
                         * Creates a plain object from a MerchantCenterErrorEnum message. Also converts values to other types if specified.
                         * @param message MerchantCenterErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.MerchantCenterErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MerchantCenterErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MerchantCenterErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MerchantCenterErrorEnum {

                        /** MerchantCenterError enum. */
                        enum MerchantCenterError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MERCHANT_ID_CANNOT_BE_ACCESSED = 2,
                            CUSTOMER_NOT_ALLOWED_FOR_SHOPPING_PERFORMANCE_MAX = 3
                        }
                    }

                    /** Properties of a MultiplierErrorEnum. */
                    interface IMultiplierErrorEnum {
                    }

                    /** Represents a MultiplierErrorEnum. */
                    class MultiplierErrorEnum implements IMultiplierErrorEnum {

                        /**
                         * Constructs a new MultiplierErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IMultiplierErrorEnum);

                        /**
                         * Creates a new MultiplierErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MultiplierErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IMultiplierErrorEnum): google.ads.googleads.v23.errors.MultiplierErrorEnum;

                        /**
                         * Encodes the specified MultiplierErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.MultiplierErrorEnum.verify|verify} messages.
                         * @param message MultiplierErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IMultiplierErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MultiplierErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.MultiplierErrorEnum.verify|verify} messages.
                         * @param message MultiplierErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IMultiplierErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MultiplierErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MultiplierErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.MultiplierErrorEnum;

                        /**
                         * Decodes a MultiplierErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MultiplierErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.MultiplierErrorEnum;

                        /**
                         * Verifies a MultiplierErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MultiplierErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MultiplierErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.MultiplierErrorEnum;

                        /**
                         * Creates a plain object from a MultiplierErrorEnum message. Also converts values to other types if specified.
                         * @param message MultiplierErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.MultiplierErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MultiplierErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MultiplierErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MultiplierErrorEnum {

                        /** MultiplierError enum. */
                        enum MultiplierError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MULTIPLIER_TOO_HIGH = 2,
                            MULTIPLIER_TOO_LOW = 3,
                            TOO_MANY_FRACTIONAL_DIGITS = 4,
                            MULTIPLIER_NOT_ALLOWED_FOR_BIDDING_STRATEGY = 5,
                            MULTIPLIER_NOT_ALLOWED_WHEN_BASE_BID_IS_MISSING = 6,
                            NO_MULTIPLIER_SPECIFIED = 7,
                            MULTIPLIER_CAUSES_BID_TO_EXCEED_DAILY_BUDGET = 8,
                            MULTIPLIER_CAUSES_BID_TO_EXCEED_MONTHLY_BUDGET = 9,
                            MULTIPLIER_CAUSES_BID_TO_EXCEED_CUSTOM_BUDGET = 10,
                            MULTIPLIER_CAUSES_BID_TO_EXCEED_MAX_ALLOWED_BID = 11,
                            BID_LESS_THAN_MIN_ALLOWED_BID_WITH_MULTIPLIER = 12,
                            MULTIPLIER_AND_BIDDING_STRATEGY_TYPE_MISMATCH = 13
                        }
                    }

                    /** Properties of a MutateErrorEnum. */
                    interface IMutateErrorEnum {
                    }

                    /** Represents a MutateErrorEnum. */
                    class MutateErrorEnum implements IMutateErrorEnum {

                        /**
                         * Constructs a new MutateErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IMutateErrorEnum);

                        /**
                         * Creates a new MutateErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IMutateErrorEnum): google.ads.googleads.v23.errors.MutateErrorEnum;

                        /**
                         * Encodes the specified MutateErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.MutateErrorEnum.verify|verify} messages.
                         * @param message MutateErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IMutateErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.MutateErrorEnum.verify|verify} messages.
                         * @param message MutateErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IMutateErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.MutateErrorEnum;

                        /**
                         * Decodes a MutateErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.MutateErrorEnum;

                        /**
                         * Verifies a MutateErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.MutateErrorEnum;

                        /**
                         * Creates a plain object from a MutateErrorEnum message. Also converts values to other types if specified.
                         * @param message MutateErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.MutateErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MutateErrorEnum {

                        /** MutateError enum. */
                        enum MutateError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RESOURCE_NOT_FOUND = 3,
                            ID_EXISTS_IN_MULTIPLE_MUTATES = 7,
                            INCONSISTENT_FIELD_VALUES = 8,
                            MUTATE_NOT_ALLOWED = 9,
                            RESOURCE_NOT_IN_GOOGLE_ADS = 10,
                            RESOURCE_ALREADY_EXISTS = 11,
                            RESOURCE_DOES_NOT_SUPPORT_VALIDATE_ONLY = 12,
                            OPERATION_DOES_NOT_SUPPORT_PARTIAL_FAILURE = 16,
                            RESOURCE_READ_ONLY = 13
                        }
                    }

                    /** Properties of a NewResourceCreationErrorEnum. */
                    interface INewResourceCreationErrorEnum {
                    }

                    /** Represents a NewResourceCreationErrorEnum. */
                    class NewResourceCreationErrorEnum implements INewResourceCreationErrorEnum {

                        /**
                         * Constructs a new NewResourceCreationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.INewResourceCreationErrorEnum);

                        /**
                         * Creates a new NewResourceCreationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NewResourceCreationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.INewResourceCreationErrorEnum): google.ads.googleads.v23.errors.NewResourceCreationErrorEnum;

                        /**
                         * Encodes the specified NewResourceCreationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.NewResourceCreationErrorEnum.verify|verify} messages.
                         * @param message NewResourceCreationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.INewResourceCreationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NewResourceCreationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.NewResourceCreationErrorEnum.verify|verify} messages.
                         * @param message NewResourceCreationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.INewResourceCreationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NewResourceCreationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NewResourceCreationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.NewResourceCreationErrorEnum;

                        /**
                         * Decodes a NewResourceCreationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NewResourceCreationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.NewResourceCreationErrorEnum;

                        /**
                         * Verifies a NewResourceCreationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NewResourceCreationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NewResourceCreationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.NewResourceCreationErrorEnum;

                        /**
                         * Creates a plain object from a NewResourceCreationErrorEnum message. Also converts values to other types if specified.
                         * @param message NewResourceCreationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.NewResourceCreationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NewResourceCreationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NewResourceCreationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NewResourceCreationErrorEnum {

                        /** NewResourceCreationError enum. */
                        enum NewResourceCreationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CANNOT_SET_ID_FOR_CREATE = 2,
                            DUPLICATE_TEMP_IDS = 3,
                            TEMP_ID_RESOURCE_HAD_ERRORS = 4
                        }
                    }

                    /** Properties of a NotAllowlistedErrorEnum. */
                    interface INotAllowlistedErrorEnum {
                    }

                    /** Represents a NotAllowlistedErrorEnum. */
                    class NotAllowlistedErrorEnum implements INotAllowlistedErrorEnum {

                        /**
                         * Constructs a new NotAllowlistedErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.INotAllowlistedErrorEnum);

                        /**
                         * Creates a new NotAllowlistedErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NotAllowlistedErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.INotAllowlistedErrorEnum): google.ads.googleads.v23.errors.NotAllowlistedErrorEnum;

                        /**
                         * Encodes the specified NotAllowlistedErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.verify|verify} messages.
                         * @param message NotAllowlistedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.INotAllowlistedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NotAllowlistedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.verify|verify} messages.
                         * @param message NotAllowlistedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.INotAllowlistedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NotAllowlistedErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NotAllowlistedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.NotAllowlistedErrorEnum;

                        /**
                         * Decodes a NotAllowlistedErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NotAllowlistedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.NotAllowlistedErrorEnum;

                        /**
                         * Verifies a NotAllowlistedErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NotAllowlistedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NotAllowlistedErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.NotAllowlistedErrorEnum;

                        /**
                         * Creates a plain object from a NotAllowlistedErrorEnum message. Also converts values to other types if specified.
                         * @param message NotAllowlistedErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.NotAllowlistedErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NotAllowlistedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NotAllowlistedErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NotAllowlistedErrorEnum {

                        /** NotAllowlistedError enum. */
                        enum NotAllowlistedError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE = 2
                        }
                    }

                    /** Properties of a NotEmptyErrorEnum. */
                    interface INotEmptyErrorEnum {
                    }

                    /** Represents a NotEmptyErrorEnum. */
                    class NotEmptyErrorEnum implements INotEmptyErrorEnum {

                        /**
                         * Constructs a new NotEmptyErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.INotEmptyErrorEnum);

                        /**
                         * Creates a new NotEmptyErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NotEmptyErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.INotEmptyErrorEnum): google.ads.googleads.v23.errors.NotEmptyErrorEnum;

                        /**
                         * Encodes the specified NotEmptyErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.NotEmptyErrorEnum.verify|verify} messages.
                         * @param message NotEmptyErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.INotEmptyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NotEmptyErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.NotEmptyErrorEnum.verify|verify} messages.
                         * @param message NotEmptyErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.INotEmptyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NotEmptyErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NotEmptyErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.NotEmptyErrorEnum;

                        /**
                         * Decodes a NotEmptyErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NotEmptyErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.NotEmptyErrorEnum;

                        /**
                         * Verifies a NotEmptyErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NotEmptyErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NotEmptyErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.NotEmptyErrorEnum;

                        /**
                         * Creates a plain object from a NotEmptyErrorEnum message. Also converts values to other types if specified.
                         * @param message NotEmptyErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.NotEmptyErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NotEmptyErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NotEmptyErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NotEmptyErrorEnum {

                        /** NotEmptyError enum. */
                        enum NotEmptyError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EMPTY_LIST = 2
                        }
                    }

                    /** Properties of a NullErrorEnum. */
                    interface INullErrorEnum {
                    }

                    /** Represents a NullErrorEnum. */
                    class NullErrorEnum implements INullErrorEnum {

                        /**
                         * Constructs a new NullErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.INullErrorEnum);

                        /**
                         * Creates a new NullErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NullErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.INullErrorEnum): google.ads.googleads.v23.errors.NullErrorEnum;

                        /**
                         * Encodes the specified NullErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.NullErrorEnum.verify|verify} messages.
                         * @param message NullErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.INullErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NullErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.NullErrorEnum.verify|verify} messages.
                         * @param message NullErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.INullErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NullErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NullErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.NullErrorEnum;

                        /**
                         * Decodes a NullErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NullErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.NullErrorEnum;

                        /**
                         * Verifies a NullErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NullErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NullErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.NullErrorEnum;

                        /**
                         * Creates a plain object from a NullErrorEnum message. Also converts values to other types if specified.
                         * @param message NullErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.NullErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NullErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NullErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NullErrorEnum {

                        /** NullError enum. */
                        enum NullError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NULL_CONTENT = 2
                        }
                    }

                    /** Properties of an OfflineUserDataJobErrorEnum. */
                    interface IOfflineUserDataJobErrorEnum {
                    }

                    /** Represents an OfflineUserDataJobErrorEnum. */
                    class OfflineUserDataJobErrorEnum implements IOfflineUserDataJobErrorEnum {

                        /**
                         * Constructs a new OfflineUserDataJobErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IOfflineUserDataJobErrorEnum);

                        /**
                         * Creates a new OfflineUserDataJobErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJobErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IOfflineUserDataJobErrorEnum): google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IOfflineUserDataJobErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum.verify|verify} messages.
                         * @param message OfflineUserDataJobErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IOfflineUserDataJobErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJobErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum;

                        /**
                         * Decodes an OfflineUserDataJobErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJobErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum;

                        /**
                         * Verifies an OfflineUserDataJobErrorEnum message.
                         * @param message Plain 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 OfflineUserDataJobErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJobErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobErrorEnum message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJobErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.OfflineUserDataJobErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJobErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OfflineUserDataJobErrorEnum {

                        /** OfflineUserDataJobError enum. */
                        enum OfflineUserDataJobError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_USER_LIST_ID = 3,
                            INVALID_USER_LIST_TYPE = 4,
                            NOT_ON_ALLOWLIST_FOR_USER_ID = 33,
                            INCOMPATIBLE_UPLOAD_KEY_TYPE = 6,
                            MISSING_USER_IDENTIFIER = 7,
                            INVALID_MOBILE_ID_FORMAT = 8,
                            TOO_MANY_USER_IDENTIFIERS = 9,
                            NOT_ON_ALLOWLIST_FOR_STORE_SALES_DIRECT = 31,
                            NOT_ON_ALLOWLIST_FOR_UNIFIED_STORE_SALES = 32,
                            INVALID_PARTNER_ID = 11,
                            INVALID_ENCODING = 12,
                            INVALID_COUNTRY_CODE = 13,
                            INCOMPATIBLE_USER_IDENTIFIER = 14,
                            FUTURE_TRANSACTION_TIME = 15,
                            INVALID_CONVERSION_ACTION = 16,
                            MOBILE_ID_NOT_SUPPORTED = 17,
                            INVALID_OPERATION_ORDER = 18,
                            CONFLICTING_OPERATION = 19,
                            EXTERNAL_UPDATE_ID_ALREADY_EXISTS = 21,
                            JOB_ALREADY_STARTED = 22,
                            REMOVE_NOT_SUPPORTED = 23,
                            REMOVE_ALL_NOT_SUPPORTED = 24,
                            INVALID_SHA256_FORMAT = 25,
                            CUSTOM_KEY_DISABLED = 26,
                            CUSTOM_KEY_NOT_PREDEFINED = 27,
                            CUSTOM_KEY_NOT_SET = 29,
                            CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS = 30,
                            ATTRIBUTES_NOT_APPLICABLE_FOR_CUSTOMER_MATCH_USER_LIST = 34,
                            LIFETIME_VALUE_BUCKET_NOT_IN_RANGE = 35,
                            INCOMPATIBLE_USER_IDENTIFIER_FOR_ATTRIBUTES = 36,
                            FUTURE_TIME_NOT_ALLOWED = 37,
                            LAST_PURCHASE_TIME_LESS_THAN_ACQUISITION_TIME = 38,
                            CUSTOMER_IDENTIFIER_NOT_ALLOWED = 39,
                            INVALID_ITEM_ID = 40,
                            FIRST_PURCHASE_TIME_GREATER_THAN_LAST_PURCHASE_TIME = 42,
                            INVALID_LIFECYCLE_STAGE = 43,
                            INVALID_EVENT_VALUE = 44,
                            EVENT_ATTRIBUTE_ALL_FIELDS_ARE_REQUIRED = 45,
                            OPERATION_LEVEL_CONSENT_PROVIDED = 48
                        }
                    }

                    /** Properties of an OperationAccessDeniedErrorEnum. */
                    interface IOperationAccessDeniedErrorEnum {
                    }

                    /** Represents an OperationAccessDeniedErrorEnum. */
                    class OperationAccessDeniedErrorEnum implements IOperationAccessDeniedErrorEnum {

                        /**
                         * Constructs a new OperationAccessDeniedErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IOperationAccessDeniedErrorEnum);

                        /**
                         * Creates a new OperationAccessDeniedErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperationAccessDeniedErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IOperationAccessDeniedErrorEnum): google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum;

                        /**
                         * Encodes the specified OperationAccessDeniedErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum.verify|verify} messages.
                         * @param message OperationAccessDeniedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IOperationAccessDeniedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperationAccessDeniedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum.verify|verify} messages.
                         * @param message OperationAccessDeniedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IOperationAccessDeniedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperationAccessDeniedErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperationAccessDeniedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum;

                        /**
                         * Decodes an OperationAccessDeniedErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperationAccessDeniedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum;

                        /**
                         * Verifies an OperationAccessDeniedErrorEnum message.
                         * @param message Plain 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 OperationAccessDeniedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OperationAccessDeniedErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum;

                        /**
                         * Creates a plain object from an OperationAccessDeniedErrorEnum message. Also converts values to other types if specified.
                         * @param message OperationAccessDeniedErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.OperationAccessDeniedErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperationAccessDeniedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OperationAccessDeniedErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OperationAccessDeniedErrorEnum {

                        /** OperationAccessDeniedError enum. */
                        enum OperationAccessDeniedError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACTION_NOT_PERMITTED = 2,
                            CREATE_OPERATION_NOT_PERMITTED = 3,
                            REMOVE_OPERATION_NOT_PERMITTED = 4,
                            UPDATE_OPERATION_NOT_PERMITTED = 5,
                            MUTATE_ACTION_NOT_PERMITTED_FOR_CLIENT = 6,
                            OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE = 7,
                            CREATE_AS_REMOVED_NOT_PERMITTED = 8,
                            OPERATION_NOT_PERMITTED_FOR_REMOVED_RESOURCE = 9,
                            OPERATION_NOT_PERMITTED_FOR_AD_GROUP_TYPE = 10,
                            MUTATE_NOT_PERMITTED_FOR_CUSTOMER = 11
                        }
                    }

                    /** Properties of an OperatorErrorEnum. */
                    interface IOperatorErrorEnum {
                    }

                    /** Represents an OperatorErrorEnum. */
                    class OperatorErrorEnum implements IOperatorErrorEnum {

                        /**
                         * Constructs a new OperatorErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IOperatorErrorEnum);

                        /**
                         * Creates a new OperatorErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperatorErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IOperatorErrorEnum): google.ads.googleads.v23.errors.OperatorErrorEnum;

                        /**
                         * Encodes the specified OperatorErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.OperatorErrorEnum.verify|verify} messages.
                         * @param message OperatorErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IOperatorErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatorErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.OperatorErrorEnum.verify|verify} messages.
                         * @param message OperatorErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IOperatorErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatorErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperatorErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.OperatorErrorEnum;

                        /**
                         * Decodes an OperatorErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperatorErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.OperatorErrorEnum;

                        /**
                         * Verifies an OperatorErrorEnum message.
                         * @param message Plain 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 OperatorErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OperatorErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.OperatorErrorEnum;

                        /**
                         * Creates a plain object from an OperatorErrorEnum message. Also converts values to other types if specified.
                         * @param message OperatorErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.OperatorErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatorErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OperatorErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace OperatorErrorEnum {

                        /** OperatorError enum. */
                        enum OperatorError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPERATOR_NOT_SUPPORTED = 2
                        }
                    }

                    /** Properties of a PartialFailureErrorEnum. */
                    interface IPartialFailureErrorEnum {
                    }

                    /** Represents a PartialFailureErrorEnum. */
                    class PartialFailureErrorEnum implements IPartialFailureErrorEnum {

                        /**
                         * Constructs a new PartialFailureErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IPartialFailureErrorEnum);

                        /**
                         * Creates a new PartialFailureErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PartialFailureErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IPartialFailureErrorEnum): google.ads.googleads.v23.errors.PartialFailureErrorEnum;

                        /**
                         * Encodes the specified PartialFailureErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.PartialFailureErrorEnum.verify|verify} messages.
                         * @param message PartialFailureErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IPartialFailureErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PartialFailureErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.PartialFailureErrorEnum.verify|verify} messages.
                         * @param message PartialFailureErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IPartialFailureErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PartialFailureErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PartialFailureErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.PartialFailureErrorEnum;

                        /**
                         * Decodes a PartialFailureErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PartialFailureErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.PartialFailureErrorEnum;

                        /**
                         * Verifies a PartialFailureErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PartialFailureErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PartialFailureErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.PartialFailureErrorEnum;

                        /**
                         * Creates a plain object from a PartialFailureErrorEnum message. Also converts values to other types if specified.
                         * @param message PartialFailureErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.PartialFailureErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PartialFailureErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PartialFailureErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PartialFailureErrorEnum {

                        /** PartialFailureError enum. */
                        enum PartialFailureError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PARTIAL_FAILURE_MODE_REQUIRED = 2
                        }
                    }

                    /** Properties of a PaymentsAccountErrorEnum. */
                    interface IPaymentsAccountErrorEnum {
                    }

                    /** Represents a PaymentsAccountErrorEnum. */
                    class PaymentsAccountErrorEnum implements IPaymentsAccountErrorEnum {

                        /**
                         * Constructs a new PaymentsAccountErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IPaymentsAccountErrorEnum);

                        /**
                         * Creates a new PaymentsAccountErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PaymentsAccountErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IPaymentsAccountErrorEnum): google.ads.googleads.v23.errors.PaymentsAccountErrorEnum;

                        /**
                         * Encodes the specified PaymentsAccountErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.PaymentsAccountErrorEnum.verify|verify} messages.
                         * @param message PaymentsAccountErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IPaymentsAccountErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaymentsAccountErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.PaymentsAccountErrorEnum.verify|verify} messages.
                         * @param message PaymentsAccountErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IPaymentsAccountErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaymentsAccountErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PaymentsAccountErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.PaymentsAccountErrorEnum;

                        /**
                         * Decodes a PaymentsAccountErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PaymentsAccountErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.PaymentsAccountErrorEnum;

                        /**
                         * Verifies a PaymentsAccountErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaymentsAccountErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PaymentsAccountErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.PaymentsAccountErrorEnum;

                        /**
                         * Creates a plain object from a PaymentsAccountErrorEnum message. Also converts values to other types if specified.
                         * @param message PaymentsAccountErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.PaymentsAccountErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaymentsAccountErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PaymentsAccountErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PaymentsAccountErrorEnum {

                        /** PaymentsAccountError enum. */
                        enum PaymentsAccountError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_SUPPORTED_FOR_MANAGER_CUSTOMER = 2
                        }
                    }

                    /** Properties of a PolicyFindingErrorEnum. */
                    interface IPolicyFindingErrorEnum {
                    }

                    /** Represents a PolicyFindingErrorEnum. */
                    class PolicyFindingErrorEnum implements IPolicyFindingErrorEnum {

                        /**
                         * Constructs a new PolicyFindingErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IPolicyFindingErrorEnum);

                        /**
                         * Creates a new PolicyFindingErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyFindingErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IPolicyFindingErrorEnum): google.ads.googleads.v23.errors.PolicyFindingErrorEnum;

                        /**
                         * Encodes the specified PolicyFindingErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyFindingErrorEnum.verify|verify} messages.
                         * @param message PolicyFindingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IPolicyFindingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyFindingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyFindingErrorEnum.verify|verify} messages.
                         * @param message PolicyFindingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IPolicyFindingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyFindingErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyFindingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.PolicyFindingErrorEnum;

                        /**
                         * Decodes a PolicyFindingErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyFindingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.PolicyFindingErrorEnum;

                        /**
                         * Verifies a PolicyFindingErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyFindingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyFindingErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.PolicyFindingErrorEnum;

                        /**
                         * Creates a plain object from a PolicyFindingErrorEnum message. Also converts values to other types if specified.
                         * @param message PolicyFindingErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.PolicyFindingErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyFindingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyFindingErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyFindingErrorEnum {

                        /** PolicyFindingError enum. */
                        enum PolicyFindingError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            POLICY_FINDING = 2,
                            POLICY_TOPIC_NOT_FOUND = 3
                        }
                    }

                    /** Properties of a PolicyValidationParameterErrorEnum. */
                    interface IPolicyValidationParameterErrorEnum {
                    }

                    /** Represents a PolicyValidationParameterErrorEnum. */
                    class PolicyValidationParameterErrorEnum implements IPolicyValidationParameterErrorEnum {

                        /**
                         * Constructs a new PolicyValidationParameterErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IPolicyValidationParameterErrorEnum);

                        /**
                         * Creates a new PolicyValidationParameterErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyValidationParameterErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IPolicyValidationParameterErrorEnum): google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum;

                        /**
                         * Encodes the specified PolicyValidationParameterErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum.verify|verify} messages.
                         * @param message PolicyValidationParameterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IPolicyValidationParameterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyValidationParameterErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum.verify|verify} messages.
                         * @param message PolicyValidationParameterErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IPolicyValidationParameterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyValidationParameterErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyValidationParameterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum;

                        /**
                         * Decodes a PolicyValidationParameterErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyValidationParameterErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum;

                        /**
                         * Verifies a PolicyValidationParameterErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyValidationParameterErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyValidationParameterErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum;

                        /**
                         * Creates a plain object from a PolicyValidationParameterErrorEnum message. Also converts values to other types if specified.
                         * @param message PolicyValidationParameterErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.PolicyValidationParameterErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyValidationParameterErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyValidationParameterErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyValidationParameterErrorEnum {

                        /** PolicyValidationParameterError enum. */
                        enum PolicyValidationParameterError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNSUPPORTED_AD_TYPE_FOR_IGNORABLE_POLICY_TOPICS = 2,
                            UNSUPPORTED_AD_TYPE_FOR_EXEMPT_POLICY_VIOLATION_KEYS = 3,
                            CANNOT_SET_BOTH_IGNORABLE_POLICY_TOPICS_AND_EXEMPT_POLICY_VIOLATION_KEYS = 4
                        }
                    }

                    /** Properties of a PolicyViolationErrorEnum. */
                    interface IPolicyViolationErrorEnum {
                    }

                    /** Represents a PolicyViolationErrorEnum. */
                    class PolicyViolationErrorEnum implements IPolicyViolationErrorEnum {

                        /**
                         * Constructs a new PolicyViolationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IPolicyViolationErrorEnum);

                        /**
                         * Creates a new PolicyViolationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PolicyViolationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IPolicyViolationErrorEnum): google.ads.googleads.v23.errors.PolicyViolationErrorEnum;

                        /**
                         * Encodes the specified PolicyViolationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyViolationErrorEnum.verify|verify} messages.
                         * @param message PolicyViolationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IPolicyViolationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyViolationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.PolicyViolationErrorEnum.verify|verify} messages.
                         * @param message PolicyViolationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IPolicyViolationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyViolationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PolicyViolationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.PolicyViolationErrorEnum;

                        /**
                         * Decodes a PolicyViolationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PolicyViolationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.PolicyViolationErrorEnum;

                        /**
                         * Verifies a PolicyViolationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyViolationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PolicyViolationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.PolicyViolationErrorEnum;

                        /**
                         * Creates a plain object from a PolicyViolationErrorEnum message. Also converts values to other types if specified.
                         * @param message PolicyViolationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.PolicyViolationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyViolationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PolicyViolationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PolicyViolationErrorEnum {

                        /** PolicyViolationError enum. */
                        enum PolicyViolationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            POLICY_ERROR = 2
                        }
                    }

                    /** Properties of a ProductLinkErrorEnum. */
                    interface IProductLinkErrorEnum {
                    }

                    /** Represents a ProductLinkErrorEnum. */
                    class ProductLinkErrorEnum implements IProductLinkErrorEnum {

                        /**
                         * Constructs a new ProductLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IProductLinkErrorEnum);

                        /**
                         * Creates a new ProductLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IProductLinkErrorEnum): google.ads.googleads.v23.errors.ProductLinkErrorEnum;

                        /**
                         * Encodes the specified ProductLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ProductLinkErrorEnum.verify|verify} messages.
                         * @param message ProductLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IProductLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ProductLinkErrorEnum.verify|verify} messages.
                         * @param message ProductLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IProductLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ProductLinkErrorEnum;

                        /**
                         * Decodes a ProductLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ProductLinkErrorEnum;

                        /**
                         * Verifies a ProductLinkErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ProductLinkErrorEnum;

                        /**
                         * Creates a plain object from a ProductLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message ProductLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ProductLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductLinkErrorEnum {

                        /** ProductLinkError enum. */
                        enum ProductLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_OPERATION = 2,
                            CREATION_NOT_PERMITTED = 3,
                            INVITATION_EXISTS = 4,
                            LINK_EXISTS = 5
                        }
                    }

                    /** Properties of a ProductLinkInvitationErrorEnum. */
                    interface IProductLinkInvitationErrorEnum {
                    }

                    /** Represents a ProductLinkInvitationErrorEnum. */
                    class ProductLinkInvitationErrorEnum implements IProductLinkInvitationErrorEnum {

                        /**
                         * Constructs a new ProductLinkInvitationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IProductLinkInvitationErrorEnum);

                        /**
                         * Creates a new ProductLinkInvitationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductLinkInvitationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IProductLinkInvitationErrorEnum): google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum;

                        /**
                         * Encodes the specified ProductLinkInvitationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum.verify|verify} messages.
                         * @param message ProductLinkInvitationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IProductLinkInvitationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductLinkInvitationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum.verify|verify} messages.
                         * @param message ProductLinkInvitationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IProductLinkInvitationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductLinkInvitationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductLinkInvitationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum;

                        /**
                         * Decodes a ProductLinkInvitationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductLinkInvitationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum;

                        /**
                         * Verifies a ProductLinkInvitationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductLinkInvitationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductLinkInvitationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum;

                        /**
                         * Creates a plain object from a ProductLinkInvitationErrorEnum message. Also converts values to other types if specified.
                         * @param message ProductLinkInvitationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ProductLinkInvitationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductLinkInvitationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductLinkInvitationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductLinkInvitationErrorEnum {

                        /** ProductLinkInvitationError enum. */
                        enum ProductLinkInvitationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_STATUS = 2,
                            PERMISSION_DENIED = 3,
                            NO_INVITATION_REQUIRED = 4,
                            CUSTOMER_NOT_PERMITTED_TO_CREATE_INVITATION = 5
                        }
                    }

                    /** Properties of a QueryErrorEnum. */
                    interface IQueryErrorEnum {
                    }

                    /** Represents a QueryErrorEnum. */
                    class QueryErrorEnum implements IQueryErrorEnum {

                        /**
                         * Constructs a new QueryErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IQueryErrorEnum);

                        /**
                         * Creates a new QueryErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IQueryErrorEnum): google.ads.googleads.v23.errors.QueryErrorEnum;

                        /**
                         * Encodes the specified QueryErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.QueryErrorEnum.verify|verify} messages.
                         * @param message QueryErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IQueryErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.QueryErrorEnum.verify|verify} messages.
                         * @param message QueryErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IQueryErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.QueryErrorEnum;

                        /**
                         * Decodes a QueryErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.QueryErrorEnum;

                        /**
                         * Verifies a QueryErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QueryErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.QueryErrorEnum;

                        /**
                         * Creates a plain object from a QueryErrorEnum message. Also converts values to other types if specified.
                         * @param message QueryErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.QueryErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QueryErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace QueryErrorEnum {

                        /** QueryError enum. */
                        enum QueryError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            QUERY_ERROR = 50,
                            BAD_ENUM_CONSTANT = 18,
                            BAD_ESCAPE_SEQUENCE = 7,
                            BAD_FIELD_NAME = 12,
                            BAD_LIMIT_VALUE = 15,
                            BAD_NUMBER = 5,
                            BAD_OPERATOR = 3,
                            BAD_PARAMETER_NAME = 61,
                            BAD_PARAMETER_VALUE = 62,
                            BAD_RESOURCE_TYPE_IN_FROM_CLAUSE = 45,
                            BAD_SYMBOL = 2,
                            BAD_VALUE = 4,
                            DATE_RANGE_TOO_WIDE = 36,
                            DATE_RANGE_TOO_NARROW = 60,
                            EXPECTED_AND = 30,
                            EXPECTED_BY = 14,
                            EXPECTED_DIMENSION_FIELD_IN_SELECT_CLAUSE = 37,
                            EXPECTED_FILTERS_ON_DATE_RANGE = 55,
                            EXPECTED_FROM = 44,
                            EXPECTED_LIST = 41,
                            EXPECTED_REFERENCED_FIELD_IN_SELECT_CLAUSE = 16,
                            EXPECTED_SELECT = 13,
                            EXPECTED_SINGLE_VALUE = 42,
                            EXPECTED_VALUE_WITH_BETWEEN_OPERATOR = 29,
                            INVALID_DATE_FORMAT = 38,
                            MISALIGNED_DATE_FOR_FILTER = 64,
                            INVALID_STRING_VALUE = 57,
                            INVALID_VALUE_WITH_BETWEEN_OPERATOR = 26,
                            INVALID_VALUE_WITH_DURING_OPERATOR = 22,
                            INVALID_VALUE_WITH_LIKE_OPERATOR = 56,
                            OPERATOR_FIELD_MISMATCH = 35,
                            PROHIBITED_EMPTY_LIST_IN_CONDITION = 28,
                            PROHIBITED_ENUM_CONSTANT = 54,
                            PROHIBITED_FIELD_COMBINATION_IN_SELECT_CLAUSE = 31,
                            PROHIBITED_FIELD_IN_ORDER_BY_CLAUSE = 40,
                            PROHIBITED_FIELD_IN_SELECT_CLAUSE = 23,
                            PROHIBITED_FIELD_IN_WHERE_CLAUSE = 24,
                            PROHIBITED_RESOURCE_TYPE_IN_FROM_CLAUSE = 43,
                            PROHIBITED_RESOURCE_TYPE_IN_SELECT_CLAUSE = 48,
                            PROHIBITED_RESOURCE_TYPE_IN_WHERE_CLAUSE = 58,
                            PROHIBITED_METRIC_IN_SELECT_OR_WHERE_CLAUSE = 49,
                            PROHIBITED_SEGMENT_IN_SELECT_OR_WHERE_CLAUSE = 51,
                            PROHIBITED_SEGMENT_WITH_METRIC_IN_SELECT_OR_WHERE_CLAUSE = 53,
                            PROHIBITED_FIELD_OR_SEGMENT_WITH_METRIC = 65,
                            LIMIT_VALUE_TOO_LOW = 25,
                            PROHIBITED_NEWLINE_IN_STRING = 8,
                            PROHIBITED_VALUE_COMBINATION_IN_LIST = 10,
                            PROHIBITED_VALUE_COMBINATION_WITH_BETWEEN_OPERATOR = 21,
                            STRING_NOT_TERMINATED = 6,
                            TOO_MANY_SEGMENTS = 34,
                            UNEXPECTED_END_OF_QUERY = 9,
                            UNEXPECTED_FROM_CLAUSE = 47,
                            UNRECOGNIZED_FIELD = 32,
                            UNEXPECTED_INPUT = 11,
                            REQUESTED_METRICS_FOR_MANAGER = 59,
                            FILTER_HAS_TOO_MANY_VALUES = 63,
                            REQUIRED_SEGMENT_FIELD_MISSING = 66
                        }
                    }

                    /** Properties of a QuotaErrorEnum. */
                    interface IQuotaErrorEnum {
                    }

                    /** Represents a QuotaErrorEnum. */
                    class QuotaErrorEnum implements IQuotaErrorEnum {

                        /**
                         * Constructs a new QuotaErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IQuotaErrorEnum);

                        /**
                         * Creates a new QuotaErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QuotaErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IQuotaErrorEnum): google.ads.googleads.v23.errors.QuotaErrorEnum;

                        /**
                         * Encodes the specified QuotaErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.QuotaErrorEnum.verify|verify} messages.
                         * @param message QuotaErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IQuotaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QuotaErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.QuotaErrorEnum.verify|verify} messages.
                         * @param message QuotaErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IQuotaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QuotaErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QuotaErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.QuotaErrorEnum;

                        /**
                         * Decodes a QuotaErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QuotaErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.QuotaErrorEnum;

                        /**
                         * Verifies a QuotaErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QuotaErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QuotaErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.QuotaErrorEnum;

                        /**
                         * Creates a plain object from a QuotaErrorEnum message. Also converts values to other types if specified.
                         * @param message QuotaErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.QuotaErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QuotaErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QuotaErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace QuotaErrorEnum {

                        /** QuotaError enum. */
                        enum QuotaError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RESOURCE_EXHAUSTED = 2,
                            ACCESS_PROHIBITED = 3,
                            RESOURCE_TEMPORARILY_EXHAUSTED = 4,
                            EXCESSIVE_SHORT_TERM_QUERY_RESOURCE_CONSUMPTION = 5,
                            EXCESSIVE_LONG_TERM_QUERY_RESOURCE_CONSUMPTION = 6,
                            PAYMENTS_PROFILE_ACTIVATION_RATE_LIMIT_EXCEEDED = 7
                        }
                    }

                    /** Properties of a RangeErrorEnum. */
                    interface IRangeErrorEnum {
                    }

                    /** Represents a RangeErrorEnum. */
                    class RangeErrorEnum implements IRangeErrorEnum {

                        /**
                         * Constructs a new RangeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IRangeErrorEnum);

                        /**
                         * Creates a new RangeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RangeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IRangeErrorEnum): google.ads.googleads.v23.errors.RangeErrorEnum;

                        /**
                         * Encodes the specified RangeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.RangeErrorEnum.verify|verify} messages.
                         * @param message RangeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IRangeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RangeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.RangeErrorEnum.verify|verify} messages.
                         * @param message RangeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IRangeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RangeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RangeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.RangeErrorEnum;

                        /**
                         * Decodes a RangeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RangeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.RangeErrorEnum;

                        /**
                         * Verifies a RangeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RangeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RangeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.RangeErrorEnum;

                        /**
                         * Creates a plain object from a RangeErrorEnum message. Also converts values to other types if specified.
                         * @param message RangeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.RangeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RangeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RangeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RangeErrorEnum {

                        /** RangeError enum. */
                        enum RangeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_LOW = 2,
                            TOO_HIGH = 3
                        }
                    }

                    /** Properties of a ReachPlanErrorEnum. */
                    interface IReachPlanErrorEnum {
                    }

                    /** Represents a ReachPlanErrorEnum. */
                    class ReachPlanErrorEnum implements IReachPlanErrorEnum {

                        /**
                         * Constructs a new ReachPlanErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IReachPlanErrorEnum);

                        /**
                         * Creates a new ReachPlanErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachPlanErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IReachPlanErrorEnum): google.ads.googleads.v23.errors.ReachPlanErrorEnum;

                        /**
                         * Encodes the specified ReachPlanErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ReachPlanErrorEnum.verify|verify} messages.
                         * @param message ReachPlanErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IReachPlanErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ReachPlanErrorEnum.verify|verify} messages.
                         * @param message ReachPlanErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IReachPlanErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachPlanErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ReachPlanErrorEnum;

                        /**
                         * Decodes a ReachPlanErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachPlanErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ReachPlanErrorEnum;

                        /**
                         * Verifies a ReachPlanErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachPlanErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ReachPlanErrorEnum;

                        /**
                         * Creates a plain object from a ReachPlanErrorEnum message. Also converts values to other types if specified.
                         * @param message ReachPlanErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ReachPlanErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachPlanErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ReachPlanErrorEnum {

                        /** ReachPlanError enum. */
                        enum ReachPlanError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_FORECASTABLE_MISSING_RATE = 2,
                            NOT_FORECASTABLE_NOT_ENOUGH_INVENTORY = 3,
                            NOT_FORECASTABLE_ACCOUNT_NOT_ENABLED = 4
                        }
                    }

                    /** Properties of a RecommendationErrorEnum. */
                    interface IRecommendationErrorEnum {
                    }

                    /** Represents a RecommendationErrorEnum. */
                    class RecommendationErrorEnum implements IRecommendationErrorEnum {

                        /**
                         * Constructs a new RecommendationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IRecommendationErrorEnum);

                        /**
                         * Creates a new RecommendationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecommendationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IRecommendationErrorEnum): google.ads.googleads.v23.errors.RecommendationErrorEnum;

                        /**
                         * Encodes the specified RecommendationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.RecommendationErrorEnum.verify|verify} messages.
                         * @param message RecommendationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IRecommendationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.RecommendationErrorEnum.verify|verify} messages.
                         * @param message RecommendationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IRecommendationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecommendationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.RecommendationErrorEnum;

                        /**
                         * Decodes a RecommendationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecommendationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.RecommendationErrorEnum;

                        /**
                         * Verifies a RecommendationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecommendationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.RecommendationErrorEnum;

                        /**
                         * Creates a plain object from a RecommendationErrorEnum message. Also converts values to other types if specified.
                         * @param message RecommendationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.RecommendationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecommendationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RecommendationErrorEnum {

                        /** RecommendationError enum. */
                        enum RecommendationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUDGET_AMOUNT_TOO_SMALL = 2,
                            BUDGET_AMOUNT_TOO_LARGE = 3,
                            INVALID_BUDGET_AMOUNT = 4,
                            POLICY_ERROR = 5,
                            INVALID_BID_AMOUNT = 6,
                            ADGROUP_KEYWORD_LIMIT = 7,
                            RECOMMENDATION_ALREADY_APPLIED = 8,
                            RECOMMENDATION_INVALIDATED = 9,
                            TOO_MANY_OPERATIONS = 10,
                            NO_OPERATIONS = 11,
                            DIFFERENT_TYPES_NOT_SUPPORTED = 12,
                            DUPLICATE_RESOURCE_NAME = 13,
                            RECOMMENDATION_ALREADY_DISMISSED = 14,
                            INVALID_APPLY_REQUEST = 15,
                            RECOMMENDATION_TYPE_APPLY_NOT_SUPPORTED = 17,
                            INVALID_MULTIPLIER = 18,
                            ADVERTISING_CHANNEL_TYPE_GENERATE_NOT_SUPPORTED = 19,
                            RECOMMENDATION_TYPE_GENERATE_NOT_SUPPORTED = 20,
                            RECOMMENDATION_TYPES_CANNOT_BE_EMPTY = 21,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_BIDDING_INFO = 22,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_BIDDING_STRATEGY_TYPE = 23,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_ASSET_GROUP_INFO = 24,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_ASSET_GROUP_INFO_WITH_FINAL_URL = 25,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_COUNTRY_CODES_FOR_SEARCH_CHANNEL = 26,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_INVALID_COUNTRY_CODE_FOR_SEARCH_CHANNEL = 27,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_LANGUAGE_CODES_FOR_SEARCH_CHANNEL = 28,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_EITHER_POSITIVE_OR_NEGATIVE_LOCATION_IDS_FOR_SEARCH_CHANNEL = 29,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_AD_GROUP_INFO_FOR_SEARCH_CHANNEL = 30,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_REQUIRES_KEYWORDS_FOR_SEARCH_CHANNEL = 31,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_WITH_CHANNEL_TYPE_SEARCH_AND_BIDDING_STRATEGY_TYPE_TARGET_IMPRESSION_SHARE_REQUIRES_LOCATION = 32,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_WITH_CHANNEL_TYPE_SEARCH_AND_BIDDING_STRATEGY_TYPE_TARGET_IMPRESSION_SHARE_REQUIRES_TARGET_IMPRESSION_SHARE_MICROS = 33,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_TARGET_IMPRESSION_SHARE_MICROS_BETWEEN_1_AND_1000000 = 34,
                            CAMPAIGN_BUDGET_RECOMMENDATION_TYPE_WITH_CHANNEL_TYPE_SEARCH_AND_BIDDING_STRATEGY_TYPE_TARGET_IMPRESSION_SHARE_REQUIRES_TARGET_IMPRESSION_SHARE_INFO = 35,
                            MERCHANT_CENTER_ACCOUNT_ID_NOT_SUPPORTED_ADVERTISING_CHANNEL_TYPE = 36
                        }
                    }

                    /** Properties of a RecommendationSubscriptionErrorEnum. */
                    interface IRecommendationSubscriptionErrorEnum {
                    }

                    /** Represents a RecommendationSubscriptionErrorEnum. */
                    class RecommendationSubscriptionErrorEnum implements IRecommendationSubscriptionErrorEnum {

                        /**
                         * Constructs a new RecommendationSubscriptionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IRecommendationSubscriptionErrorEnum);

                        /**
                         * Creates a new RecommendationSubscriptionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecommendationSubscriptionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IRecommendationSubscriptionErrorEnum): google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum;

                        /**
                         * Encodes the specified RecommendationSubscriptionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum.verify|verify} messages.
                         * @param message RecommendationSubscriptionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IRecommendationSubscriptionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationSubscriptionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum.verify|verify} messages.
                         * @param message RecommendationSubscriptionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IRecommendationSubscriptionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationSubscriptionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecommendationSubscriptionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum;

                        /**
                         * Decodes a RecommendationSubscriptionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecommendationSubscriptionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum;

                        /**
                         * Verifies a RecommendationSubscriptionErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationSubscriptionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecommendationSubscriptionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum;

                        /**
                         * Creates a plain object from a RecommendationSubscriptionErrorEnum message. Also converts values to other types if specified.
                         * @param message RecommendationSubscriptionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.RecommendationSubscriptionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationSubscriptionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecommendationSubscriptionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RecommendationSubscriptionErrorEnum {

                        /** RecommendationSubscriptionError enum. */
                        enum RecommendationSubscriptionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1
                        }
                    }

                    /** Properties of a RegionCodeErrorEnum. */
                    interface IRegionCodeErrorEnum {
                    }

                    /** Represents a RegionCodeErrorEnum. */
                    class RegionCodeErrorEnum implements IRegionCodeErrorEnum {

                        /**
                         * Constructs a new RegionCodeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IRegionCodeErrorEnum);

                        /**
                         * Creates a new RegionCodeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RegionCodeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IRegionCodeErrorEnum): google.ads.googleads.v23.errors.RegionCodeErrorEnum;

                        /**
                         * Encodes the specified RegionCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.RegionCodeErrorEnum.verify|verify} messages.
                         * @param message RegionCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IRegionCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RegionCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.RegionCodeErrorEnum.verify|verify} messages.
                         * @param message RegionCodeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IRegionCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RegionCodeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RegionCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.RegionCodeErrorEnum;

                        /**
                         * Decodes a RegionCodeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RegionCodeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.RegionCodeErrorEnum;

                        /**
                         * Verifies a RegionCodeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RegionCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RegionCodeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.RegionCodeErrorEnum;

                        /**
                         * Creates a plain object from a RegionCodeErrorEnum message. Also converts values to other types if specified.
                         * @param message RegionCodeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.RegionCodeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RegionCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RegionCodeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RegionCodeErrorEnum {

                        /** RegionCodeError enum. */
                        enum RegionCodeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_REGION_CODE = 2
                        }
                    }

                    /** Properties of a RequestErrorEnum. */
                    interface IRequestErrorEnum {
                    }

                    /** Represents a RequestErrorEnum. */
                    class RequestErrorEnum implements IRequestErrorEnum {

                        /**
                         * Constructs a new RequestErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IRequestErrorEnum);

                        /**
                         * Creates a new RequestErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RequestErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IRequestErrorEnum): google.ads.googleads.v23.errors.RequestErrorEnum;

                        /**
                         * Encodes the specified RequestErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.RequestErrorEnum.verify|verify} messages.
                         * @param message RequestErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IRequestErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RequestErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.RequestErrorEnum.verify|verify} messages.
                         * @param message RequestErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IRequestErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RequestErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RequestErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.RequestErrorEnum;

                        /**
                         * Decodes a RequestErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RequestErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.RequestErrorEnum;

                        /**
                         * Verifies a RequestErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RequestErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RequestErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.RequestErrorEnum;

                        /**
                         * Creates a plain object from a RequestErrorEnum message. Also converts values to other types if specified.
                         * @param message RequestErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.RequestErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RequestErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RequestErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace RequestErrorEnum {

                        /** RequestError enum. */
                        enum RequestError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RESOURCE_NAME_MISSING = 3,
                            RESOURCE_NAME_MALFORMED = 4,
                            BAD_RESOURCE_ID = 17,
                            INVALID_CUSTOMER_ID = 16,
                            OPERATION_REQUIRED = 5,
                            RESOURCE_NOT_FOUND = 6,
                            INVALID_PAGE_TOKEN = 7,
                            EXPIRED_PAGE_TOKEN = 8,
                            INVALID_PAGE_SIZE = 22,
                            PAGE_SIZE_NOT_SUPPORTED = 40,
                            REQUIRED_FIELD_MISSING = 9,
                            IMMUTABLE_FIELD = 11,
                            TOO_MANY_MUTATE_OPERATIONS = 13,
                            CANNOT_BE_EXECUTED_BY_MANAGER_ACCOUNT = 14,
                            CANNOT_MODIFY_FOREIGN_FIELD = 15,
                            INVALID_ENUM_VALUE = 18,
                            DEVELOPER_TOKEN_PARAMETER_MISSING = 19,
                            LOGIN_CUSTOMER_ID_PARAMETER_MISSING = 20,
                            VALIDATE_ONLY_REQUEST_HAS_PAGE_TOKEN = 21,
                            CANNOT_RETURN_SUMMARY_ROW_FOR_REQUEST_WITHOUT_METRICS = 29,
                            CANNOT_RETURN_SUMMARY_ROW_FOR_VALIDATE_ONLY_REQUESTS = 30,
                            INCONSISTENT_RETURN_SUMMARY_ROW_VALUE = 31,
                            TOTAL_RESULTS_COUNT_NOT_ORIGINALLY_REQUESTED = 32,
                            RPC_DEADLINE_TOO_SHORT = 33,
                            UNSUPPORTED_VERSION = 38,
                            CLOUD_PROJECT_NOT_FOUND = 39
                        }
                    }

                    /** Properties of a ResourceAccessDeniedErrorEnum. */
                    interface IResourceAccessDeniedErrorEnum {
                    }

                    /** Represents a ResourceAccessDeniedErrorEnum. */
                    class ResourceAccessDeniedErrorEnum implements IResourceAccessDeniedErrorEnum {

                        /**
                         * Constructs a new ResourceAccessDeniedErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IResourceAccessDeniedErrorEnum);

                        /**
                         * Creates a new ResourceAccessDeniedErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResourceAccessDeniedErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IResourceAccessDeniedErrorEnum): google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum;

                        /**
                         * Encodes the specified ResourceAccessDeniedErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum.verify|verify} messages.
                         * @param message ResourceAccessDeniedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IResourceAccessDeniedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceAccessDeniedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum.verify|verify} messages.
                         * @param message ResourceAccessDeniedErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IResourceAccessDeniedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceAccessDeniedErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ResourceAccessDeniedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum;

                        /**
                         * Decodes a ResourceAccessDeniedErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ResourceAccessDeniedErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum;

                        /**
                         * Verifies a ResourceAccessDeniedErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceAccessDeniedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ResourceAccessDeniedErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum;

                        /**
                         * Creates a plain object from a ResourceAccessDeniedErrorEnum message. Also converts values to other types if specified.
                         * @param message ResourceAccessDeniedErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ResourceAccessDeniedErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceAccessDeniedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ResourceAccessDeniedErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ResourceAccessDeniedErrorEnum {

                        /** ResourceAccessDeniedError enum. */
                        enum ResourceAccessDeniedError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            WRITE_ACCESS_DENIED = 3
                        }
                    }

                    /** Properties of a ResourceCountLimitExceededErrorEnum. */
                    interface IResourceCountLimitExceededErrorEnum {
                    }

                    /** Represents a ResourceCountLimitExceededErrorEnum. */
                    class ResourceCountLimitExceededErrorEnum implements IResourceCountLimitExceededErrorEnum {

                        /**
                         * Constructs a new ResourceCountLimitExceededErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IResourceCountLimitExceededErrorEnum);

                        /**
                         * Creates a new ResourceCountLimitExceededErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ResourceCountLimitExceededErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IResourceCountLimitExceededErrorEnum): google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum;

                        /**
                         * Encodes the specified ResourceCountLimitExceededErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum.verify|verify} messages.
                         * @param message ResourceCountLimitExceededErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IResourceCountLimitExceededErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceCountLimitExceededErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum.verify|verify} messages.
                         * @param message ResourceCountLimitExceededErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IResourceCountLimitExceededErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceCountLimitExceededErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ResourceCountLimitExceededErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum;

                        /**
                         * Decodes a ResourceCountLimitExceededErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ResourceCountLimitExceededErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum;

                        /**
                         * Verifies a ResourceCountLimitExceededErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceCountLimitExceededErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ResourceCountLimitExceededErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum;

                        /**
                         * Creates a plain object from a ResourceCountLimitExceededErrorEnum message. Also converts values to other types if specified.
                         * @param message ResourceCountLimitExceededErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ResourceCountLimitExceededErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceCountLimitExceededErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ResourceCountLimitExceededErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ResourceCountLimitExceededErrorEnum {

                        /** ResourceCountLimitExceededError enum. */
                        enum ResourceCountLimitExceededError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACCOUNT_LIMIT = 2,
                            CAMPAIGN_LIMIT = 3,
                            ADGROUP_LIMIT = 4,
                            AD_GROUP_AD_LIMIT = 5,
                            AD_GROUP_CRITERION_LIMIT = 6,
                            SHARED_SET_LIMIT = 7,
                            MATCHING_FUNCTION_LIMIT = 8,
                            RESPONSE_ROW_LIMIT_EXCEEDED = 9,
                            RESOURCE_LIMIT = 10
                        }
                    }

                    /** Properties of a SearchTermInsightErrorEnum. */
                    interface ISearchTermInsightErrorEnum {
                    }

                    /** Represents a SearchTermInsightErrorEnum. */
                    class SearchTermInsightErrorEnum implements ISearchTermInsightErrorEnum {

                        /**
                         * Constructs a new SearchTermInsightErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ISearchTermInsightErrorEnum);

                        /**
                         * Creates a new SearchTermInsightErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchTermInsightErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ISearchTermInsightErrorEnum): google.ads.googleads.v23.errors.SearchTermInsightErrorEnum;

                        /**
                         * Encodes the specified SearchTermInsightErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.SearchTermInsightErrorEnum.verify|verify} messages.
                         * @param message SearchTermInsightErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ISearchTermInsightErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermInsightErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.SearchTermInsightErrorEnum.verify|verify} messages.
                         * @param message SearchTermInsightErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ISearchTermInsightErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermInsightErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchTermInsightErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.SearchTermInsightErrorEnum;

                        /**
                         * Decodes a SearchTermInsightErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchTermInsightErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.SearchTermInsightErrorEnum;

                        /**
                         * Verifies a SearchTermInsightErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermInsightErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchTermInsightErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.SearchTermInsightErrorEnum;

                        /**
                         * Creates a plain object from a SearchTermInsightErrorEnum message. Also converts values to other types if specified.
                         * @param message SearchTermInsightErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.SearchTermInsightErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermInsightErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchTermInsightErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SearchTermInsightErrorEnum {

                        /** SearchTermInsightError enum. */
                        enum SearchTermInsightError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FILTERING_NOT_ALLOWED_WITH_SEGMENTS = 2,
                            LIMIT_NOT_ALLOWED_WITH_SEGMENTS = 3,
                            MISSING_FIELD_IN_SELECT_CLAUSE = 4,
                            REQUIRES_FILTER_BY_SINGLE_RESOURCE = 5,
                            SORTING_NOT_ALLOWED_WITH_SEGMENTS = 6,
                            SUMMARY_ROW_NOT_ALLOWED_WITH_SEGMENTS = 7
                        }
                    }

                    /** Properties of a SettingErrorEnum. */
                    interface ISettingErrorEnum {
                    }

                    /** Represents a SettingErrorEnum. */
                    class SettingErrorEnum implements ISettingErrorEnum {

                        /**
                         * Constructs a new SettingErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ISettingErrorEnum);

                        /**
                         * Creates a new SettingErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SettingErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ISettingErrorEnum): google.ads.googleads.v23.errors.SettingErrorEnum;

                        /**
                         * Encodes the specified SettingErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.SettingErrorEnum.verify|verify} messages.
                         * @param message SettingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ISettingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SettingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.SettingErrorEnum.verify|verify} messages.
                         * @param message SettingErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ISettingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SettingErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SettingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.SettingErrorEnum;

                        /**
                         * Decodes a SettingErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SettingErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.SettingErrorEnum;

                        /**
                         * Verifies a SettingErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SettingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SettingErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.SettingErrorEnum;

                        /**
                         * Creates a plain object from a SettingErrorEnum message. Also converts values to other types if specified.
                         * @param message SettingErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.SettingErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SettingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SettingErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SettingErrorEnum {

                        /** SettingError enum. */
                        enum SettingError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SETTING_TYPE_IS_NOT_AVAILABLE = 3,
                            SETTING_TYPE_IS_NOT_COMPATIBLE_WITH_CAMPAIGN = 4,
                            TARGETING_SETTING_CONTAINS_INVALID_CRITERION_TYPE_GROUP = 5,
                            TARGETING_SETTING_DEMOGRAPHIC_CRITERION_TYPE_GROUPS_MUST_BE_SET_TO_TARGET_ALL = 6,
                            TARGETING_SETTING_CANNOT_CHANGE_TARGET_ALL_TO_FALSE_FOR_DEMOGRAPHIC_CRITERION_TYPE_GROUP = 7,
                            DYNAMIC_SEARCH_ADS_SETTING_AT_LEAST_ONE_FEED_ID_MUST_BE_PRESENT = 8,
                            DYNAMIC_SEARCH_ADS_SETTING_CONTAINS_INVALID_DOMAIN_NAME = 9,
                            DYNAMIC_SEARCH_ADS_SETTING_CONTAINS_SUBDOMAIN_NAME = 10,
                            DYNAMIC_SEARCH_ADS_SETTING_CONTAINS_INVALID_LANGUAGE_CODE = 11,
                            TARGET_ALL_IS_NOT_ALLOWED_FOR_PLACEMENT_IN_SEARCH_CAMPAIGN = 12,
                            SETTING_VALUE_NOT_COMPATIBLE_WITH_CAMPAIGN = 20,
                            BID_ONLY_IS_NOT_ALLOWED_TO_BE_MODIFIED_WITH_CUSTOMER_MATCH_TARGETING = 21
                        }
                    }

                    /** Properties of a ShareablePreviewErrorEnum. */
                    interface IShareablePreviewErrorEnum {
                    }

                    /** Represents a ShareablePreviewErrorEnum. */
                    class ShareablePreviewErrorEnum implements IShareablePreviewErrorEnum {

                        /**
                         * Constructs a new ShareablePreviewErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IShareablePreviewErrorEnum);

                        /**
                         * Creates a new ShareablePreviewErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShareablePreviewErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IShareablePreviewErrorEnum): google.ads.googleads.v23.errors.ShareablePreviewErrorEnum;

                        /**
                         * Encodes the specified ShareablePreviewErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ShareablePreviewErrorEnum.verify|verify} messages.
                         * @param message ShareablePreviewErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IShareablePreviewErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShareablePreviewErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ShareablePreviewErrorEnum.verify|verify} messages.
                         * @param message ShareablePreviewErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IShareablePreviewErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShareablePreviewErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShareablePreviewErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ShareablePreviewErrorEnum;

                        /**
                         * Decodes a ShareablePreviewErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShareablePreviewErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ShareablePreviewErrorEnum;

                        /**
                         * Verifies a ShareablePreviewErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShareablePreviewErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShareablePreviewErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ShareablePreviewErrorEnum;

                        /**
                         * Creates a plain object from a ShareablePreviewErrorEnum message. Also converts values to other types if specified.
                         * @param message ShareablePreviewErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ShareablePreviewErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShareablePreviewErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShareablePreviewErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ShareablePreviewErrorEnum {

                        /** ShareablePreviewError enum. */
                        enum ShareablePreviewError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_MANY_ASSET_GROUPS_IN_REQUEST = 2,
                            ASSET_GROUP_DOES_NOT_EXIST_UNDER_THIS_CUSTOMER = 3
                        }
                    }

                    /** Properties of a SharedCriterionErrorEnum. */
                    interface ISharedCriterionErrorEnum {
                    }

                    /** Represents a SharedCriterionErrorEnum. */
                    class SharedCriterionErrorEnum implements ISharedCriterionErrorEnum {

                        /**
                         * Constructs a new SharedCriterionErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ISharedCriterionErrorEnum);

                        /**
                         * Creates a new SharedCriterionErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedCriterionErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ISharedCriterionErrorEnum): google.ads.googleads.v23.errors.SharedCriterionErrorEnum;

                        /**
                         * Encodes the specified SharedCriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.SharedCriterionErrorEnum.verify|verify} messages.
                         * @param message SharedCriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ISharedCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedCriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.SharedCriterionErrorEnum.verify|verify} messages.
                         * @param message SharedCriterionErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ISharedCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedCriterionErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedCriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.SharedCriterionErrorEnum;

                        /**
                         * Decodes a SharedCriterionErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedCriterionErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.SharedCriterionErrorEnum;

                        /**
                         * Verifies a SharedCriterionErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedCriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedCriterionErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.SharedCriterionErrorEnum;

                        /**
                         * Creates a plain object from a SharedCriterionErrorEnum message. Also converts values to other types if specified.
                         * @param message SharedCriterionErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.SharedCriterionErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedCriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedCriterionErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SharedCriterionErrorEnum {

                        /** SharedCriterionError enum. */
                        enum SharedCriterionError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CRITERION_TYPE_NOT_ALLOWED_FOR_SHARED_SET_TYPE = 2
                        }
                    }

                    /** Properties of a SharedSetErrorEnum. */
                    interface ISharedSetErrorEnum {
                    }

                    /** Represents a SharedSetErrorEnum. */
                    class SharedSetErrorEnum implements ISharedSetErrorEnum {

                        /**
                         * Constructs a new SharedSetErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ISharedSetErrorEnum);

                        /**
                         * Creates a new SharedSetErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedSetErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ISharedSetErrorEnum): google.ads.googleads.v23.errors.SharedSetErrorEnum;

                        /**
                         * Encodes the specified SharedSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.SharedSetErrorEnum.verify|verify} messages.
                         * @param message SharedSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ISharedSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.SharedSetErrorEnum.verify|verify} messages.
                         * @param message SharedSetErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ISharedSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.SharedSetErrorEnum;

                        /**
                         * Decodes a SharedSetErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedSetErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.SharedSetErrorEnum;

                        /**
                         * Verifies a SharedSetErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedSetErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.SharedSetErrorEnum;

                        /**
                         * Creates a plain object from a SharedSetErrorEnum message. Also converts values to other types if specified.
                         * @param message SharedSetErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.SharedSetErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedSetErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SharedSetErrorEnum {

                        /** SharedSetError enum. */
                        enum SharedSetError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOMER_CANNOT_CREATE_SHARED_SET_OF_THIS_TYPE = 2,
                            DUPLICATE_NAME = 3,
                            SHARED_SET_REMOVED = 4,
                            SHARED_SET_IN_USE = 5
                        }
                    }

                    /** Properties of a ShoppingProductErrorEnum. */
                    interface IShoppingProductErrorEnum {
                    }

                    /** Represents a ShoppingProductErrorEnum. */
                    class ShoppingProductErrorEnum implements IShoppingProductErrorEnum {

                        /**
                         * Constructs a new ShoppingProductErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IShoppingProductErrorEnum);

                        /**
                         * Creates a new ShoppingProductErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingProductErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IShoppingProductErrorEnum): google.ads.googleads.v23.errors.ShoppingProductErrorEnum;

                        /**
                         * Encodes the specified ShoppingProductErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ShoppingProductErrorEnum.verify|verify} messages.
                         * @param message ShoppingProductErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IShoppingProductErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingProductErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ShoppingProductErrorEnum.verify|verify} messages.
                         * @param message ShoppingProductErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IShoppingProductErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingProductErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShoppingProductErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ShoppingProductErrorEnum;

                        /**
                         * Decodes a ShoppingProductErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShoppingProductErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ShoppingProductErrorEnum;

                        /**
                         * Verifies a ShoppingProductErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShoppingProductErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShoppingProductErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ShoppingProductErrorEnum;

                        /**
                         * Creates a plain object from a ShoppingProductErrorEnum message. Also converts values to other types if specified.
                         * @param message ShoppingProductErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ShoppingProductErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShoppingProductErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShoppingProductErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ShoppingProductErrorEnum {

                        /** ShoppingProductError enum. */
                        enum ShoppingProductError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MISSING_CAMPAIGN_FILTER = 2,
                            MISSING_AD_GROUP_FILTER = 3,
                            UNSUPPORTED_DATE_SEGMENTATION = 4
                        }
                    }

                    /** Properties of a SizeLimitErrorEnum. */
                    interface ISizeLimitErrorEnum {
                    }

                    /** Represents a SizeLimitErrorEnum. */
                    class SizeLimitErrorEnum implements ISizeLimitErrorEnum {

                        /**
                         * Constructs a new SizeLimitErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ISizeLimitErrorEnum);

                        /**
                         * Creates a new SizeLimitErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SizeLimitErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ISizeLimitErrorEnum): google.ads.googleads.v23.errors.SizeLimitErrorEnum;

                        /**
                         * Encodes the specified SizeLimitErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.SizeLimitErrorEnum.verify|verify} messages.
                         * @param message SizeLimitErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ISizeLimitErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SizeLimitErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.SizeLimitErrorEnum.verify|verify} messages.
                         * @param message SizeLimitErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ISizeLimitErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SizeLimitErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SizeLimitErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.SizeLimitErrorEnum;

                        /**
                         * Decodes a SizeLimitErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SizeLimitErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.SizeLimitErrorEnum;

                        /**
                         * Verifies a SizeLimitErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SizeLimitErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SizeLimitErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.SizeLimitErrorEnum;

                        /**
                         * Creates a plain object from a SizeLimitErrorEnum message. Also converts values to other types if specified.
                         * @param message SizeLimitErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.SizeLimitErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SizeLimitErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SizeLimitErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SizeLimitErrorEnum {

                        /** SizeLimitError enum. */
                        enum SizeLimitError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REQUEST_SIZE_LIMIT_EXCEEDED = 2,
                            RESPONSE_SIZE_LIMIT_EXCEEDED = 3
                        }
                    }

                    /** Properties of a SmartCampaignErrorEnum. */
                    interface ISmartCampaignErrorEnum {
                    }

                    /** Represents a SmartCampaignErrorEnum. */
                    class SmartCampaignErrorEnum implements ISmartCampaignErrorEnum {

                        /**
                         * Constructs a new SmartCampaignErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ISmartCampaignErrorEnum);

                        /**
                         * Creates a new SmartCampaignErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ISmartCampaignErrorEnum): google.ads.googleads.v23.errors.SmartCampaignErrorEnum;

                        /**
                         * Encodes the specified SmartCampaignErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.SmartCampaignErrorEnum.verify|verify} messages.
                         * @param message SmartCampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ISmartCampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.SmartCampaignErrorEnum.verify|verify} messages.
                         * @param message SmartCampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ISmartCampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.SmartCampaignErrorEnum;

                        /**
                         * Decodes a SmartCampaignErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.SmartCampaignErrorEnum;

                        /**
                         * Verifies a SmartCampaignErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.SmartCampaignErrorEnum;

                        /**
                         * Creates a plain object from a SmartCampaignErrorEnum message. Also converts values to other types if specified.
                         * @param message SmartCampaignErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.SmartCampaignErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SmartCampaignErrorEnum {

                        /** SmartCampaignError enum. */
                        enum SmartCampaignError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_BUSINESS_LOCATION_ID = 2,
                            INVALID_CAMPAIGN = 3,
                            BUSINESS_NAME_OR_BUSINESS_LOCATION_ID_MISSING = 4,
                            REQUIRED_SUGGESTION_FIELD_MISSING = 5,
                            GEO_TARGETS_REQUIRED = 6,
                            CANNOT_DETERMINE_SUGGESTION_LOCALE = 7,
                            FINAL_URL_NOT_CRAWLABLE = 8
                        }
                    }

                    /** Properties of a StringFormatErrorEnum. */
                    interface IStringFormatErrorEnum {
                    }

                    /** Represents a StringFormatErrorEnum. */
                    class StringFormatErrorEnum implements IStringFormatErrorEnum {

                        /**
                         * Constructs a new StringFormatErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IStringFormatErrorEnum);

                        /**
                         * Creates a new StringFormatErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StringFormatErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IStringFormatErrorEnum): google.ads.googleads.v23.errors.StringFormatErrorEnum;

                        /**
                         * Encodes the specified StringFormatErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.StringFormatErrorEnum.verify|verify} messages.
                         * @param message StringFormatErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IStringFormatErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StringFormatErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.StringFormatErrorEnum.verify|verify} messages.
                         * @param message StringFormatErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IStringFormatErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StringFormatErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns StringFormatErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.StringFormatErrorEnum;

                        /**
                         * Decodes a StringFormatErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StringFormatErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.StringFormatErrorEnum;

                        /**
                         * Verifies a StringFormatErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StringFormatErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns StringFormatErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.StringFormatErrorEnum;

                        /**
                         * Creates a plain object from a StringFormatErrorEnum message. Also converts values to other types if specified.
                         * @param message StringFormatErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.StringFormatErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StringFormatErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for StringFormatErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace StringFormatErrorEnum {

                        /** StringFormatError enum. */
                        enum StringFormatError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ILLEGAL_CHARS = 2,
                            INVALID_FORMAT = 3
                        }
                    }

                    /** Properties of a StringLengthErrorEnum. */
                    interface IStringLengthErrorEnum {
                    }

                    /** Represents a StringLengthErrorEnum. */
                    class StringLengthErrorEnum implements IStringLengthErrorEnum {

                        /**
                         * Constructs a new StringLengthErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IStringLengthErrorEnum);

                        /**
                         * Creates a new StringLengthErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StringLengthErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IStringLengthErrorEnum): google.ads.googleads.v23.errors.StringLengthErrorEnum;

                        /**
                         * Encodes the specified StringLengthErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.StringLengthErrorEnum.verify|verify} messages.
                         * @param message StringLengthErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IStringLengthErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StringLengthErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.StringLengthErrorEnum.verify|verify} messages.
                         * @param message StringLengthErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IStringLengthErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StringLengthErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns StringLengthErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.StringLengthErrorEnum;

                        /**
                         * Decodes a StringLengthErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StringLengthErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.StringLengthErrorEnum;

                        /**
                         * Verifies a StringLengthErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StringLengthErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns StringLengthErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.StringLengthErrorEnum;

                        /**
                         * Creates a plain object from a StringLengthErrorEnum message. Also converts values to other types if specified.
                         * @param message StringLengthErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.StringLengthErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StringLengthErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for StringLengthErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace StringLengthErrorEnum {

                        /** StringLengthError enum. */
                        enum StringLengthError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EMPTY = 4,
                            TOO_SHORT = 2,
                            TOO_LONG = 3
                        }
                    }

                    /** Properties of a ThirdPartyAppAnalyticsLinkErrorEnum. */
                    interface IThirdPartyAppAnalyticsLinkErrorEnum {
                    }

                    /** Represents a ThirdPartyAppAnalyticsLinkErrorEnum. */
                    class ThirdPartyAppAnalyticsLinkErrorEnum implements IThirdPartyAppAnalyticsLinkErrorEnum {

                        /**
                         * Constructs a new ThirdPartyAppAnalyticsLinkErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IThirdPartyAppAnalyticsLinkErrorEnum);

                        /**
                         * Creates a new ThirdPartyAppAnalyticsLinkErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyAppAnalyticsLinkErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IThirdPartyAppAnalyticsLinkErrorEnum): google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum.verify|verify} messages.
                         * @param message ThirdPartyAppAnalyticsLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IThirdPartyAppAnalyticsLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum.verify|verify} messages.
                         * @param message ThirdPartyAppAnalyticsLinkErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IThirdPartyAppAnalyticsLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLinkErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyAppAnalyticsLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLinkErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyAppAnalyticsLinkErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum;

                        /**
                         * Verifies a ThirdPartyAppAnalyticsLinkErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyAppAnalyticsLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyAppAnalyticsLinkErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum;

                        /**
                         * Creates a plain object from a ThirdPartyAppAnalyticsLinkErrorEnum message. Also converts values to other types if specified.
                         * @param message ThirdPartyAppAnalyticsLinkErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.ThirdPartyAppAnalyticsLinkErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyAppAnalyticsLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyAppAnalyticsLinkErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ThirdPartyAppAnalyticsLinkErrorEnum {

                        /** ThirdPartyAppAnalyticsLinkError enum. */
                        enum ThirdPartyAppAnalyticsLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_ANALYTICS_PROVIDER_ID = 2,
                            INVALID_MOBILE_APP_ID = 3,
                            MOBILE_APP_IS_NOT_ENABLED = 4,
                            CANNOT_REGENERATE_SHAREABLE_LINK_ID_FOR_REMOVED_LINK = 5
                        }
                    }

                    /** Properties of a TimeZoneErrorEnum. */
                    interface ITimeZoneErrorEnum {
                    }

                    /** Represents a TimeZoneErrorEnum. */
                    class TimeZoneErrorEnum implements ITimeZoneErrorEnum {

                        /**
                         * Constructs a new TimeZoneErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.ITimeZoneErrorEnum);

                        /**
                         * Creates a new TimeZoneErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TimeZoneErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.ITimeZoneErrorEnum): google.ads.googleads.v23.errors.TimeZoneErrorEnum;

                        /**
                         * Encodes the specified TimeZoneErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.TimeZoneErrorEnum.verify|verify} messages.
                         * @param message TimeZoneErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.ITimeZoneErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TimeZoneErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.TimeZoneErrorEnum.verify|verify} messages.
                         * @param message TimeZoneErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.ITimeZoneErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TimeZoneErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TimeZoneErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.TimeZoneErrorEnum;

                        /**
                         * Decodes a TimeZoneErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TimeZoneErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.TimeZoneErrorEnum;

                        /**
                         * Verifies a TimeZoneErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TimeZoneErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TimeZoneErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.TimeZoneErrorEnum;

                        /**
                         * Creates a plain object from a TimeZoneErrorEnum message. Also converts values to other types if specified.
                         * @param message TimeZoneErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.TimeZoneErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TimeZoneErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TimeZoneErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TimeZoneErrorEnum {

                        /** TimeZoneError enum. */
                        enum TimeZoneError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_TIME_ZONE = 5
                        }
                    }

                    /** Properties of an UrlFieldErrorEnum. */
                    interface IUrlFieldErrorEnum {
                    }

                    /** Represents an UrlFieldErrorEnum. */
                    class UrlFieldErrorEnum implements IUrlFieldErrorEnum {

                        /**
                         * Constructs a new UrlFieldErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IUrlFieldErrorEnum);

                        /**
                         * Creates a new UrlFieldErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UrlFieldErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IUrlFieldErrorEnum): google.ads.googleads.v23.errors.UrlFieldErrorEnum;

                        /**
                         * Encodes the specified UrlFieldErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.UrlFieldErrorEnum.verify|verify} messages.
                         * @param message UrlFieldErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IUrlFieldErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UrlFieldErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.UrlFieldErrorEnum.verify|verify} messages.
                         * @param message UrlFieldErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IUrlFieldErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UrlFieldErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UrlFieldErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.UrlFieldErrorEnum;

                        /**
                         * Decodes an UrlFieldErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UrlFieldErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.UrlFieldErrorEnum;

                        /**
                         * Verifies an UrlFieldErrorEnum message.
                         * @param message Plain 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 UrlFieldErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UrlFieldErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.UrlFieldErrorEnum;

                        /**
                         * Creates a plain object from an UrlFieldErrorEnum message. Also converts values to other types if specified.
                         * @param message UrlFieldErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.UrlFieldErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UrlFieldErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UrlFieldErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UrlFieldErrorEnum {

                        /** UrlFieldError enum. */
                        enum UrlFieldError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_TRACKING_URL_TEMPLATE = 2,
                            INVALID_TAG_IN_TRACKING_URL_TEMPLATE = 3,
                            MISSING_TRACKING_URL_TEMPLATE_TAG = 4,
                            MISSING_PROTOCOL_IN_TRACKING_URL_TEMPLATE = 5,
                            INVALID_PROTOCOL_IN_TRACKING_URL_TEMPLATE = 6,
                            MALFORMED_TRACKING_URL_TEMPLATE = 7,
                            MISSING_HOST_IN_TRACKING_URL_TEMPLATE = 8,
                            INVALID_TLD_IN_TRACKING_URL_TEMPLATE = 9,
                            REDUNDANT_NESTED_TRACKING_URL_TEMPLATE_TAG = 10,
                            INVALID_FINAL_URL = 11,
                            INVALID_TAG_IN_FINAL_URL = 12,
                            REDUNDANT_NESTED_FINAL_URL_TAG = 13,
                            MISSING_PROTOCOL_IN_FINAL_URL = 14,
                            INVALID_PROTOCOL_IN_FINAL_URL = 15,
                            MALFORMED_FINAL_URL = 16,
                            MISSING_HOST_IN_FINAL_URL = 17,
                            INVALID_TLD_IN_FINAL_URL = 18,
                            INVALID_FINAL_MOBILE_URL = 19,
                            INVALID_TAG_IN_FINAL_MOBILE_URL = 20,
                            REDUNDANT_NESTED_FINAL_MOBILE_URL_TAG = 21,
                            MISSING_PROTOCOL_IN_FINAL_MOBILE_URL = 22,
                            INVALID_PROTOCOL_IN_FINAL_MOBILE_URL = 23,
                            MALFORMED_FINAL_MOBILE_URL = 24,
                            MISSING_HOST_IN_FINAL_MOBILE_URL = 25,
                            INVALID_TLD_IN_FINAL_MOBILE_URL = 26,
                            INVALID_FINAL_APP_URL = 27,
                            INVALID_TAG_IN_FINAL_APP_URL = 28,
                            REDUNDANT_NESTED_FINAL_APP_URL_TAG = 29,
                            MULTIPLE_APP_URLS_FOR_OSTYPE = 30,
                            INVALID_OSTYPE = 31,
                            INVALID_PROTOCOL_FOR_APP_URL = 32,
                            INVALID_PACKAGE_ID_FOR_APP_URL = 33,
                            URL_CUSTOM_PARAMETERS_COUNT_EXCEEDS_LIMIT = 34,
                            INVALID_CHARACTERS_IN_URL_CUSTOM_PARAMETER_KEY = 39,
                            INVALID_CHARACTERS_IN_URL_CUSTOM_PARAMETER_VALUE = 40,
                            INVALID_TAG_IN_URL_CUSTOM_PARAMETER_VALUE = 41,
                            REDUNDANT_NESTED_URL_CUSTOM_PARAMETER_TAG = 42,
                            MISSING_PROTOCOL = 43,
                            INVALID_PROTOCOL = 52,
                            INVALID_URL = 44,
                            DESTINATION_URL_DEPRECATED = 45,
                            INVALID_TAG_IN_URL = 46,
                            MISSING_URL_TAG = 47,
                            DUPLICATE_URL_ID = 48,
                            INVALID_URL_ID = 49,
                            FINAL_URL_SUFFIX_MALFORMED = 50,
                            INVALID_TAG_IN_FINAL_URL_SUFFIX = 51,
                            INVALID_TOP_LEVEL_DOMAIN = 53,
                            MALFORMED_TOP_LEVEL_DOMAIN = 54,
                            MALFORMED_URL = 55,
                            MISSING_HOST = 56,
                            NULL_CUSTOM_PARAMETER_VALUE = 57,
                            VALUE_TRACK_PARAMETER_NOT_SUPPORTED = 58,
                            UNSUPPORTED_APP_STORE = 59
                        }
                    }

                    /** Properties of a UserDataErrorEnum. */
                    interface IUserDataErrorEnum {
                    }

                    /** Represents a UserDataErrorEnum. */
                    class UserDataErrorEnum implements IUserDataErrorEnum {

                        /**
                         * Constructs a new UserDataErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IUserDataErrorEnum);

                        /**
                         * Creates a new UserDataErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserDataErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IUserDataErrorEnum): google.ads.googleads.v23.errors.UserDataErrorEnum;

                        /**
                         * Encodes the specified UserDataErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.UserDataErrorEnum.verify|verify} messages.
                         * @param message UserDataErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IUserDataErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserDataErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.UserDataErrorEnum.verify|verify} messages.
                         * @param message UserDataErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IUserDataErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserDataErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserDataErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.UserDataErrorEnum;

                        /**
                         * Decodes a UserDataErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserDataErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.UserDataErrorEnum;

                        /**
                         * Verifies a UserDataErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserDataErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserDataErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.UserDataErrorEnum;

                        /**
                         * Creates a plain object from a UserDataErrorEnum message. Also converts values to other types if specified.
                         * @param message UserDataErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.UserDataErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserDataErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserDataErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserDataErrorEnum {

                        /** UserDataError enum. */
                        enum UserDataError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            OPERATIONS_FOR_CUSTOMER_MATCH_NOT_ALLOWED = 2,
                            TOO_MANY_USER_IDENTIFIERS = 3,
                            USER_LIST_NOT_APPLICABLE = 4
                        }
                    }

                    /** Properties of a UserListCustomerTypeErrorEnum. */
                    interface IUserListCustomerTypeErrorEnum {
                    }

                    /** Represents a UserListCustomerTypeErrorEnum. */
                    class UserListCustomerTypeErrorEnum implements IUserListCustomerTypeErrorEnum {

                        /**
                         * Constructs a new UserListCustomerTypeErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IUserListCustomerTypeErrorEnum);

                        /**
                         * Creates a new UserListCustomerTypeErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListCustomerTypeErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IUserListCustomerTypeErrorEnum): google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum;

                        /**
                         * Encodes the specified UserListCustomerTypeErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum.verify|verify} messages.
                         * @param message UserListCustomerTypeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IUserListCustomerTypeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListCustomerTypeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum.verify|verify} messages.
                         * @param message UserListCustomerTypeErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IUserListCustomerTypeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListCustomerTypeErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListCustomerTypeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum;

                        /**
                         * Decodes a UserListCustomerTypeErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListCustomerTypeErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum;

                        /**
                         * Verifies a UserListCustomerTypeErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListCustomerTypeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListCustomerTypeErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum;

                        /**
                         * Creates a plain object from a UserListCustomerTypeErrorEnum message. Also converts values to other types if specified.
                         * @param message UserListCustomerTypeErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.UserListCustomerTypeErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListCustomerTypeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListCustomerTypeErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListCustomerTypeErrorEnum {

                        /** UserListCustomerTypeError enum. */
                        enum UserListCustomerTypeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONFLICTING_CUSTOMER_TYPES = 2,
                            NO_ACCESS_TO_USER_LIST = 3,
                            USERLIST_NOT_ELIGIBLE = 4,
                            CONVERSION_TRACKING_NOT_ENABLED_OR_NOT_MCC_MANAGER_ACCOUNT = 5,
                            TOO_MANY_USER_LISTS_FOR_THE_CUSTOMER_TYPE = 6
                        }
                    }

                    /** Properties of a UserListErrorEnum. */
                    interface IUserListErrorEnum {
                    }

                    /** Represents a UserListErrorEnum. */
                    class UserListErrorEnum implements IUserListErrorEnum {

                        /**
                         * Constructs a new UserListErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IUserListErrorEnum);

                        /**
                         * Creates a new UserListErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IUserListErrorEnum): google.ads.googleads.v23.errors.UserListErrorEnum;

                        /**
                         * Encodes the specified UserListErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.UserListErrorEnum.verify|verify} messages.
                         * @param message UserListErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IUserListErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.UserListErrorEnum.verify|verify} messages.
                         * @param message UserListErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IUserListErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.UserListErrorEnum;

                        /**
                         * Decodes a UserListErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.UserListErrorEnum;

                        /**
                         * Verifies a UserListErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.UserListErrorEnum;

                        /**
                         * Creates a plain object from a UserListErrorEnum message. Also converts values to other types if specified.
                         * @param message UserListErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.UserListErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserListErrorEnum {

                        /** UserListError enum. */
                        enum UserListError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXTERNAL_REMARKETING_USER_LIST_MUTATE_NOT_SUPPORTED = 2,
                            CONCRETE_TYPE_REQUIRED = 3,
                            CONVERSION_TYPE_ID_REQUIRED = 4,
                            DUPLICATE_CONVERSION_TYPES = 5,
                            INVALID_CONVERSION_TYPE = 6,
                            INVALID_DESCRIPTION = 7,
                            INVALID_NAME = 8,
                            INVALID_TYPE = 9,
                            CAN_NOT_ADD_LOGICAL_LIST_AS_LOGICAL_LIST_OPERAND = 10,
                            INVALID_USER_LIST_LOGICAL_RULE_OPERAND = 11,
                            NAME_ALREADY_USED = 12,
                            NEW_CONVERSION_TYPE_NAME_REQUIRED = 13,
                            CONVERSION_TYPE_NAME_ALREADY_USED = 14,
                            OWNERSHIP_REQUIRED_FOR_SET = 15,
                            USER_LIST_MUTATE_NOT_SUPPORTED = 16,
                            INVALID_RULE = 17,
                            INVALID_DATE_RANGE = 27,
                            CAN_NOT_MUTATE_SENSITIVE_USERLIST = 28,
                            MAX_NUM_RULEBASED_USERLISTS = 29,
                            CANNOT_MODIFY_BILLABLE_RECORD_COUNT = 30,
                            APP_ID_NOT_SET = 31,
                            USERLIST_NAME_IS_RESERVED_FOR_SYSTEM_LIST = 32,
                            ADVERTISER_NOT_ON_ALLOWLIST_FOR_USING_UPLOADED_DATA = 37,
                            RULE_TYPE_IS_NOT_SUPPORTED = 34,
                            CAN_NOT_ADD_A_SIMILAR_USERLIST_AS_LOGICAL_LIST_OPERAND = 35,
                            CAN_NOT_MIX_CRM_BASED_IN_LOGICAL_LIST_WITH_OTHER_LISTS = 36,
                            APP_ID_NOT_ALLOWED = 39,
                            CANNOT_MUTATE_SYSTEM_LIST = 40,
                            MOBILE_APP_IS_SENSITIVE = 41,
                            SEED_LIST_DOES_NOT_EXIST = 42,
                            INVALID_SEED_LIST_ACCESS_REASON = 43,
                            INVALID_SEED_LIST_TYPE = 44,
                            INVALID_COUNTRY_CODES = 45,
                            PARTNER_AUDIENCE_SOURCE_NOT_SUPPORTED_FOR_USER_LIST_TYPE = 47,
                            COMMERCE_PARTNER_NOT_ALLOWED = 48,
                            PARTNER_AUDIENCE_INFO_NOT_SUPPORTED_FOR_USER_LIST_TYPE = 49,
                            PARTNER_MANAGER_ACCOUNT_DISALLOWED = 50,
                            PARTNER_NOT_ALLOWLISTED_FOR_THIRD_PARTY_PARTNER_DATA = 51,
                            ADVERTISER_TOS_NOT_ACCEPTED = 52,
                            ADVERTISER_PARTNER_LINK_MISSING = 53,
                            ADVERTISER_NOT_ALLOWLISTED_FOR_THIRD_PARTY_PARTNER_DATA = 54,
                            ACCOUNT_SETTING_TYPE_NOT_ALLOWED = 55
                        }
                    }

                    /** Properties of a VideoCampaignErrorEnum. */
                    interface IVideoCampaignErrorEnum {
                    }

                    /** Represents a VideoCampaignErrorEnum. */
                    class VideoCampaignErrorEnum implements IVideoCampaignErrorEnum {

                        /**
                         * Constructs a new VideoCampaignErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IVideoCampaignErrorEnum);

                        /**
                         * Creates a new VideoCampaignErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoCampaignErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IVideoCampaignErrorEnum): google.ads.googleads.v23.errors.VideoCampaignErrorEnum;

                        /**
                         * Encodes the specified VideoCampaignErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.VideoCampaignErrorEnum.verify|verify} messages.
                         * @param message VideoCampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IVideoCampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoCampaignErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.VideoCampaignErrorEnum.verify|verify} messages.
                         * @param message VideoCampaignErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IVideoCampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoCampaignErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VideoCampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.VideoCampaignErrorEnum;

                        /**
                         * Decodes a VideoCampaignErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VideoCampaignErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.VideoCampaignErrorEnum;

                        /**
                         * Verifies a VideoCampaignErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VideoCampaignErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VideoCampaignErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.VideoCampaignErrorEnum;

                        /**
                         * Creates a plain object from a VideoCampaignErrorEnum message. Also converts values to other types if specified.
                         * @param message VideoCampaignErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.VideoCampaignErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VideoCampaignErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VideoCampaignErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace VideoCampaignErrorEnum {

                        /** VideoCampaignError enum. */
                        enum VideoCampaignError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MUTATE_REQUIRES_RESERVATION = 2
                        }
                    }

                    /** Properties of a YoutubeVideoRegistrationErrorEnum. */
                    interface IYoutubeVideoRegistrationErrorEnum {
                    }

                    /** Represents a YoutubeVideoRegistrationErrorEnum. */
                    class YoutubeVideoRegistrationErrorEnum implements IYoutubeVideoRegistrationErrorEnum {

                        /**
                         * Constructs a new YoutubeVideoRegistrationErrorEnum.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.errors.IYoutubeVideoRegistrationErrorEnum);

                        /**
                         * Creates a new YoutubeVideoRegistrationErrorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YoutubeVideoRegistrationErrorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v23.errors.IYoutubeVideoRegistrationErrorEnum): google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum;

                        /**
                         * Encodes the specified YoutubeVideoRegistrationErrorEnum message. Does not implicitly {@link google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum.verify|verify} messages.
                         * @param message YoutubeVideoRegistrationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.errors.IYoutubeVideoRegistrationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YoutubeVideoRegistrationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum.verify|verify} messages.
                         * @param message YoutubeVideoRegistrationErrorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.errors.IYoutubeVideoRegistrationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YoutubeVideoRegistrationErrorEnum message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YoutubeVideoRegistrationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum;

                        /**
                         * Decodes a YoutubeVideoRegistrationErrorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YoutubeVideoRegistrationErrorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum;

                        /**
                         * Verifies a YoutubeVideoRegistrationErrorEnum message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YoutubeVideoRegistrationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YoutubeVideoRegistrationErrorEnum
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum;

                        /**
                         * Creates a plain object from a YoutubeVideoRegistrationErrorEnum message. Also converts values to other types if specified.
                         * @param message YoutubeVideoRegistrationErrorEnum
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.errors.YoutubeVideoRegistrationErrorEnum, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YoutubeVideoRegistrationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YoutubeVideoRegistrationErrorEnum
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace YoutubeVideoRegistrationErrorEnum {

                        /** YoutubeVideoRegistrationError enum. */
                        enum YoutubeVideoRegistrationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VIDEO_NOT_FOUND = 2,
                            VIDEO_NOT_ACCESSIBLE = 3,
                            VIDEO_NOT_ELIGIBLE = 4
                        }
                    }
                }

                /** Namespace resources. */
                namespace resources {

                    /** Properties of an AccessibleBiddingStrategy. */
                    interface IAccessibleBiddingStrategy {

                        /** AccessibleBiddingStrategy resource_name */
                        resource_name?: (string|null);

                        /** AccessibleBiddingStrategy id */
                        id?: (number|null);

                        /** AccessibleBiddingStrategy name */
                        name?: (string|null);

                        /** AccessibleBiddingStrategy type */
                        type?: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|null);

                        /** AccessibleBiddingStrategy owner_customer_id */
                        owner_customer_id?: (number|null);

                        /** AccessibleBiddingStrategy owner_descriptive_name */
                        owner_descriptive_name?: (string|null);

                        /** AccessibleBiddingStrategy maximize_conversion_value */
                        maximize_conversion_value?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversionValue|null);

                        /** AccessibleBiddingStrategy maximize_conversions */
                        maximize_conversions?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversions|null);

                        /** AccessibleBiddingStrategy target_cpa */
                        target_cpa?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetCpa|null);

                        /** AccessibleBiddingStrategy target_impression_share */
                        target_impression_share?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetImpressionShare|null);

                        /** AccessibleBiddingStrategy target_roas */
                        target_roas?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetRoas|null);

                        /** AccessibleBiddingStrategy target_spend */
                        target_spend?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetSpend|null);
                    }

                    /** Represents an AccessibleBiddingStrategy. */
                    class AccessibleBiddingStrategy implements IAccessibleBiddingStrategy {

                        /**
                         * Constructs a new AccessibleBiddingStrategy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAccessibleBiddingStrategy);

                        /** AccessibleBiddingStrategy resource_name. */
                        public resource_name: string;

                        /** AccessibleBiddingStrategy id. */
                        public id: number;

                        /** AccessibleBiddingStrategy name. */
                        public name: string;

                        /** AccessibleBiddingStrategy type. */
                        public type: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType);

                        /** AccessibleBiddingStrategy owner_customer_id. */
                        public owner_customer_id: number;

                        /** AccessibleBiddingStrategy owner_descriptive_name. */
                        public owner_descriptive_name: string;

                        /** AccessibleBiddingStrategy maximize_conversion_value. */
                        public maximize_conversion_value?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversionValue|null);

                        /** AccessibleBiddingStrategy maximize_conversions. */
                        public maximize_conversions?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversions|null);

                        /** AccessibleBiddingStrategy target_cpa. */
                        public target_cpa?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetCpa|null);

                        /** AccessibleBiddingStrategy target_impression_share. */
                        public target_impression_share?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetImpressionShare|null);

                        /** AccessibleBiddingStrategy target_roas. */
                        public target_roas?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetRoas|null);

                        /** AccessibleBiddingStrategy target_spend. */
                        public target_spend?: (google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetSpend|null);

                        /** AccessibleBiddingStrategy scheme. */
                        public scheme?: ("maximize_conversion_value"|"maximize_conversions"|"target_cpa"|"target_impression_share"|"target_roas"|"target_spend");

                        /**
                         * Creates a new AccessibleBiddingStrategy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccessibleBiddingStrategy instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAccessibleBiddingStrategy): google.ads.googleads.v23.resources.AccessibleBiddingStrategy;

                        /**
                         * Encodes the specified AccessibleBiddingStrategy message. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.verify|verify} messages.
                         * @param message AccessibleBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAccessibleBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessibleBiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.verify|verify} messages.
                         * @param message AccessibleBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAccessibleBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessibleBiddingStrategy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccessibleBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccessibleBiddingStrategy;

                        /**
                         * Decodes an AccessibleBiddingStrategy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccessibleBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccessibleBiddingStrategy;

                        /**
                         * Verifies an AccessibleBiddingStrategy message.
                         * @param message Plain 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 AccessibleBiddingStrategy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccessibleBiddingStrategy
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccessibleBiddingStrategy;

                        /**
                         * Creates a plain object from an AccessibleBiddingStrategy message. Also converts values to other types if specified.
                         * @param message AccessibleBiddingStrategy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessibleBiddingStrategy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccessibleBiddingStrategy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccessibleBiddingStrategy {

                        /** Properties of a MaximizeConversionValue. */
                        interface IMaximizeConversionValue {

                            /** MaximizeConversionValue target_roas */
                            target_roas?: (number|null);
                        }

                        /** Represents a MaximizeConversionValue. */
                        class MaximizeConversionValue implements IMaximizeConversionValue {

                            /**
                             * Constructs a new MaximizeConversionValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversionValue);

                            /** MaximizeConversionValue target_roas. */
                            public target_roas: number;

                            /**
                             * Creates a new MaximizeConversionValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MaximizeConversionValue instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversionValue): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversionValue;

                            /**
                             * Encodes the specified MaximizeConversionValue message. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversionValue.verify|verify} messages.
                             * @param message MaximizeConversionValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversionValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeConversionValue message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversionValue.verify|verify} messages.
                             * @param message MaximizeConversionValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversionValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeConversionValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MaximizeConversionValue
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversionValue;

                            /**
                             * Decodes a MaximizeConversionValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MaximizeConversionValue
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversionValue;

                            /**
                             * Verifies a MaximizeConversionValue message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeConversionValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MaximizeConversionValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversionValue;

                            /**
                             * Creates a plain object from a MaximizeConversionValue message. Also converts values to other types if specified.
                             * @param message MaximizeConversionValue
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversionValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeConversionValue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MaximizeConversionValue
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MaximizeConversions. */
                        interface IMaximizeConversions {

                            /** MaximizeConversions target_cpa_micros */
                            target_cpa_micros?: (number|null);
                        }

                        /** Represents a MaximizeConversions. */
                        class MaximizeConversions implements IMaximizeConversions {

                            /**
                             * Constructs a new MaximizeConversions.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversions);

                            /** MaximizeConversions target_cpa_micros. */
                            public target_cpa_micros: number;

                            /**
                             * Creates a new MaximizeConversions instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MaximizeConversions instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversions): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversions;

                            /**
                             * Encodes the specified MaximizeConversions message. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversions.verify|verify} messages.
                             * @param message MaximizeConversions message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversions, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeConversions message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversions.verify|verify} messages.
                             * @param message MaximizeConversions message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.IMaximizeConversions, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeConversions message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MaximizeConversions
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversions;

                            /**
                             * Decodes a MaximizeConversions message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MaximizeConversions
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversions;

                            /**
                             * Verifies a MaximizeConversions message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeConversions message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MaximizeConversions
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversions;

                            /**
                             * Creates a plain object from a MaximizeConversions message. Also converts values to other types if specified.
                             * @param message MaximizeConversions
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.MaximizeConversions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeConversions to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MaximizeConversions
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetCpa. */
                        interface ITargetCpa {

                            /** TargetCpa target_cpa_micros */
                            target_cpa_micros?: (number|null);
                        }

                        /** Represents a TargetCpa. */
                        class TargetCpa implements ITargetCpa {

                            /**
                             * Constructs a new TargetCpa.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetCpa);

                            /** TargetCpa target_cpa_micros. */
                            public target_cpa_micros?: (number|null);

                            /**
                             * Creates a new TargetCpa instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetCpa instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetCpa): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetCpa;

                            /**
                             * Encodes the specified TargetCpa message. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetCpa.verify|verify} messages.
                             * @param message TargetCpa message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetCpa message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetCpa.verify|verify} messages.
                             * @param message TargetCpa message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetCpa message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetCpa
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetCpa;

                            /**
                             * Decodes a TargetCpa message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetCpa
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetCpa;

                            /**
                             * Verifies a TargetCpa message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetCpa message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetCpa
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetCpa;

                            /**
                             * Creates a plain object from a TargetCpa message. Also converts values to other types if specified.
                             * @param message TargetCpa
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetCpa, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetCpa to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetCpa
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetImpressionShare. */
                        interface ITargetImpressionShare {

                            /** TargetImpressionShare location */
                            location?: (google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|null);

                            /** TargetImpressionShare location_fraction_micros */
                            location_fraction_micros?: (number|null);

                            /** TargetImpressionShare cpc_bid_ceiling_micros */
                            cpc_bid_ceiling_micros?: (number|null);
                        }

                        /** Represents a TargetImpressionShare. */
                        class TargetImpressionShare implements ITargetImpressionShare {

                            /**
                             * Constructs a new TargetImpressionShare.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetImpressionShare);

                            /** TargetImpressionShare location. */
                            public location: (google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation);

                            /** TargetImpressionShare location_fraction_micros. */
                            public location_fraction_micros?: (number|null);

                            /** TargetImpressionShare cpc_bid_ceiling_micros. */
                            public cpc_bid_ceiling_micros?: (number|null);

                            /**
                             * Creates a new TargetImpressionShare instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetImpressionShare instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetImpressionShare): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetImpressionShare;

                            /**
                             * Encodes the specified TargetImpressionShare message. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetImpressionShare.verify|verify} messages.
                             * @param message TargetImpressionShare message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetImpressionShare, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetImpressionShare message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetImpressionShare.verify|verify} messages.
                             * @param message TargetImpressionShare message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetImpressionShare, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetImpressionShare message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetImpressionShare
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetImpressionShare;

                            /**
                             * Decodes a TargetImpressionShare message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetImpressionShare
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetImpressionShare;

                            /**
                             * Verifies a TargetImpressionShare message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetImpressionShare message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetImpressionShare
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetImpressionShare;

                            /**
                             * Creates a plain object from a TargetImpressionShare message. Also converts values to other types if specified.
                             * @param message TargetImpressionShare
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetImpressionShare, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetImpressionShare to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetImpressionShare
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetRoas. */
                        interface ITargetRoas {

                            /** TargetRoas target_roas */
                            target_roas?: (number|null);
                        }

                        /** Represents a TargetRoas. */
                        class TargetRoas implements ITargetRoas {

                            /**
                             * Constructs a new TargetRoas.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetRoas);

                            /** TargetRoas target_roas. */
                            public target_roas?: (number|null);

                            /**
                             * Creates a new TargetRoas instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetRoas instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetRoas): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetRoas;

                            /**
                             * Encodes the specified TargetRoas message. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetRoas.verify|verify} messages.
                             * @param message TargetRoas message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetRoas, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetRoas message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetRoas.verify|verify} messages.
                             * @param message TargetRoas message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetRoas, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetRoas message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetRoas
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetRoas;

                            /**
                             * Decodes a TargetRoas message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetRoas
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetRoas;

                            /**
                             * Verifies a TargetRoas message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetRoas message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetRoas
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetRoas;

                            /**
                             * Creates a plain object from a TargetRoas message. Also converts values to other types if specified.
                             * @param message TargetRoas
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetRoas, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetRoas to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetRoas
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetSpend. */
                        interface ITargetSpend {

                            /** TargetSpend target_spend_micros */
                            target_spend_micros?: (number|null);

                            /** TargetSpend cpc_bid_ceiling_micros */
                            cpc_bid_ceiling_micros?: (number|null);
                        }

                        /** Represents a TargetSpend. */
                        class TargetSpend implements ITargetSpend {

                            /**
                             * Constructs a new TargetSpend.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetSpend);

                            /** TargetSpend target_spend_micros. */
                            public target_spend_micros?: (number|null);

                            /** TargetSpend cpc_bid_ceiling_micros. */
                            public cpc_bid_ceiling_micros?: (number|null);

                            /**
                             * Creates a new TargetSpend instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetSpend instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetSpend): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetSpend;

                            /**
                             * Encodes the specified TargetSpend message. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetSpend.verify|verify} messages.
                             * @param message TargetSpend message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetSpend, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetSpend message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetSpend.verify|verify} messages.
                             * @param message TargetSpend message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.ITargetSpend, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetSpend message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetSpend
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetSpend;

                            /**
                             * Decodes a TargetSpend message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetSpend
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetSpend;

                            /**
                             * Verifies a TargetSpend message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetSpend message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetSpend
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetSpend;

                            /**
                             * Creates a plain object from a TargetSpend message. Also converts values to other types if specified.
                             * @param message TargetSpend
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AccessibleBiddingStrategy.TargetSpend, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetSpend to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetSpend
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an AccountBudget. */
                    interface IAccountBudget {

                        /** AccountBudget resource_name */
                        resource_name?: (string|null);

                        /** AccountBudget id */
                        id?: (number|null);

                        /** AccountBudget billing_setup */
                        billing_setup?: (string|null);

                        /** AccountBudget status */
                        status?: (google.ads.googleads.v23.enums.AccountBudgetStatusEnum.AccountBudgetStatus|keyof typeof google.ads.googleads.v23.enums.AccountBudgetStatusEnum.AccountBudgetStatus|null);

                        /** AccountBudget name */
                        name?: (string|null);

                        /** AccountBudget proposed_start_date_time */
                        proposed_start_date_time?: (string|null);

                        /** AccountBudget approved_start_date_time */
                        approved_start_date_time?: (string|null);

                        /** AccountBudget total_adjustments_micros */
                        total_adjustments_micros?: (number|null);

                        /** AccountBudget amount_served_micros */
                        amount_served_micros?: (number|null);

                        /** AccountBudget purchase_order_number */
                        purchase_order_number?: (string|null);

                        /** AccountBudget notes */
                        notes?: (string|null);

                        /** AccountBudget pending_proposal */
                        pending_proposal?: (google.ads.googleads.v23.resources.AccountBudget.IPendingAccountBudgetProposal|null);

                        /** AccountBudget proposed_end_date_time */
                        proposed_end_date_time?: (string|null);

                        /** AccountBudget proposed_end_time_type */
                        proposed_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudget approved_end_date_time */
                        approved_end_date_time?: (string|null);

                        /** AccountBudget approved_end_time_type */
                        approved_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudget proposed_spending_limit_micros */
                        proposed_spending_limit_micros?: (number|null);

                        /** AccountBudget proposed_spending_limit_type */
                        proposed_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudget approved_spending_limit_micros */
                        approved_spending_limit_micros?: (number|null);

                        /** AccountBudget approved_spending_limit_type */
                        approved_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudget adjusted_spending_limit_micros */
                        adjusted_spending_limit_micros?: (number|null);

                        /** AccountBudget adjusted_spending_limit_type */
                        adjusted_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);
                    }

                    /** Represents an AccountBudget. */
                    class AccountBudget implements IAccountBudget {

                        /**
                         * Constructs a new AccountBudget.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAccountBudget);

                        /** AccountBudget resource_name. */
                        public resource_name: string;

                        /** AccountBudget id. */
                        public id?: (number|null);

                        /** AccountBudget billing_setup. */
                        public billing_setup?: (string|null);

                        /** AccountBudget status. */
                        public status: (google.ads.googleads.v23.enums.AccountBudgetStatusEnum.AccountBudgetStatus|keyof typeof google.ads.googleads.v23.enums.AccountBudgetStatusEnum.AccountBudgetStatus);

                        /** AccountBudget name. */
                        public name?: (string|null);

                        /** AccountBudget proposed_start_date_time. */
                        public proposed_start_date_time?: (string|null);

                        /** AccountBudget approved_start_date_time. */
                        public approved_start_date_time?: (string|null);

                        /** AccountBudget total_adjustments_micros. */
                        public total_adjustments_micros: number;

                        /** AccountBudget amount_served_micros. */
                        public amount_served_micros: number;

                        /** AccountBudget purchase_order_number. */
                        public purchase_order_number?: (string|null);

                        /** AccountBudget notes. */
                        public notes?: (string|null);

                        /** AccountBudget pending_proposal. */
                        public pending_proposal?: (google.ads.googleads.v23.resources.AccountBudget.IPendingAccountBudgetProposal|null);

                        /** AccountBudget proposed_end_date_time. */
                        public proposed_end_date_time?: (string|null);

                        /** AccountBudget proposed_end_time_type. */
                        public proposed_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudget approved_end_date_time. */
                        public approved_end_date_time?: (string|null);

                        /** AccountBudget approved_end_time_type. */
                        public approved_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudget proposed_spending_limit_micros. */
                        public proposed_spending_limit_micros?: (number|null);

                        /** AccountBudget proposed_spending_limit_type. */
                        public proposed_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudget approved_spending_limit_micros. */
                        public approved_spending_limit_micros?: (number|null);

                        /** AccountBudget approved_spending_limit_type. */
                        public approved_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudget adjusted_spending_limit_micros. */
                        public adjusted_spending_limit_micros?: (number|null);

                        /** AccountBudget adjusted_spending_limit_type. */
                        public adjusted_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudget proposed_end_time. */
                        public proposed_end_time?: ("proposed_end_date_time"|"proposed_end_time_type");

                        /** AccountBudget approved_end_time. */
                        public approved_end_time?: ("approved_end_date_time"|"approved_end_time_type");

                        /** AccountBudget proposed_spending_limit. */
                        public proposed_spending_limit?: ("proposed_spending_limit_micros"|"proposed_spending_limit_type");

                        /** AccountBudget approved_spending_limit. */
                        public approved_spending_limit?: ("approved_spending_limit_micros"|"approved_spending_limit_type");

                        /** AccountBudget adjusted_spending_limit. */
                        public adjusted_spending_limit?: ("adjusted_spending_limit_micros"|"adjusted_spending_limit_type");

                        /**
                         * Creates a new AccountBudget instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountBudget instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAccountBudget): google.ads.googleads.v23.resources.AccountBudget;

                        /**
                         * Encodes the specified AccountBudget message. Does not implicitly {@link google.ads.googleads.v23.resources.AccountBudget.verify|verify} messages.
                         * @param message AccountBudget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAccountBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudget message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccountBudget.verify|verify} messages.
                         * @param message AccountBudget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAccountBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudget message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountBudget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccountBudget;

                        /**
                         * Decodes an AccountBudget message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountBudget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccountBudget;

                        /**
                         * Verifies an AccountBudget message.
                         * @param message Plain 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 AccountBudget message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountBudget
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccountBudget;

                        /**
                         * Creates a plain object from an AccountBudget message. Also converts values to other types if specified.
                         * @param message AccountBudget
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AccountBudget, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountBudget
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountBudget {

                        /** Properties of a PendingAccountBudgetProposal. */
                        interface IPendingAccountBudgetProposal {

                            /** PendingAccountBudgetProposal account_budget_proposal */
                            account_budget_proposal?: (string|null);

                            /** PendingAccountBudgetProposal proposal_type */
                            proposal_type?: (google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|null);

                            /** PendingAccountBudgetProposal name */
                            name?: (string|null);

                            /** PendingAccountBudgetProposal start_date_time */
                            start_date_time?: (string|null);

                            /** PendingAccountBudgetProposal purchase_order_number */
                            purchase_order_number?: (string|null);

                            /** PendingAccountBudgetProposal notes */
                            notes?: (string|null);

                            /** PendingAccountBudgetProposal creation_date_time */
                            creation_date_time?: (string|null);

                            /** PendingAccountBudgetProposal end_date_time */
                            end_date_time?: (string|null);

                            /** PendingAccountBudgetProposal end_time_type */
                            end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                            /** PendingAccountBudgetProposal spending_limit_micros */
                            spending_limit_micros?: (number|null);

                            /** PendingAccountBudgetProposal spending_limit_type */
                            spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);
                        }

                        /** Represents a PendingAccountBudgetProposal. */
                        class PendingAccountBudgetProposal implements IPendingAccountBudgetProposal {

                            /**
                             * Constructs a new PendingAccountBudgetProposal.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AccountBudget.IPendingAccountBudgetProposal);

                            /** PendingAccountBudgetProposal account_budget_proposal. */
                            public account_budget_proposal?: (string|null);

                            /** PendingAccountBudgetProposal proposal_type. */
                            public proposal_type: (google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType);

                            /** PendingAccountBudgetProposal name. */
                            public name?: (string|null);

                            /** PendingAccountBudgetProposal start_date_time. */
                            public start_date_time?: (string|null);

                            /** PendingAccountBudgetProposal purchase_order_number. */
                            public purchase_order_number?: (string|null);

                            /** PendingAccountBudgetProposal notes. */
                            public notes?: (string|null);

                            /** PendingAccountBudgetProposal creation_date_time. */
                            public creation_date_time?: (string|null);

                            /** PendingAccountBudgetProposal end_date_time. */
                            public end_date_time?: (string|null);

                            /** PendingAccountBudgetProposal end_time_type. */
                            public end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                            /** PendingAccountBudgetProposal spending_limit_micros. */
                            public spending_limit_micros?: (number|null);

                            /** PendingAccountBudgetProposal spending_limit_type. */
                            public spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                            /** PendingAccountBudgetProposal end_time. */
                            public end_time?: ("end_date_time"|"end_time_type");

                            /** PendingAccountBudgetProposal spending_limit. */
                            public spending_limit?: ("spending_limit_micros"|"spending_limit_type");

                            /**
                             * Creates a new PendingAccountBudgetProposal instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PendingAccountBudgetProposal instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AccountBudget.IPendingAccountBudgetProposal): google.ads.googleads.v23.resources.AccountBudget.PendingAccountBudgetProposal;

                            /**
                             * Encodes the specified PendingAccountBudgetProposal message. Does not implicitly {@link google.ads.googleads.v23.resources.AccountBudget.PendingAccountBudgetProposal.verify|verify} messages.
                             * @param message PendingAccountBudgetProposal message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AccountBudget.IPendingAccountBudgetProposal, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PendingAccountBudgetProposal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccountBudget.PendingAccountBudgetProposal.verify|verify} messages.
                             * @param message PendingAccountBudgetProposal message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AccountBudget.IPendingAccountBudgetProposal, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PendingAccountBudgetProposal message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PendingAccountBudgetProposal
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccountBudget.PendingAccountBudgetProposal;

                            /**
                             * Decodes a PendingAccountBudgetProposal message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PendingAccountBudgetProposal
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccountBudget.PendingAccountBudgetProposal;

                            /**
                             * Verifies a PendingAccountBudgetProposal message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PendingAccountBudgetProposal message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PendingAccountBudgetProposal
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccountBudget.PendingAccountBudgetProposal;

                            /**
                             * Creates a plain object from a PendingAccountBudgetProposal message. Also converts values to other types if specified.
                             * @param message PendingAccountBudgetProposal
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AccountBudget.PendingAccountBudgetProposal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PendingAccountBudgetProposal to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PendingAccountBudgetProposal
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an AccountBudgetProposal. */
                    interface IAccountBudgetProposal {

                        /** AccountBudgetProposal resource_name */
                        resource_name?: (string|null);

                        /** AccountBudgetProposal id */
                        id?: (number|null);

                        /** AccountBudgetProposal billing_setup */
                        billing_setup?: (string|null);

                        /** AccountBudgetProposal account_budget */
                        account_budget?: (string|null);

                        /** AccountBudgetProposal proposal_type */
                        proposal_type?: (google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|null);

                        /** AccountBudgetProposal status */
                        status?: (google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum.AccountBudgetProposalStatus|keyof typeof google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum.AccountBudgetProposalStatus|null);

                        /** AccountBudgetProposal proposed_name */
                        proposed_name?: (string|null);

                        /** AccountBudgetProposal approved_start_date_time */
                        approved_start_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_purchase_order_number */
                        proposed_purchase_order_number?: (string|null);

                        /** AccountBudgetProposal proposed_notes */
                        proposed_notes?: (string|null);

                        /** AccountBudgetProposal creation_date_time */
                        creation_date_time?: (string|null);

                        /** AccountBudgetProposal approval_date_time */
                        approval_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_start_date_time */
                        proposed_start_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_start_time_type */
                        proposed_start_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudgetProposal proposed_end_date_time */
                        proposed_end_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_end_time_type */
                        proposed_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudgetProposal approved_end_date_time */
                        approved_end_date_time?: (string|null);

                        /** AccountBudgetProposal approved_end_time_type */
                        approved_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudgetProposal proposed_spending_limit_micros */
                        proposed_spending_limit_micros?: (number|null);

                        /** AccountBudgetProposal proposed_spending_limit_type */
                        proposed_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudgetProposal approved_spending_limit_micros */
                        approved_spending_limit_micros?: (number|null);

                        /** AccountBudgetProposal approved_spending_limit_type */
                        approved_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);
                    }

                    /** Represents an AccountBudgetProposal. */
                    class AccountBudgetProposal implements IAccountBudgetProposal {

                        /**
                         * Constructs a new AccountBudgetProposal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAccountBudgetProposal);

                        /** AccountBudgetProposal resource_name. */
                        public resource_name: string;

                        /** AccountBudgetProposal id. */
                        public id?: (number|null);

                        /** AccountBudgetProposal billing_setup. */
                        public billing_setup?: (string|null);

                        /** AccountBudgetProposal account_budget. */
                        public account_budget?: (string|null);

                        /** AccountBudgetProposal proposal_type. */
                        public proposal_type: (google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v23.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType);

                        /** AccountBudgetProposal status. */
                        public status: (google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum.AccountBudgetProposalStatus|keyof typeof google.ads.googleads.v23.enums.AccountBudgetProposalStatusEnum.AccountBudgetProposalStatus);

                        /** AccountBudgetProposal proposed_name. */
                        public proposed_name?: (string|null);

                        /** AccountBudgetProposal approved_start_date_time. */
                        public approved_start_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_purchase_order_number. */
                        public proposed_purchase_order_number?: (string|null);

                        /** AccountBudgetProposal proposed_notes. */
                        public proposed_notes?: (string|null);

                        /** AccountBudgetProposal creation_date_time. */
                        public creation_date_time?: (string|null);

                        /** AccountBudgetProposal approval_date_time. */
                        public approval_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_start_date_time. */
                        public proposed_start_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_start_time_type. */
                        public proposed_start_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudgetProposal proposed_end_date_time. */
                        public proposed_end_date_time?: (string|null);

                        /** AccountBudgetProposal proposed_end_time_type. */
                        public proposed_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudgetProposal approved_end_date_time. */
                        public approved_end_date_time?: (string|null);

                        /** AccountBudgetProposal approved_end_time_type. */
                        public approved_end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** AccountBudgetProposal proposed_spending_limit_micros. */
                        public proposed_spending_limit_micros?: (number|null);

                        /** AccountBudgetProposal proposed_spending_limit_type. */
                        public proposed_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudgetProposal approved_spending_limit_micros. */
                        public approved_spending_limit_micros?: (number|null);

                        /** AccountBudgetProposal approved_spending_limit_type. */
                        public approved_spending_limit_type?: (google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v23.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudgetProposal proposed_start_time. */
                        public proposed_start_time?: ("proposed_start_date_time"|"proposed_start_time_type");

                        /** AccountBudgetProposal proposed_end_time. */
                        public proposed_end_time?: ("proposed_end_date_time"|"proposed_end_time_type");

                        /** AccountBudgetProposal approved_end_time. */
                        public approved_end_time?: ("approved_end_date_time"|"approved_end_time_type");

                        /** AccountBudgetProposal proposed_spending_limit. */
                        public proposed_spending_limit?: ("proposed_spending_limit_micros"|"proposed_spending_limit_type");

                        /** AccountBudgetProposal approved_spending_limit. */
                        public approved_spending_limit?: ("approved_spending_limit_micros"|"approved_spending_limit_type");

                        /**
                         * Creates a new AccountBudgetProposal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountBudgetProposal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAccountBudgetProposal): google.ads.googleads.v23.resources.AccountBudgetProposal;

                        /**
                         * Encodes the specified AccountBudgetProposal message. Does not implicitly {@link google.ads.googleads.v23.resources.AccountBudgetProposal.verify|verify} messages.
                         * @param message AccountBudgetProposal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAccountBudgetProposal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccountBudgetProposal.verify|verify} messages.
                         * @param message AccountBudgetProposal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAccountBudgetProposal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountBudgetProposal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccountBudgetProposal;

                        /**
                         * Decodes an AccountBudgetProposal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountBudgetProposal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccountBudgetProposal;

                        /**
                         * Verifies an AccountBudgetProposal message.
                         * @param message Plain 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 AccountBudgetProposal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountBudgetProposal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccountBudgetProposal;

                        /**
                         * Creates a plain object from an AccountBudgetProposal message. Also converts values to other types if specified.
                         * @param message AccountBudgetProposal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AccountBudgetProposal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountBudgetProposal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AccountLink. */
                    interface IAccountLink {

                        /** AccountLink resource_name */
                        resource_name?: (string|null);

                        /** AccountLink account_link_id */
                        account_link_id?: (number|null);

                        /** AccountLink status */
                        status?: (google.ads.googleads.v23.enums.AccountLinkStatusEnum.AccountLinkStatus|keyof typeof google.ads.googleads.v23.enums.AccountLinkStatusEnum.AccountLinkStatus|null);

                        /** AccountLink type */
                        type?: (google.ads.googleads.v23.enums.LinkedAccountTypeEnum.LinkedAccountType|keyof typeof google.ads.googleads.v23.enums.LinkedAccountTypeEnum.LinkedAccountType|null);

                        /** AccountLink third_party_app_analytics */
                        third_party_app_analytics?: (google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLinkIdentifier|null);
                    }

                    /** Represents an AccountLink. */
                    class AccountLink implements IAccountLink {

                        /**
                         * Constructs a new AccountLink.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAccountLink);

                        /** AccountLink resource_name. */
                        public resource_name: string;

                        /** AccountLink account_link_id. */
                        public account_link_id?: (number|null);

                        /** AccountLink status. */
                        public status: (google.ads.googleads.v23.enums.AccountLinkStatusEnum.AccountLinkStatus|keyof typeof google.ads.googleads.v23.enums.AccountLinkStatusEnum.AccountLinkStatus);

                        /** AccountLink type. */
                        public type: (google.ads.googleads.v23.enums.LinkedAccountTypeEnum.LinkedAccountType|keyof typeof google.ads.googleads.v23.enums.LinkedAccountTypeEnum.LinkedAccountType);

                        /** AccountLink third_party_app_analytics. */
                        public third_party_app_analytics?: (google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLinkIdentifier|null);

                        /** AccountLink linked_account. */
                        public linked_account?: "third_party_app_analytics";

                        /**
                         * Creates a new AccountLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountLink instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAccountLink): google.ads.googleads.v23.resources.AccountLink;

                        /**
                         * Encodes the specified AccountLink message. Does not implicitly {@link google.ads.googleads.v23.resources.AccountLink.verify|verify} messages.
                         * @param message AccountLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAccountLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLink message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AccountLink.verify|verify} messages.
                         * @param message AccountLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAccountLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLink message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AccountLink;

                        /**
                         * Decodes an AccountLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AccountLink;

                        /**
                         * Verifies an AccountLink message.
                         * @param message Plain 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 AccountLink message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountLink
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AccountLink;

                        /**
                         * Creates a plain object from an AccountLink message. Also converts values to other types if specified.
                         * @param message AccountLink
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AccountLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountLink
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ThirdPartyAppAnalyticsLinkIdentifier. */
                    interface IThirdPartyAppAnalyticsLinkIdentifier {

                        /** ThirdPartyAppAnalyticsLinkIdentifier app_analytics_provider_id */
                        app_analytics_provider_id?: (number|null);

                        /** ThirdPartyAppAnalyticsLinkIdentifier app_id */
                        app_id?: (string|null);

                        /** ThirdPartyAppAnalyticsLinkIdentifier app_vendor */
                        app_vendor?: (google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|null);
                    }

                    /** Represents a ThirdPartyAppAnalyticsLinkIdentifier. */
                    class ThirdPartyAppAnalyticsLinkIdentifier implements IThirdPartyAppAnalyticsLinkIdentifier {

                        /**
                         * Constructs a new ThirdPartyAppAnalyticsLinkIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLinkIdentifier);

                        /** ThirdPartyAppAnalyticsLinkIdentifier app_analytics_provider_id. */
                        public app_analytics_provider_id?: (number|null);

                        /** ThirdPartyAppAnalyticsLinkIdentifier app_id. */
                        public app_id?: (string|null);

                        /** ThirdPartyAppAnalyticsLinkIdentifier app_vendor. */
                        public app_vendor: (google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor);

                        /**
                         * Creates a new ThirdPartyAppAnalyticsLinkIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyAppAnalyticsLinkIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLinkIdentifier): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLinkIdentifier;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLinkIdentifier.verify|verify} messages.
                         * @param message ThirdPartyAppAnalyticsLinkIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLinkIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLinkIdentifier.verify|verify} messages.
                         * @param message ThirdPartyAppAnalyticsLinkIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLinkIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLinkIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyAppAnalyticsLinkIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLinkIdentifier;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLinkIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyAppAnalyticsLinkIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLinkIdentifier;

                        /**
                         * Verifies a ThirdPartyAppAnalyticsLinkIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyAppAnalyticsLinkIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyAppAnalyticsLinkIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLinkIdentifier;

                        /**
                         * Creates a plain object from a ThirdPartyAppAnalyticsLinkIdentifier message. Also converts values to other types if specified.
                         * @param message ThirdPartyAppAnalyticsLinkIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLinkIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyAppAnalyticsLinkIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyAppAnalyticsLinkIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Ad. */
                    interface IAd {

                        /** Ad resource_name */
                        resource_name?: (string|null);

                        /** Ad id */
                        id?: (number|null);

                        /** Ad final_urls */
                        final_urls?: (string[]|null);

                        /** Ad final_app_urls */
                        final_app_urls?: (google.ads.googleads.v23.common.IFinalAppUrl[]|null);

                        /** Ad final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** Ad tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** Ad final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** Ad url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v23.common.ICustomParameter[]|null);

                        /** Ad display_url */
                        display_url?: (string|null);

                        /** Ad type */
                        type?: (google.ads.googleads.v23.enums.AdTypeEnum.AdType|keyof typeof google.ads.googleads.v23.enums.AdTypeEnum.AdType|null);

                        /** Ad added_by_google_ads */
                        added_by_google_ads?: (boolean|null);

                        /** Ad device_preference */
                        device_preference?: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device|null);

                        /** Ad url_collections */
                        url_collections?: (google.ads.googleads.v23.common.IUrlCollection[]|null);

                        /** Ad name */
                        name?: (string|null);

                        /** Ad system_managed_resource_source */
                        system_managed_resource_source?: (google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource|keyof typeof google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource|null);

                        /** Ad text_ad */
                        text_ad?: (google.ads.googleads.v23.common.ITextAdInfo|null);

                        /** Ad expanded_text_ad */
                        expanded_text_ad?: (google.ads.googleads.v23.common.IExpandedTextAdInfo|null);

                        /** Ad expanded_dynamic_search_ad */
                        expanded_dynamic_search_ad?: (google.ads.googleads.v23.common.IExpandedDynamicSearchAdInfo|null);

                        /** Ad hotel_ad */
                        hotel_ad?: (google.ads.googleads.v23.common.IHotelAdInfo|null);

                        /** Ad shopping_smart_ad */
                        shopping_smart_ad?: (google.ads.googleads.v23.common.IShoppingSmartAdInfo|null);

                        /** Ad shopping_product_ad */
                        shopping_product_ad?: (google.ads.googleads.v23.common.IShoppingProductAdInfo|null);

                        /** Ad image_ad */
                        image_ad?: (google.ads.googleads.v23.common.IImageAdInfo|null);

                        /** Ad video_ad */
                        video_ad?: (google.ads.googleads.v23.common.IVideoAdInfo|null);

                        /** Ad video_responsive_ad */
                        video_responsive_ad?: (google.ads.googleads.v23.common.IVideoResponsiveAdInfo|null);

                        /** Ad responsive_search_ad */
                        responsive_search_ad?: (google.ads.googleads.v23.common.IResponsiveSearchAdInfo|null);

                        /** Ad legacy_responsive_display_ad */
                        legacy_responsive_display_ad?: (google.ads.googleads.v23.common.ILegacyResponsiveDisplayAdInfo|null);

                        /** Ad app_ad */
                        app_ad?: (google.ads.googleads.v23.common.IAppAdInfo|null);

                        /** Ad legacy_app_install_ad */
                        legacy_app_install_ad?: (google.ads.googleads.v23.common.ILegacyAppInstallAdInfo|null);

                        /** Ad responsive_display_ad */
                        responsive_display_ad?: (google.ads.googleads.v23.common.IResponsiveDisplayAdInfo|null);

                        /** Ad local_ad */
                        local_ad?: (google.ads.googleads.v23.common.ILocalAdInfo|null);

                        /** Ad display_upload_ad */
                        display_upload_ad?: (google.ads.googleads.v23.common.IDisplayUploadAdInfo|null);

                        /** Ad app_engagement_ad */
                        app_engagement_ad?: (google.ads.googleads.v23.common.IAppEngagementAdInfo|null);

                        /** Ad shopping_comparison_listing_ad */
                        shopping_comparison_listing_ad?: (google.ads.googleads.v23.common.IShoppingComparisonListingAdInfo|null);

                        /** Ad smart_campaign_ad */
                        smart_campaign_ad?: (google.ads.googleads.v23.common.ISmartCampaignAdInfo|null);

                        /** Ad app_pre_registration_ad */
                        app_pre_registration_ad?: (google.ads.googleads.v23.common.IAppPreRegistrationAdInfo|null);

                        /** Ad demand_gen_multi_asset_ad */
                        demand_gen_multi_asset_ad?: (google.ads.googleads.v23.common.IDemandGenMultiAssetAdInfo|null);

                        /** Ad demand_gen_carousel_ad */
                        demand_gen_carousel_ad?: (google.ads.googleads.v23.common.IDemandGenCarouselAdInfo|null);

                        /** Ad demand_gen_video_responsive_ad */
                        demand_gen_video_responsive_ad?: (google.ads.googleads.v23.common.IDemandGenVideoResponsiveAdInfo|null);

                        /** Ad demand_gen_product_ad */
                        demand_gen_product_ad?: (google.ads.googleads.v23.common.IDemandGenProductAdInfo|null);

                        /** Ad travel_ad */
                        travel_ad?: (google.ads.googleads.v23.common.ITravelAdInfo|null);
                    }

                    /** Represents an Ad. */
                    class Ad implements IAd {

                        /**
                         * Constructs a new Ad.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAd);

                        /** Ad resource_name. */
                        public resource_name: string;

                        /** Ad id. */
                        public id?: (number|null);

                        /** Ad final_urls. */
                        public final_urls: string[];

                        /** Ad final_app_urls. */
                        public final_app_urls: google.ads.googleads.v23.common.IFinalAppUrl[];

                        /** Ad final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** Ad tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** Ad final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** Ad url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v23.common.ICustomParameter[];

                        /** Ad display_url. */
                        public display_url?: (string|null);

                        /** Ad type. */
                        public type: (google.ads.googleads.v23.enums.AdTypeEnum.AdType|keyof typeof google.ads.googleads.v23.enums.AdTypeEnum.AdType);

                        /** Ad added_by_google_ads. */
                        public added_by_google_ads?: (boolean|null);

                        /** Ad device_preference. */
                        public device_preference: (google.ads.googleads.v23.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v23.enums.DeviceEnum.Device);

                        /** Ad url_collections. */
                        public url_collections: google.ads.googleads.v23.common.IUrlCollection[];

                        /** Ad name. */
                        public name?: (string|null);

                        /** Ad system_managed_resource_source. */
                        public system_managed_resource_source: (google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource|keyof typeof google.ads.googleads.v23.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource);

                        /** Ad text_ad. */
                        public text_ad?: (google.ads.googleads.v23.common.ITextAdInfo|null);

                        /** Ad expanded_text_ad. */
                        public expanded_text_ad?: (google.ads.googleads.v23.common.IExpandedTextAdInfo|null);

                        /** Ad expanded_dynamic_search_ad. */
                        public expanded_dynamic_search_ad?: (google.ads.googleads.v23.common.IExpandedDynamicSearchAdInfo|null);

                        /** Ad hotel_ad. */
                        public hotel_ad?: (google.ads.googleads.v23.common.IHotelAdInfo|null);

                        /** Ad shopping_smart_ad. */
                        public shopping_smart_ad?: (google.ads.googleads.v23.common.IShoppingSmartAdInfo|null);

                        /** Ad shopping_product_ad. */
                        public shopping_product_ad?: (google.ads.googleads.v23.common.IShoppingProductAdInfo|null);

                        /** Ad image_ad. */
                        public image_ad?: (google.ads.googleads.v23.common.IImageAdInfo|null);

                        /** Ad video_ad. */
                        public video_ad?: (google.ads.googleads.v23.common.IVideoAdInfo|null);

                        /** Ad video_responsive_ad. */
                        public video_responsive_ad?: (google.ads.googleads.v23.common.IVideoResponsiveAdInfo|null);

                        /** Ad responsive_search_ad. */
                        public responsive_search_ad?: (google.ads.googleads.v23.common.IResponsiveSearchAdInfo|null);

                        /** Ad legacy_responsive_display_ad. */
                        public legacy_responsive_display_ad?: (google.ads.googleads.v23.common.ILegacyResponsiveDisplayAdInfo|null);

                        /** Ad app_ad. */
                        public app_ad?: (google.ads.googleads.v23.common.IAppAdInfo|null);

                        /** Ad legacy_app_install_ad. */
                        public legacy_app_install_ad?: (google.ads.googleads.v23.common.ILegacyAppInstallAdInfo|null);

                        /** Ad responsive_display_ad. */
                        public responsive_display_ad?: (google.ads.googleads.v23.common.IResponsiveDisplayAdInfo|null);

                        /** Ad local_ad. */
                        public local_ad?: (google.ads.googleads.v23.common.ILocalAdInfo|null);

                        /** Ad display_upload_ad. */
                        public display_upload_ad?: (google.ads.googleads.v23.common.IDisplayUploadAdInfo|null);

                        /** Ad app_engagement_ad. */
                        public app_engagement_ad?: (google.ads.googleads.v23.common.IAppEngagementAdInfo|null);

                        /** Ad shopping_comparison_listing_ad. */
                        public shopping_comparison_listing_ad?: (google.ads.googleads.v23.common.IShoppingComparisonListingAdInfo|null);

                        /** Ad smart_campaign_ad. */
                        public smart_campaign_ad?: (google.ads.googleads.v23.common.ISmartCampaignAdInfo|null);

                        /** Ad app_pre_registration_ad. */
                        public app_pre_registration_ad?: (google.ads.googleads.v23.common.IAppPreRegistrationAdInfo|null);

                        /** Ad demand_gen_multi_asset_ad. */
                        public demand_gen_multi_asset_ad?: (google.ads.googleads.v23.common.IDemandGenMultiAssetAdInfo|null);

                        /** Ad demand_gen_carousel_ad. */
                        public demand_gen_carousel_ad?: (google.ads.googleads.v23.common.IDemandGenCarouselAdInfo|null);

                        /** Ad demand_gen_video_responsive_ad. */
                        public demand_gen_video_responsive_ad?: (google.ads.googleads.v23.common.IDemandGenVideoResponsiveAdInfo|null);

                        /** Ad demand_gen_product_ad. */
                        public demand_gen_product_ad?: (google.ads.googleads.v23.common.IDemandGenProductAdInfo|null);

                        /** Ad travel_ad. */
                        public travel_ad?: (google.ads.googleads.v23.common.ITravelAdInfo|null);

                        /** Ad ad_data. */
                        public ad_data?: ("text_ad"|"expanded_text_ad"|"expanded_dynamic_search_ad"|"hotel_ad"|"shopping_smart_ad"|"shopping_product_ad"|"image_ad"|"video_ad"|"video_responsive_ad"|"responsive_search_ad"|"legacy_responsive_display_ad"|"app_ad"|"legacy_app_install_ad"|"responsive_display_ad"|"local_ad"|"display_upload_ad"|"app_engagement_ad"|"shopping_comparison_listing_ad"|"smart_campaign_ad"|"app_pre_registration_ad"|"demand_gen_multi_asset_ad"|"demand_gen_carousel_ad"|"demand_gen_video_responsive_ad"|"demand_gen_product_ad"|"travel_ad");

                        /**
                         * Creates a new Ad instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Ad instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAd): google.ads.googleads.v23.resources.Ad;

                        /**
                         * Encodes the specified Ad message. Does not implicitly {@link google.ads.googleads.v23.resources.Ad.verify|verify} messages.
                         * @param message Ad message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAd, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Ad message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Ad.verify|verify} messages.
                         * @param message Ad message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAd, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Ad message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Ad
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Ad;

                        /**
                         * Decodes an Ad message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Ad
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Ad;

                        /**
                         * Verifies an Ad message.
                         * @param message Plain 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 Ad message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Ad
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Ad;

                        /**
                         * Creates a plain object from an Ad message. Also converts values to other types if specified.
                         * @param message Ad
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Ad, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Ad to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Ad
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroup. */
                    interface IAdGroup {

                        /** AdGroup resource_name */
                        resource_name?: (string|null);

                        /** AdGroup id */
                        id?: (number|null);

                        /** AdGroup name */
                        name?: (string|null);

                        /** AdGroup status */
                        status?: (google.ads.googleads.v23.enums.AdGroupStatusEnum.AdGroupStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupStatusEnum.AdGroupStatus|null);

                        /** AdGroup type */
                        type?: (google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|null);

                        /** AdGroup ad_rotation_mode */
                        ad_rotation_mode?: (google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum.AdGroupAdRotationMode|keyof typeof google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum.AdGroupAdRotationMode|null);

                        /** AdGroup base_ad_group */
                        base_ad_group?: (string|null);

                        /** AdGroup tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** AdGroup url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v23.common.ICustomParameter[]|null);

                        /** AdGroup campaign */
                        campaign?: (string|null);

                        /** AdGroup cpc_bid_micros */
                        cpc_bid_micros?: (number|null);

                        /** AdGroup effective_cpc_bid_micros */
                        effective_cpc_bid_micros?: (number|null);

                        /** AdGroup cpm_bid_micros */
                        cpm_bid_micros?: (number|null);

                        /** AdGroup target_cpa_micros */
                        target_cpa_micros?: (number|null);

                        /** AdGroup cpv_bid_micros */
                        cpv_bid_micros?: (number|null);

                        /** AdGroup target_cpm_micros */
                        target_cpm_micros?: (number|null);

                        /** AdGroup target_roas */
                        target_roas?: (number|null);

                        /** AdGroup percent_cpc_bid_micros */
                        percent_cpc_bid_micros?: (number|null);

                        /** AdGroup fixed_cpm_micros */
                        fixed_cpm_micros?: (number|null);

                        /** AdGroup target_cpv_micros */
                        target_cpv_micros?: (number|null);

                        /** AdGroup target_cpc_micros */
                        target_cpc_micros?: (number|null);

                        /** AdGroup optimized_targeting_enabled */
                        optimized_targeting_enabled?: (boolean|null);

                        /** AdGroup exclude_demographic_expansion */
                        exclude_demographic_expansion?: (boolean|null);

                        /** AdGroup display_custom_bid_dimension */
                        display_custom_bid_dimension?: (google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension|null);

                        /** AdGroup final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** AdGroup targeting_setting */
                        targeting_setting?: (google.ads.googleads.v23.common.ITargetingSetting|null);

                        /** AdGroup audience_setting */
                        audience_setting?: (google.ads.googleads.v23.resources.AdGroup.IAudienceSetting|null);

                        /** AdGroup effective_target_cpa_micros */
                        effective_target_cpa_micros?: (number|null);

                        /** AdGroup effective_target_cpa_source */
                        effective_target_cpa_source?: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroup effective_target_roas */
                        effective_target_roas?: (number|null);

                        /** AdGroup effective_target_roas_source */
                        effective_target_roas_source?: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroup effective_target_cpc */
                        effective_target_cpc?: (number|null);

                        /** AdGroup effective_target_cpc_source */
                        effective_target_cpc_source?: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroup labels */
                        labels?: (string[]|null);

                        /** AdGroup excluded_parent_asset_field_types */
                        excluded_parent_asset_field_types?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[]|null);

                        /** AdGroup excluded_parent_asset_set_types */
                        excluded_parent_asset_set_types?: (google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType[]|null);

                        /** AdGroup primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum.AdGroupPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum.AdGroupPrimaryStatus|null);

                        /** AdGroup primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum.AdGroupPrimaryStatusReason[]|null);

                        /** AdGroup demand_gen_ad_group_settings */
                        demand_gen_ad_group_settings?: (google.ads.googleads.v23.resources.AdGroup.IDemandGenAdGroupSettings|null);

                        /** AdGroup video_ad_group_settings */
                        video_ad_group_settings?: (google.ads.googleads.v23.resources.AdGroup.IVideoAdGroupSettings|null);

                        /** AdGroup ai_max_ad_group_setting */
                        ai_max_ad_group_setting?: (google.ads.googleads.v23.resources.AdGroup.IAiMaxAdGroupSetting|null);

                        /** AdGroup vertical_ads_format_setting */
                        vertical_ads_format_setting?: (google.ads.googleads.v23.resources.AdGroup.IVerticalAdsFormatSetting|null);
                    }

                    /** Represents an AdGroup. */
                    class AdGroup implements IAdGroup {

                        /**
                         * Constructs a new AdGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroup);

                        /** AdGroup resource_name. */
                        public resource_name: string;

                        /** AdGroup id. */
                        public id?: (number|null);

                        /** AdGroup name. */
                        public name?: (string|null);

                        /** AdGroup status. */
                        public status: (google.ads.googleads.v23.enums.AdGroupStatusEnum.AdGroupStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupStatusEnum.AdGroupStatus);

                        /** AdGroup type. */
                        public type: (google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType);

                        /** AdGroup ad_rotation_mode. */
                        public ad_rotation_mode: (google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum.AdGroupAdRotationMode|keyof typeof google.ads.googleads.v23.enums.AdGroupAdRotationModeEnum.AdGroupAdRotationMode);

                        /** AdGroup base_ad_group. */
                        public base_ad_group?: (string|null);

                        /** AdGroup tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** AdGroup url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v23.common.ICustomParameter[];

                        /** AdGroup campaign. */
                        public campaign?: (string|null);

                        /** AdGroup cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /** AdGroup effective_cpc_bid_micros. */
                        public effective_cpc_bid_micros?: (number|null);

                        /** AdGroup cpm_bid_micros. */
                        public cpm_bid_micros?: (number|null);

                        /** AdGroup target_cpa_micros. */
                        public target_cpa_micros?: (number|null);

                        /** AdGroup cpv_bid_micros. */
                        public cpv_bid_micros?: (number|null);

                        /** AdGroup target_cpm_micros. */
                        public target_cpm_micros?: (number|null);

                        /** AdGroup target_roas. */
                        public target_roas?: (number|null);

                        /** AdGroup percent_cpc_bid_micros. */
                        public percent_cpc_bid_micros?: (number|null);

                        /** AdGroup fixed_cpm_micros. */
                        public fixed_cpm_micros?: (number|null);

                        /** AdGroup target_cpv_micros. */
                        public target_cpv_micros?: (number|null);

                        /** AdGroup target_cpc_micros. */
                        public target_cpc_micros?: (number|null);

                        /** AdGroup optimized_targeting_enabled. */
                        public optimized_targeting_enabled: boolean;

                        /** AdGroup exclude_demographic_expansion. */
                        public exclude_demographic_expansion: boolean;

                        /** AdGroup display_custom_bid_dimension. */
                        public display_custom_bid_dimension: (google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v23.enums.TargetingDimensionEnum.TargetingDimension);

                        /** AdGroup final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** AdGroup targeting_setting. */
                        public targeting_setting?: (google.ads.googleads.v23.common.ITargetingSetting|null);

                        /** AdGroup audience_setting. */
                        public audience_setting?: (google.ads.googleads.v23.resources.AdGroup.IAudienceSetting|null);

                        /** AdGroup effective_target_cpa_micros. */
                        public effective_target_cpa_micros?: (number|null);

                        /** AdGroup effective_target_cpa_source. */
                        public effective_target_cpa_source: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroup effective_target_roas. */
                        public effective_target_roas?: (number|null);

                        /** AdGroup effective_target_roas_source. */
                        public effective_target_roas_source: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroup effective_target_cpc. */
                        public effective_target_cpc?: (number|null);

                        /** AdGroup effective_target_cpc_source. */
                        public effective_target_cpc_source: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroup labels. */
                        public labels: string[];

                        /** AdGroup excluded_parent_asset_field_types. */
                        public excluded_parent_asset_field_types: google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[];

                        /** AdGroup excluded_parent_asset_set_types. */
                        public excluded_parent_asset_set_types: google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType[];

                        /** AdGroup primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum.AdGroupPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupPrimaryStatusEnum.AdGroupPrimaryStatus);

                        /** AdGroup primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AdGroupPrimaryStatusReasonEnum.AdGroupPrimaryStatusReason[];

                        /** AdGroup demand_gen_ad_group_settings. */
                        public demand_gen_ad_group_settings?: (google.ads.googleads.v23.resources.AdGroup.IDemandGenAdGroupSettings|null);

                        /** AdGroup video_ad_group_settings. */
                        public video_ad_group_settings?: (google.ads.googleads.v23.resources.AdGroup.IVideoAdGroupSettings|null);

                        /** AdGroup ai_max_ad_group_setting. */
                        public ai_max_ad_group_setting?: (google.ads.googleads.v23.resources.AdGroup.IAiMaxAdGroupSetting|null);

                        /** AdGroup vertical_ads_format_setting. */
                        public vertical_ads_format_setting?: (google.ads.googleads.v23.resources.AdGroup.IVerticalAdsFormatSetting|null);

                        /**
                         * Creates a new AdGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroup): google.ads.googleads.v23.resources.AdGroup;

                        /**
                         * Encodes the specified AdGroup message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.verify|verify} messages.
                         * @param message AdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.verify|verify} messages.
                         * @param message AdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup;

                        /**
                         * Decodes an AdGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup;

                        /**
                         * Verifies an AdGroup message.
                         * @param message Plain 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 AdGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup;

                        /**
                         * Creates a plain object from an AdGroup message. Also converts values to other types if specified.
                         * @param message AdGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroup {

                        /** Properties of an AudienceSetting. */
                        interface IAudienceSetting {

                            /** AudienceSetting use_audience_grouped */
                            use_audience_grouped?: (boolean|null);
                        }

                        /** Represents an AudienceSetting. */
                        class AudienceSetting implements IAudienceSetting {

                            /**
                             * Constructs a new AudienceSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdGroup.IAudienceSetting);

                            /** AudienceSetting use_audience_grouped. */
                            public use_audience_grouped: boolean;

                            /**
                             * Creates a new AudienceSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AudienceSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdGroup.IAudienceSetting): google.ads.googleads.v23.resources.AdGroup.AudienceSetting;

                            /**
                             * Encodes the specified AudienceSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.AudienceSetting.verify|verify} messages.
                             * @param message AudienceSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdGroup.IAudienceSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AudienceSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.AudienceSetting.verify|verify} messages.
                             * @param message AudienceSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.IAudienceSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AudienceSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AudienceSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.AudienceSetting;

                            /**
                             * Decodes an AudienceSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AudienceSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.AudienceSetting;

                            /**
                             * Verifies an AudienceSetting message.
                             * @param message Plain 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 AudienceSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AudienceSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.AudienceSetting;

                            /**
                             * Creates a plain object from an AudienceSetting message. Also converts values to other types if specified.
                             * @param message AudienceSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdGroup.AudienceSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AudienceSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AudienceSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a DemandGenAdGroupSettings. */
                        interface IDemandGenAdGroupSettings {

                            /** DemandGenAdGroupSettings channel_controls */
                            channel_controls?: (google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.IDemandGenChannelControls|null);
                        }

                        /** Represents a DemandGenAdGroupSettings. */
                        class DemandGenAdGroupSettings implements IDemandGenAdGroupSettings {

                            /**
                             * Constructs a new DemandGenAdGroupSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdGroup.IDemandGenAdGroupSettings);

                            /** DemandGenAdGroupSettings channel_controls. */
                            public channel_controls?: (google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.IDemandGenChannelControls|null);

                            /**
                             * Creates a new DemandGenAdGroupSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DemandGenAdGroupSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdGroup.IDemandGenAdGroupSettings): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings;

                            /**
                             * Encodes the specified DemandGenAdGroupSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.verify|verify} messages.
                             * @param message DemandGenAdGroupSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdGroup.IDemandGenAdGroupSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DemandGenAdGroupSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.verify|verify} messages.
                             * @param message DemandGenAdGroupSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.IDemandGenAdGroupSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DemandGenAdGroupSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DemandGenAdGroupSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings;

                            /**
                             * Decodes a DemandGenAdGroupSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DemandGenAdGroupSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings;

                            /**
                             * Verifies a DemandGenAdGroupSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DemandGenAdGroupSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DemandGenAdGroupSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings;

                            /**
                             * Creates a plain object from a DemandGenAdGroupSettings message. Also converts values to other types if specified.
                             * @param message DemandGenAdGroupSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DemandGenAdGroupSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DemandGenAdGroupSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace DemandGenAdGroupSettings {

                            /** Properties of a DemandGenChannelControls. */
                            interface IDemandGenChannelControls {

                                /** DemandGenChannelControls channel_config */
                                channel_config?: (google.ads.googleads.v23.enums.DemandGenChannelConfigEnum.DemandGenChannelConfig|keyof typeof google.ads.googleads.v23.enums.DemandGenChannelConfigEnum.DemandGenChannelConfig|null);

                                /** DemandGenChannelControls channel_strategy */
                                channel_strategy?: (google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum.DemandGenChannelStrategy|keyof typeof google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum.DemandGenChannelStrategy|null);

                                /** DemandGenChannelControls selected_channels */
                                selected_channels?: (google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.IDemandGenSelectedChannels|null);
                            }

                            /** Represents a DemandGenChannelControls. */
                            class DemandGenChannelControls implements IDemandGenChannelControls {

                                /**
                                 * Constructs a new DemandGenChannelControls.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.IDemandGenChannelControls);

                                /** DemandGenChannelControls channel_config. */
                                public channel_config: (google.ads.googleads.v23.enums.DemandGenChannelConfigEnum.DemandGenChannelConfig|keyof typeof google.ads.googleads.v23.enums.DemandGenChannelConfigEnum.DemandGenChannelConfig);

                                /** DemandGenChannelControls channel_strategy. */
                                public channel_strategy?: (google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum.DemandGenChannelStrategy|keyof typeof google.ads.googleads.v23.enums.DemandGenChannelStrategyEnum.DemandGenChannelStrategy|null);

                                /** DemandGenChannelControls selected_channels. */
                                public selected_channels?: (google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.IDemandGenSelectedChannels|null);

                                /** DemandGenChannelControls channel_configuration. */
                                public channel_configuration?: ("channel_strategy"|"selected_channels");

                                /**
                                 * Creates a new DemandGenChannelControls instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns DemandGenChannelControls instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.IDemandGenChannelControls): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls;

                                /**
                                 * Encodes the specified DemandGenChannelControls message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.verify|verify} messages.
                                 * @param message DemandGenChannelControls message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.IDemandGenChannelControls, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified DemandGenChannelControls message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.verify|verify} messages.
                                 * @param message DemandGenChannelControls message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.IDemandGenChannelControls, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a DemandGenChannelControls message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns DemandGenChannelControls
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls;

                                /**
                                 * Decodes a DemandGenChannelControls message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns DemandGenChannelControls
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls;

                                /**
                                 * Verifies a DemandGenChannelControls message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a DemandGenChannelControls message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns DemandGenChannelControls
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls;

                                /**
                                 * Creates a plain object from a DemandGenChannelControls message. Also converts values to other types if specified.
                                 * @param message DemandGenChannelControls
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this DemandGenChannelControls to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for DemandGenChannelControls
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            namespace DemandGenChannelControls {

                                /** Properties of a DemandGenSelectedChannels. */
                                interface IDemandGenSelectedChannels {

                                    /** DemandGenSelectedChannels youtube_in_stream */
                                    youtube_in_stream?: (boolean|null);

                                    /** DemandGenSelectedChannels youtube_in_feed */
                                    youtube_in_feed?: (boolean|null);

                                    /** DemandGenSelectedChannels youtube_shorts */
                                    youtube_shorts?: (boolean|null);

                                    /** DemandGenSelectedChannels discover */
                                    discover?: (boolean|null);

                                    /** DemandGenSelectedChannels gmail */
                                    gmail?: (boolean|null);

                                    /** DemandGenSelectedChannels display */
                                    display?: (boolean|null);
                                }

                                /** Represents a DemandGenSelectedChannels. */
                                class DemandGenSelectedChannels implements IDemandGenSelectedChannels {

                                    /**
                                     * Constructs a new DemandGenSelectedChannels.
                                     * @param [properties] Properties to set
                                     */
                                    constructor(properties?: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.IDemandGenSelectedChannels);

                                    /** DemandGenSelectedChannels youtube_in_stream. */
                                    public youtube_in_stream: boolean;

                                    /** DemandGenSelectedChannels youtube_in_feed. */
                                    public youtube_in_feed: boolean;

                                    /** DemandGenSelectedChannels youtube_shorts. */
                                    public youtube_shorts: boolean;

                                    /** DemandGenSelectedChannels discover. */
                                    public discover: boolean;

                                    /** DemandGenSelectedChannels gmail. */
                                    public gmail: boolean;

                                    /** DemandGenSelectedChannels display. */
                                    public display: boolean;

                                    /**
                                     * Creates a new DemandGenSelectedChannels instance using the specified properties.
                                     * @param [properties] Properties to set
                                     * @returns DemandGenSelectedChannels instance
                                     */
                                    public static create(properties?: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.IDemandGenSelectedChannels): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.DemandGenSelectedChannels;

                                    /**
                                     * Encodes the specified DemandGenSelectedChannels message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.DemandGenSelectedChannels.verify|verify} messages.
                                     * @param message DemandGenSelectedChannels message or plain object to encode
                                     * @param [writer] Writer to encode to
                                     * @returns Writer
                                     */
                                    public static encode(message: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.IDemandGenSelectedChannels, writer?: $protobuf.Writer): $protobuf.Writer;

                                    /**
                                     * Encodes the specified DemandGenSelectedChannels message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.DemandGenSelectedChannels.verify|verify} messages.
                                     * @param message DemandGenSelectedChannels message or plain object to encode
                                     * @param [writer] Writer to encode to
                                     * @returns Writer
                                     */
                                    public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.IDemandGenSelectedChannels, writer?: $protobuf.Writer): $protobuf.Writer;

                                    /**
                                     * Decodes a DemandGenSelectedChannels message from the specified reader or buffer.
                                     * @param reader Reader or buffer to decode from
                                     * @param [length] Message length if known beforehand
                                     * @returns DemandGenSelectedChannels
                                     * @throws {Error} If the payload is not a reader or valid buffer
                                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                     */
                                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.DemandGenSelectedChannels;

                                    /**
                                     * Decodes a DemandGenSelectedChannels message from the specified reader or buffer, length delimited.
                                     * @param reader Reader or buffer to decode from
                                     * @returns DemandGenSelectedChannels
                                     * @throws {Error} If the payload is not a reader or valid buffer
                                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                     */
                                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.DemandGenSelectedChannels;

                                    /**
                                     * Verifies a DemandGenSelectedChannels message.
                                     * @param message Plain object to verify
                                     * @returns `null` if valid, otherwise the reason why it is not
                                     */
                                    public static verify(message: { [k: string]: any }): (string|null);

                                    /**
                                     * Creates a DemandGenSelectedChannels message from a plain object. Also converts values to their respective internal types.
                                     * @param object Plain object
                                     * @returns DemandGenSelectedChannels
                                     */
                                    public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.DemandGenSelectedChannels;

                                    /**
                                     * Creates a plain object from a DemandGenSelectedChannels message. Also converts values to other types if specified.
                                     * @param message DemandGenSelectedChannels
                                     * @param [options] Conversion options
                                     * @returns Plain object
                                     */
                                    public static toObject(message: google.ads.googleads.v23.resources.AdGroup.DemandGenAdGroupSettings.DemandGenChannelControls.DemandGenSelectedChannels, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                    /**
                                     * Converts this DemandGenSelectedChannels to JSON.
                                     * @returns JSON object
                                     */
                                    public toJSON(): { [k: string]: any };

                                    /**
                                     * Gets the default type url for DemandGenSelectedChannels
                                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                     * @returns The default type url
                                     */
                                    public static getTypeUrl(typeUrlPrefix?: string): string;
                                }
                            }
                        }

                        /** Properties of a VideoAdGroupSettings. */
                        interface IVideoAdGroupSettings {

                            /** VideoAdGroupSettings video_ad_sequence */
                            video_ad_sequence?: (google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.IVideoAdSequenceStepSetting|null);
                        }

                        /** Represents a VideoAdGroupSettings. */
                        class VideoAdGroupSettings implements IVideoAdGroupSettings {

                            /**
                             * Constructs a new VideoAdGroupSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdGroup.IVideoAdGroupSettings);

                            /** VideoAdGroupSettings video_ad_sequence. */
                            public video_ad_sequence?: (google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.IVideoAdSequenceStepSetting|null);

                            /**
                             * Creates a new VideoAdGroupSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns VideoAdGroupSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdGroup.IVideoAdGroupSettings): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings;

                            /**
                             * Encodes the specified VideoAdGroupSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.verify|verify} messages.
                             * @param message VideoAdGroupSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdGroup.IVideoAdGroupSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified VideoAdGroupSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.verify|verify} messages.
                             * @param message VideoAdGroupSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.IVideoAdGroupSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a VideoAdGroupSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns VideoAdGroupSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings;

                            /**
                             * Decodes a VideoAdGroupSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns VideoAdGroupSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings;

                            /**
                             * Verifies a VideoAdGroupSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a VideoAdGroupSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns VideoAdGroupSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings;

                            /**
                             * Creates a plain object from a VideoAdGroupSettings message. Also converts values to other types if specified.
                             * @param message VideoAdGroupSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this VideoAdGroupSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for VideoAdGroupSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace VideoAdGroupSettings {

                            /** Properties of a VideoAdSequenceStepSetting. */
                            interface IVideoAdSequenceStepSetting {

                                /** VideoAdSequenceStepSetting step_id */
                                step_id?: (number|null);
                            }

                            /** Represents a VideoAdSequenceStepSetting. */
                            class VideoAdSequenceStepSetting implements IVideoAdSequenceStepSetting {

                                /**
                                 * Constructs a new VideoAdSequenceStepSetting.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.IVideoAdSequenceStepSetting);

                                /** VideoAdSequenceStepSetting step_id. */
                                public step_id: number;

                                /**
                                 * Creates a new VideoAdSequenceStepSetting instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns VideoAdSequenceStepSetting instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.IVideoAdSequenceStepSetting): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.VideoAdSequenceStepSetting;

                                /**
                                 * Encodes the specified VideoAdSequenceStepSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.VideoAdSequenceStepSetting.verify|verify} messages.
                                 * @param message VideoAdSequenceStepSetting message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.IVideoAdSequenceStepSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified VideoAdSequenceStepSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.VideoAdSequenceStepSetting.verify|verify} messages.
                                 * @param message VideoAdSequenceStepSetting message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.IVideoAdSequenceStepSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a VideoAdSequenceStepSetting message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns VideoAdSequenceStepSetting
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.VideoAdSequenceStepSetting;

                                /**
                                 * Decodes a VideoAdSequenceStepSetting message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns VideoAdSequenceStepSetting
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.VideoAdSequenceStepSetting;

                                /**
                                 * Verifies a VideoAdSequenceStepSetting message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a VideoAdSequenceStepSetting message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns VideoAdSequenceStepSetting
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.VideoAdSequenceStepSetting;

                                /**
                                 * Creates a plain object from a VideoAdSequenceStepSetting message. Also converts values to other types if specified.
                                 * @param message VideoAdSequenceStepSetting
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.AdGroup.VideoAdGroupSettings.VideoAdSequenceStepSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this VideoAdSequenceStepSetting to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for VideoAdSequenceStepSetting
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of an AiMaxAdGroupSetting. */
                        interface IAiMaxAdGroupSetting {

                            /** AiMaxAdGroupSetting disable_search_term_matching */
                            disable_search_term_matching?: (boolean|null);
                        }

                        /** Represents an AiMaxAdGroupSetting. */
                        class AiMaxAdGroupSetting implements IAiMaxAdGroupSetting {

                            /**
                             * Constructs a new AiMaxAdGroupSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdGroup.IAiMaxAdGroupSetting);

                            /** AiMaxAdGroupSetting disable_search_term_matching. */
                            public disable_search_term_matching?: (boolean|null);

                            /**
                             * Creates a new AiMaxAdGroupSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AiMaxAdGroupSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdGroup.IAiMaxAdGroupSetting): google.ads.googleads.v23.resources.AdGroup.AiMaxAdGroupSetting;

                            /**
                             * Encodes the specified AiMaxAdGroupSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.AiMaxAdGroupSetting.verify|verify} messages.
                             * @param message AiMaxAdGroupSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdGroup.IAiMaxAdGroupSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AiMaxAdGroupSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.AiMaxAdGroupSetting.verify|verify} messages.
                             * @param message AiMaxAdGroupSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.IAiMaxAdGroupSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AiMaxAdGroupSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AiMaxAdGroupSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.AiMaxAdGroupSetting;

                            /**
                             * Decodes an AiMaxAdGroupSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AiMaxAdGroupSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.AiMaxAdGroupSetting;

                            /**
                             * Verifies an AiMaxAdGroupSetting message.
                             * @param message Plain 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 AiMaxAdGroupSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AiMaxAdGroupSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.AiMaxAdGroupSetting;

                            /**
                             * Creates a plain object from an AiMaxAdGroupSetting message. Also converts values to other types if specified.
                             * @param message AiMaxAdGroupSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdGroup.AiMaxAdGroupSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AiMaxAdGroupSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AiMaxAdGroupSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a VerticalAdsFormatSetting. */
                        interface IVerticalAdsFormatSetting {

                            /** VerticalAdsFormatSetting disable_text_ads */
                            disable_text_ads?: (boolean|null);

                            /** VerticalAdsFormatSetting enable_booking_links */
                            enable_booking_links?: (boolean|null);

                            /** VerticalAdsFormatSetting enable_vertical_promotion_ads */
                            enable_vertical_promotion_ads?: (boolean|null);
                        }

                        /** Represents a VerticalAdsFormatSetting. */
                        class VerticalAdsFormatSetting implements IVerticalAdsFormatSetting {

                            /**
                             * Constructs a new VerticalAdsFormatSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdGroup.IVerticalAdsFormatSetting);

                            /** VerticalAdsFormatSetting disable_text_ads. */
                            public disable_text_ads?: (boolean|null);

                            /** VerticalAdsFormatSetting enable_booking_links. */
                            public enable_booking_links?: (boolean|null);

                            /** VerticalAdsFormatSetting enable_vertical_promotion_ads. */
                            public enable_vertical_promotion_ads?: (boolean|null);

                            /**
                             * Creates a new VerticalAdsFormatSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns VerticalAdsFormatSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdGroup.IVerticalAdsFormatSetting): google.ads.googleads.v23.resources.AdGroup.VerticalAdsFormatSetting;

                            /**
                             * Encodes the specified VerticalAdsFormatSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.VerticalAdsFormatSetting.verify|verify} messages.
                             * @param message VerticalAdsFormatSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdGroup.IVerticalAdsFormatSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified VerticalAdsFormatSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroup.VerticalAdsFormatSetting.verify|verify} messages.
                             * @param message VerticalAdsFormatSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroup.IVerticalAdsFormatSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a VerticalAdsFormatSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns VerticalAdsFormatSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroup.VerticalAdsFormatSetting;

                            /**
                             * Decodes a VerticalAdsFormatSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns VerticalAdsFormatSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroup.VerticalAdsFormatSetting;

                            /**
                             * Verifies a VerticalAdsFormatSetting message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a VerticalAdsFormatSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns VerticalAdsFormatSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroup.VerticalAdsFormatSetting;

                            /**
                             * Creates a plain object from a VerticalAdsFormatSetting message. Also converts values to other types if specified.
                             * @param message VerticalAdsFormatSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdGroup.VerticalAdsFormatSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this VerticalAdsFormatSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for VerticalAdsFormatSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an AdGroupAd. */
                    interface IAdGroupAd {

                        /** AdGroupAd resource_name */
                        resource_name?: (string|null);

                        /** AdGroupAd status */
                        status?: (google.ads.googleads.v23.enums.AdGroupAdStatusEnum.AdGroupAdStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupAdStatusEnum.AdGroupAdStatus|null);

                        /** AdGroupAd ad_group */
                        ad_group?: (string|null);

                        /** AdGroupAd ad */
                        ad?: (google.ads.googleads.v23.resources.IAd|null);

                        /** AdGroupAd policy_summary */
                        policy_summary?: (google.ads.googleads.v23.resources.IAdGroupAdPolicySummary|null);

                        /** AdGroupAd ad_strength */
                        ad_strength?: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|null);

                        /** AdGroupAd action_items */
                        action_items?: (string[]|null);

                        /** AdGroupAd labels */
                        labels?: (string[]|null);

                        /** AdGroupAd primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum.AdGroupAdPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum.AdGroupAdPrimaryStatus|null);

                        /** AdGroupAd primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum.AdGroupAdPrimaryStatusReason[]|null);

                        /** AdGroupAd ad_group_ad_asset_automation_settings */
                        ad_group_ad_asset_automation_settings?: (google.ads.googleads.v23.resources.IAdGroupAdAssetAutomationSetting[]|null);
                    }

                    /** Represents an AdGroupAd. */
                    class AdGroupAd implements IAdGroupAd {

                        /**
                         * Constructs a new AdGroupAd.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAd);

                        /** AdGroupAd resource_name. */
                        public resource_name: string;

                        /** AdGroupAd status. */
                        public status: (google.ads.googleads.v23.enums.AdGroupAdStatusEnum.AdGroupAdStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupAdStatusEnum.AdGroupAdStatus);

                        /** AdGroupAd ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupAd ad. */
                        public ad?: (google.ads.googleads.v23.resources.IAd|null);

                        /** AdGroupAd policy_summary. */
                        public policy_summary?: (google.ads.googleads.v23.resources.IAdGroupAdPolicySummary|null);

                        /** AdGroupAd ad_strength. */
                        public ad_strength: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength);

                        /** AdGroupAd action_items. */
                        public action_items: string[];

                        /** AdGroupAd labels. */
                        public labels: string[];

                        /** AdGroupAd primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum.AdGroupAdPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusEnum.AdGroupAdPrimaryStatus);

                        /** AdGroupAd primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AdGroupAdPrimaryStatusReasonEnum.AdGroupAdPrimaryStatusReason[];

                        /** AdGroupAd ad_group_ad_asset_automation_settings. */
                        public ad_group_ad_asset_automation_settings: google.ads.googleads.v23.resources.IAdGroupAdAssetAutomationSetting[];

                        /**
                         * Creates a new AdGroupAd instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAd instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAd): google.ads.googleads.v23.resources.AdGroupAd;

                        /**
                         * Encodes the specified AdGroupAd message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAd.verify|verify} messages.
                         * @param message AdGroupAd message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAd, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAd message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAd.verify|verify} messages.
                         * @param message AdGroupAd message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAd, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAd message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAd
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAd;

                        /**
                         * Decodes an AdGroupAd message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAd
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAd;

                        /**
                         * Verifies an AdGroupAd message.
                         * @param message Plain 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 AdGroupAd message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAd
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAd;

                        /**
                         * Creates a plain object from an AdGroupAd message. Also converts values to other types if specified.
                         * @param message AdGroupAd
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAd, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAd to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAd
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdPolicySummary. */
                    interface IAdGroupAdPolicySummary {

                        /** AdGroupAdPolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v23.common.IPolicyTopicEntry[]|null);

                        /** AdGroupAdPolicySummary review_status */
                        review_status?: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** AdGroupAdPolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents an AdGroupAdPolicySummary. */
                    class AdGroupAdPolicySummary implements IAdGroupAdPolicySummary {

                        /**
                         * Constructs a new AdGroupAdPolicySummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAdPolicySummary);

                        /** AdGroupAdPolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v23.common.IPolicyTopicEntry[];

                        /** AdGroupAdPolicySummary review_status. */
                        public review_status: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** AdGroupAdPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus);

                        /**
                         * Creates a new AdGroupAdPolicySummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdPolicySummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAdPolicySummary): google.ads.googleads.v23.resources.AdGroupAdPolicySummary;

                        /**
                         * Encodes the specified AdGroupAdPolicySummary message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdPolicySummary.verify|verify} messages.
                         * @param message AdGroupAdPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAdPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdPolicySummary.verify|verify} messages.
                         * @param message AdGroupAdPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAdPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdPolicySummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdPolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAdPolicySummary;

                        /**
                         * Decodes an AdGroupAdPolicySummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdPolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAdPolicySummary;

                        /**
                         * Verifies an AdGroupAdPolicySummary message.
                         * @param message Plain 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 AdGroupAdPolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdPolicySummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAdPolicySummary;

                        /**
                         * Creates a plain object from an AdGroupAdPolicySummary message. Also converts values to other types if specified.
                         * @param message AdGroupAdPolicySummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAdPolicySummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdPolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdPolicySummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdAssetAutomationSetting. */
                    interface IAdGroupAdAssetAutomationSetting {

                        /** AdGroupAdAssetAutomationSetting asset_automation_type */
                        asset_automation_type?: (google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|keyof typeof google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|null);

                        /** AdGroupAdAssetAutomationSetting asset_automation_status */
                        asset_automation_status?: (google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|keyof typeof google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|null);
                    }

                    /** Represents an AdGroupAdAssetAutomationSetting. */
                    class AdGroupAdAssetAutomationSetting implements IAdGroupAdAssetAutomationSetting {

                        /**
                         * Constructs a new AdGroupAdAssetAutomationSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetAutomationSetting);

                        /** AdGroupAdAssetAutomationSetting asset_automation_type. */
                        public asset_automation_type?: (google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|keyof typeof google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|null);

                        /** AdGroupAdAssetAutomationSetting asset_automation_status. */
                        public asset_automation_status?: (google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|keyof typeof google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|null);

                        /**
                         * Creates a new AdGroupAdAssetAutomationSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdAssetAutomationSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetAutomationSetting): google.ads.googleads.v23.resources.AdGroupAdAssetAutomationSetting;

                        /**
                         * Encodes the specified AdGroupAdAssetAutomationSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetAutomationSetting.verify|verify} messages.
                         * @param message AdGroupAdAssetAutomationSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAdAssetAutomationSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdAssetAutomationSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetAutomationSetting.verify|verify} messages.
                         * @param message AdGroupAdAssetAutomationSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAdAssetAutomationSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdAssetAutomationSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdAssetAutomationSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAdAssetAutomationSetting;

                        /**
                         * Decodes an AdGroupAdAssetAutomationSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdAssetAutomationSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAdAssetAutomationSetting;

                        /**
                         * Verifies an AdGroupAdAssetAutomationSetting message.
                         * @param message Plain 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 AdGroupAdAssetAutomationSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdAssetAutomationSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAdAssetAutomationSetting;

                        /**
                         * Creates a plain object from an AdGroupAdAssetAutomationSetting message. Also converts values to other types if specified.
                         * @param message AdGroupAdAssetAutomationSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAdAssetAutomationSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdAssetAutomationSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdAssetAutomationSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdAssetCombinationView. */
                    interface IAdGroupAdAssetCombinationView {

                        /** AdGroupAdAssetCombinationView resource_name */
                        resource_name?: (string|null);

                        /** AdGroupAdAssetCombinationView served_assets */
                        served_assets?: (google.ads.googleads.v23.common.IAssetUsage[]|null);

                        /** AdGroupAdAssetCombinationView enabled */
                        enabled?: (boolean|null);
                    }

                    /** Represents an AdGroupAdAssetCombinationView. */
                    class AdGroupAdAssetCombinationView implements IAdGroupAdAssetCombinationView {

                        /**
                         * Constructs a new AdGroupAdAssetCombinationView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetCombinationView);

                        /** AdGroupAdAssetCombinationView resource_name. */
                        public resource_name: string;

                        /** AdGroupAdAssetCombinationView served_assets. */
                        public served_assets: google.ads.googleads.v23.common.IAssetUsage[];

                        /** AdGroupAdAssetCombinationView enabled. */
                        public enabled?: (boolean|null);

                        /**
                         * Creates a new AdGroupAdAssetCombinationView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdAssetCombinationView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetCombinationView): google.ads.googleads.v23.resources.AdGroupAdAssetCombinationView;

                        /**
                         * Encodes the specified AdGroupAdAssetCombinationView message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetCombinationView.verify|verify} messages.
                         * @param message AdGroupAdAssetCombinationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAdAssetCombinationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdAssetCombinationView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetCombinationView.verify|verify} messages.
                         * @param message AdGroupAdAssetCombinationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAdAssetCombinationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdAssetCombinationView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdAssetCombinationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAdAssetCombinationView;

                        /**
                         * Decodes an AdGroupAdAssetCombinationView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdAssetCombinationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAdAssetCombinationView;

                        /**
                         * Verifies an AdGroupAdAssetCombinationView message.
                         * @param message Plain 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 AdGroupAdAssetCombinationView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdAssetCombinationView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAdAssetCombinationView;

                        /**
                         * Creates a plain object from an AdGroupAdAssetCombinationView message. Also converts values to other types if specified.
                         * @param message AdGroupAdAssetCombinationView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAdAssetCombinationView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdAssetCombinationView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdAssetCombinationView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdAssetView. */
                    interface IAdGroupAdAssetView {

                        /** AdGroupAdAssetView resource_name */
                        resource_name?: (string|null);

                        /** AdGroupAdAssetView ad_group_ad */
                        ad_group_ad?: (string|null);

                        /** AdGroupAdAssetView asset */
                        asset?: (string|null);

                        /** AdGroupAdAssetView field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** AdGroupAdAssetView enabled */
                        enabled?: (boolean|null);

                        /** AdGroupAdAssetView policy_summary */
                        policy_summary?: (google.ads.googleads.v23.resources.IAdGroupAdAssetPolicySummary|null);

                        /** AdGroupAdAssetView performance_label */
                        performance_label?: (google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|keyof typeof google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|null);

                        /** AdGroupAdAssetView pinned_field */
                        pinned_field?: (google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|keyof typeof google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|null);

                        /** AdGroupAdAssetView source */
                        source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);
                    }

                    /** Represents an AdGroupAdAssetView. */
                    class AdGroupAdAssetView implements IAdGroupAdAssetView {

                        /**
                         * Constructs a new AdGroupAdAssetView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetView);

                        /** AdGroupAdAssetView resource_name. */
                        public resource_name: string;

                        /** AdGroupAdAssetView ad_group_ad. */
                        public ad_group_ad?: (string|null);

                        /** AdGroupAdAssetView asset. */
                        public asset?: (string|null);

                        /** AdGroupAdAssetView field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** AdGroupAdAssetView enabled. */
                        public enabled?: (boolean|null);

                        /** AdGroupAdAssetView policy_summary. */
                        public policy_summary?: (google.ads.googleads.v23.resources.IAdGroupAdAssetPolicySummary|null);

                        /** AdGroupAdAssetView performance_label. */
                        public performance_label: (google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|keyof typeof google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel);

                        /** AdGroupAdAssetView pinned_field. */
                        public pinned_field: (google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType|keyof typeof google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType);

                        /** AdGroupAdAssetView source. */
                        public source: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource);

                        /**
                         * Creates a new AdGroupAdAssetView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdAssetView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetView): google.ads.googleads.v23.resources.AdGroupAdAssetView;

                        /**
                         * Encodes the specified AdGroupAdAssetView message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetView.verify|verify} messages.
                         * @param message AdGroupAdAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAdAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdAssetView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetView.verify|verify} messages.
                         * @param message AdGroupAdAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAdAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdAssetView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAdAssetView;

                        /**
                         * Decodes an AdGroupAdAssetView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAdAssetView;

                        /**
                         * Verifies an AdGroupAdAssetView message.
                         * @param message Plain 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 AdGroupAdAssetView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdAssetView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAdAssetView;

                        /**
                         * Creates a plain object from an AdGroupAdAssetView message. Also converts values to other types if specified.
                         * @param message AdGroupAdAssetView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAdAssetView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdAssetView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdAssetView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdAssetPolicySummary. */
                    interface IAdGroupAdAssetPolicySummary {

                        /** AdGroupAdAssetPolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v23.common.IPolicyTopicEntry[]|null);

                        /** AdGroupAdAssetPolicySummary review_status */
                        review_status?: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** AdGroupAdAssetPolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents an AdGroupAdAssetPolicySummary. */
                    class AdGroupAdAssetPolicySummary implements IAdGroupAdAssetPolicySummary {

                        /**
                         * Constructs a new AdGroupAdAssetPolicySummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetPolicySummary);

                        /** AdGroupAdAssetPolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v23.common.IPolicyTopicEntry[];

                        /** AdGroupAdAssetPolicySummary review_status. */
                        public review_status: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** AdGroupAdAssetPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus);

                        /**
                         * Creates a new AdGroupAdAssetPolicySummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdAssetPolicySummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAdAssetPolicySummary): google.ads.googleads.v23.resources.AdGroupAdAssetPolicySummary;

                        /**
                         * Encodes the specified AdGroupAdAssetPolicySummary message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetPolicySummary.verify|verify} messages.
                         * @param message AdGroupAdAssetPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAdAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdAssetPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdAssetPolicySummary.verify|verify} messages.
                         * @param message AdGroupAdAssetPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAdAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdAssetPolicySummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdAssetPolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAdAssetPolicySummary;

                        /**
                         * Decodes an AdGroupAdAssetPolicySummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdAssetPolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAdAssetPolicySummary;

                        /**
                         * Verifies an AdGroupAdAssetPolicySummary message.
                         * @param message Plain 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 AdGroupAdAssetPolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdAssetPolicySummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAdAssetPolicySummary;

                        /**
                         * Creates a plain object from an AdGroupAdAssetPolicySummary message. Also converts values to other types if specified.
                         * @param message AdGroupAdAssetPolicySummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAdAssetPolicySummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdAssetPolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdAssetPolicySummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdLabel. */
                    interface IAdGroupAdLabel {

                        /** AdGroupAdLabel resource_name */
                        resource_name?: (string|null);

                        /** AdGroupAdLabel ad_group_ad */
                        ad_group_ad?: (string|null);

                        /** AdGroupAdLabel label */
                        label?: (string|null);
                    }

                    /** Represents an AdGroupAdLabel. */
                    class AdGroupAdLabel implements IAdGroupAdLabel {

                        /**
                         * Constructs a new AdGroupAdLabel.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAdLabel);

                        /** AdGroupAdLabel resource_name. */
                        public resource_name: string;

                        /** AdGroupAdLabel ad_group_ad. */
                        public ad_group_ad?: (string|null);

                        /** AdGroupAdLabel label. */
                        public label?: (string|null);

                        /**
                         * Creates a new AdGroupAdLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAdLabel): google.ads.googleads.v23.resources.AdGroupAdLabel;

                        /**
                         * Encodes the specified AdGroupAdLabel message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdLabel.verify|verify} messages.
                         * @param message AdGroupAdLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAdLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAdLabel.verify|verify} messages.
                         * @param message AdGroupAdLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAdLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdLabel message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAdLabel;

                        /**
                         * Decodes an AdGroupAdLabel message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAdLabel;

                        /**
                         * Verifies an AdGroupAdLabel message.
                         * @param message Plain 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 AdGroupAdLabel message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdLabel
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAdLabel;

                        /**
                         * Creates a plain object from an AdGroupAdLabel message. Also converts values to other types if specified.
                         * @param message AdGroupAdLabel
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAdLabel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdLabel
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAsset. */
                    interface IAdGroupAsset {

                        /** AdGroupAsset resource_name */
                        resource_name?: (string|null);

                        /** AdGroupAsset ad_group */
                        ad_group?: (string|null);

                        /** AdGroupAsset asset */
                        asset?: (string|null);

                        /** AdGroupAsset field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** AdGroupAsset source */
                        source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** AdGroupAsset status */
                        status?: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|null);

                        /** AdGroupAsset primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|null);

                        /** AdGroupAsset primary_status_details */
                        primary_status_details?: (google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[]|null);

                        /** AdGroupAsset primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[]|null);
                    }

                    /** Represents an AdGroupAsset. */
                    class AdGroupAsset implements IAdGroupAsset {

                        /**
                         * Constructs a new AdGroupAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAsset);

                        /** AdGroupAsset resource_name. */
                        public resource_name: string;

                        /** AdGroupAsset ad_group. */
                        public ad_group: string;

                        /** AdGroupAsset asset. */
                        public asset: string;

                        /** AdGroupAsset field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** AdGroupAsset source. */
                        public source: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource);

                        /** AdGroupAsset status. */
                        public status: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus);

                        /** AdGroupAsset primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus);

                        /** AdGroupAsset primary_status_details. */
                        public primary_status_details: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[];

                        /** AdGroupAsset primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[];

                        /**
                         * Creates a new AdGroupAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAsset): google.ads.googleads.v23.resources.AdGroupAsset;

                        /**
                         * Encodes the specified AdGroupAsset message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAsset.verify|verify} messages.
                         * @param message AdGroupAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAsset.verify|verify} messages.
                         * @param message AdGroupAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAsset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAsset;

                        /**
                         * Decodes an AdGroupAsset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAsset;

                        /**
                         * Verifies an AdGroupAsset message.
                         * @param message Plain 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 AdGroupAsset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAsset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAsset;

                        /**
                         * Creates a plain object from an AdGroupAsset message. Also converts values to other types if specified.
                         * @param message AdGroupAsset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAsset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAsset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAssetSet. */
                    interface IAdGroupAssetSet {

                        /** AdGroupAssetSet resource_name */
                        resource_name?: (string|null);

                        /** AdGroupAssetSet ad_group */
                        ad_group?: (string|null);

                        /** AdGroupAssetSet asset_set */
                        asset_set?: (string|null);

                        /** AdGroupAssetSet status */
                        status?: (google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|null);
                    }

                    /** Represents an AdGroupAssetSet. */
                    class AdGroupAssetSet implements IAdGroupAssetSet {

                        /**
                         * Constructs a new AdGroupAssetSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAssetSet);

                        /** AdGroupAssetSet resource_name. */
                        public resource_name: string;

                        /** AdGroupAssetSet ad_group. */
                        public ad_group: string;

                        /** AdGroupAssetSet asset_set. */
                        public asset_set: string;

                        /** AdGroupAssetSet status. */
                        public status: (google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus);

                        /**
                         * Creates a new AdGroupAssetSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAssetSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAssetSet): google.ads.googleads.v23.resources.AdGroupAssetSet;

                        /**
                         * Encodes the specified AdGroupAssetSet message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAssetSet.verify|verify} messages.
                         * @param message AdGroupAssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAssetSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAssetSet.verify|verify} messages.
                         * @param message AdGroupAssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAssetSet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAssetSet;

                        /**
                         * Decodes an AdGroupAssetSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAssetSet;

                        /**
                         * Verifies an AdGroupAssetSet message.
                         * @param message Plain 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 AdGroupAssetSet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAssetSet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAssetSet;

                        /**
                         * Creates a plain object from an AdGroupAssetSet message. Also converts values to other types if specified.
                         * @param message AdGroupAssetSet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAssetSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAssetSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAssetSet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAudienceView. */
                    interface IAdGroupAudienceView {

                        /** AdGroupAudienceView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an AdGroupAudienceView. */
                    class AdGroupAudienceView implements IAdGroupAudienceView {

                        /**
                         * Constructs a new AdGroupAudienceView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupAudienceView);

                        /** AdGroupAudienceView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new AdGroupAudienceView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAudienceView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupAudienceView): google.ads.googleads.v23.resources.AdGroupAudienceView;

                        /**
                         * Encodes the specified AdGroupAudienceView message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAudienceView.verify|verify} messages.
                         * @param message AdGroupAudienceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupAudienceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAudienceView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupAudienceView.verify|verify} messages.
                         * @param message AdGroupAudienceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupAudienceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAudienceView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAudienceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupAudienceView;

                        /**
                         * Decodes an AdGroupAudienceView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAudienceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupAudienceView;

                        /**
                         * Verifies an AdGroupAudienceView message.
                         * @param message Plain 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 AdGroupAudienceView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAudienceView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupAudienceView;

                        /**
                         * Creates a plain object from an AdGroupAudienceView message. Also converts values to other types if specified.
                         * @param message AdGroupAudienceView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupAudienceView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAudienceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAudienceView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupBidModifier. */
                    interface IAdGroupBidModifier {

                        /** AdGroupBidModifier resource_name */
                        resource_name?: (string|null);

                        /** AdGroupBidModifier ad_group */
                        ad_group?: (string|null);

                        /** AdGroupBidModifier criterion_id */
                        criterion_id?: (number|null);

                        /** AdGroupBidModifier bid_modifier */
                        bid_modifier?: (number|null);

                        /** AdGroupBidModifier base_ad_group */
                        base_ad_group?: (string|null);

                        /** AdGroupBidModifier bid_modifier_source */
                        bid_modifier_source?: (google.ads.googleads.v23.enums.BidModifierSourceEnum.BidModifierSource|keyof typeof google.ads.googleads.v23.enums.BidModifierSourceEnum.BidModifierSource|null);

                        /** AdGroupBidModifier hotel_date_selection_type */
                        hotel_date_selection_type?: (google.ads.googleads.v23.common.IHotelDateSelectionTypeInfo|null);

                        /** AdGroupBidModifier hotel_advance_booking_window */
                        hotel_advance_booking_window?: (google.ads.googleads.v23.common.IHotelAdvanceBookingWindowInfo|null);

                        /** AdGroupBidModifier hotel_length_of_stay */
                        hotel_length_of_stay?: (google.ads.googleads.v23.common.IHotelLengthOfStayInfo|null);

                        /** AdGroupBidModifier hotel_check_in_day */
                        hotel_check_in_day?: (google.ads.googleads.v23.common.IHotelCheckInDayInfo|null);

                        /** AdGroupBidModifier device */
                        device?: (google.ads.googleads.v23.common.IDeviceInfo|null);

                        /** AdGroupBidModifier hotel_check_in_date_range */
                        hotel_check_in_date_range?: (google.ads.googleads.v23.common.IHotelCheckInDateRangeInfo|null);
                    }

                    /** Represents an AdGroupBidModifier. */
                    class AdGroupBidModifier implements IAdGroupBidModifier {

                        /**
                         * Constructs a new AdGroupBidModifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupBidModifier);

                        /** AdGroupBidModifier resource_name. */
                        public resource_name: string;

                        /** AdGroupBidModifier ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupBidModifier criterion_id. */
                        public criterion_id?: (number|null);

                        /** AdGroupBidModifier bid_modifier. */
                        public bid_modifier?: (number|null);

                        /** AdGroupBidModifier base_ad_group. */
                        public base_ad_group?: (string|null);

                        /** AdGroupBidModifier bid_modifier_source. */
                        public bid_modifier_source: (google.ads.googleads.v23.enums.BidModifierSourceEnum.BidModifierSource|keyof typeof google.ads.googleads.v23.enums.BidModifierSourceEnum.BidModifierSource);

                        /** AdGroupBidModifier hotel_date_selection_type. */
                        public hotel_date_selection_type?: (google.ads.googleads.v23.common.IHotelDateSelectionTypeInfo|null);

                        /** AdGroupBidModifier hotel_advance_booking_window. */
                        public hotel_advance_booking_window?: (google.ads.googleads.v23.common.IHotelAdvanceBookingWindowInfo|null);

                        /** AdGroupBidModifier hotel_length_of_stay. */
                        public hotel_length_of_stay?: (google.ads.googleads.v23.common.IHotelLengthOfStayInfo|null);

                        /** AdGroupBidModifier hotel_check_in_day. */
                        public hotel_check_in_day?: (google.ads.googleads.v23.common.IHotelCheckInDayInfo|null);

                        /** AdGroupBidModifier device. */
                        public device?: (google.ads.googleads.v23.common.IDeviceInfo|null);

                        /** AdGroupBidModifier hotel_check_in_date_range. */
                        public hotel_check_in_date_range?: (google.ads.googleads.v23.common.IHotelCheckInDateRangeInfo|null);

                        /** AdGroupBidModifier criterion. */
                        public criterion?: ("hotel_date_selection_type"|"hotel_advance_booking_window"|"hotel_length_of_stay"|"hotel_check_in_day"|"device"|"hotel_check_in_date_range");

                        /**
                         * Creates a new AdGroupBidModifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupBidModifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupBidModifier): google.ads.googleads.v23.resources.AdGroupBidModifier;

                        /**
                         * Encodes the specified AdGroupBidModifier message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupBidModifier.verify|verify} messages.
                         * @param message AdGroupBidModifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupBidModifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupBidModifier.verify|verify} messages.
                         * @param message AdGroupBidModifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupBidModifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupBidModifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupBidModifier;

                        /**
                         * Decodes an AdGroupBidModifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupBidModifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupBidModifier;

                        /**
                         * Verifies an AdGroupBidModifier message.
                         * @param message Plain 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 AdGroupBidModifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupBidModifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupBidModifier;

                        /**
                         * Creates a plain object from an AdGroupBidModifier message. Also converts values to other types if specified.
                         * @param message AdGroupBidModifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupBidModifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupBidModifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupBidModifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCriterion. */
                    interface IAdGroupCriterion {

                        /** AdGroupCriterion resource_name */
                        resource_name?: (string|null);

                        /** AdGroupCriterion criterion_id */
                        criterion_id?: (number|null);

                        /** AdGroupCriterion display_name */
                        display_name?: (string|null);

                        /** AdGroupCriterion status */
                        status?: (google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus|null);

                        /** AdGroupCriterion quality_info */
                        quality_info?: (google.ads.googleads.v23.resources.AdGroupCriterion.IQualityInfo|null);

                        /** AdGroupCriterion ad_group */
                        ad_group?: (string|null);

                        /** AdGroupCriterion type */
                        type?: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|null);

                        /** AdGroupCriterion negative */
                        negative?: (boolean|null);

                        /** AdGroupCriterion system_serving_status */
                        system_serving_status?: (google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus|keyof typeof google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus|null);

                        /** AdGroupCriterion approval_status */
                        approval_status?: (google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus|null);

                        /** AdGroupCriterion disapproval_reasons */
                        disapproval_reasons?: (string[]|null);

                        /** AdGroupCriterion labels */
                        labels?: (string[]|null);

                        /** AdGroupCriterion bid_modifier */
                        bid_modifier?: (number|null);

                        /** AdGroupCriterion cpc_bid_micros */
                        cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion cpm_bid_micros */
                        cpm_bid_micros?: (number|null);

                        /** AdGroupCriterion cpv_bid_micros */
                        cpv_bid_micros?: (number|null);

                        /** AdGroupCriterion percent_cpc_bid_micros */
                        percent_cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpc_bid_micros */
                        effective_cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpm_bid_micros */
                        effective_cpm_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpv_bid_micros */
                        effective_cpv_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_percent_cpc_bid_micros */
                        effective_percent_cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpc_bid_source */
                        effective_cpc_bid_source?: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion effective_cpm_bid_source */
                        effective_cpm_bid_source?: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion effective_cpv_bid_source */
                        effective_cpv_bid_source?: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion effective_percent_cpc_bid_source */
                        effective_percent_cpc_bid_source?: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion position_estimates */
                        position_estimates?: (google.ads.googleads.v23.resources.AdGroupCriterion.IPositionEstimates|null);

                        /** AdGroupCriterion final_urls */
                        final_urls?: (string[]|null);

                        /** AdGroupCriterion final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** AdGroupCriterion final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** AdGroupCriterion tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** AdGroupCriterion url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v23.common.ICustomParameter[]|null);

                        /** AdGroupCriterion primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum.AdGroupCriterionPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum.AdGroupCriterionPrimaryStatus|null);

                        /** AdGroupCriterion primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum.AdGroupCriterionPrimaryStatusReason[]|null);

                        /** AdGroupCriterion keyword */
                        keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** AdGroupCriterion placement */
                        placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** AdGroupCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** AdGroupCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** AdGroupCriterion listing_group */
                        listing_group?: (google.ads.googleads.v23.common.IListingGroupInfo|null);

                        /** AdGroupCriterion age_range */
                        age_range?: (google.ads.googleads.v23.common.IAgeRangeInfo|null);

                        /** AdGroupCriterion gender */
                        gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** AdGroupCriterion income_range */
                        income_range?: (google.ads.googleads.v23.common.IIncomeRangeInfo|null);

                        /** AdGroupCriterion parental_status */
                        parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** AdGroupCriterion user_list */
                        user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** AdGroupCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** AdGroupCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** AdGroupCriterion topic */
                        topic?: (google.ads.googleads.v23.common.ITopicInfo|null);

                        /** AdGroupCriterion user_interest */
                        user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** AdGroupCriterion webpage */
                        webpage?: (google.ads.googleads.v23.common.IWebpageInfo|null);

                        /** AdGroupCriterion app_payment_model */
                        app_payment_model?: (google.ads.googleads.v23.common.IAppPaymentModelInfo|null);

                        /** AdGroupCriterion custom_affinity */
                        custom_affinity?: (google.ads.googleads.v23.common.ICustomAffinityInfo|null);

                        /** AdGroupCriterion custom_intent */
                        custom_intent?: (google.ads.googleads.v23.common.ICustomIntentInfo|null);

                        /** AdGroupCriterion custom_audience */
                        custom_audience?: (google.ads.googleads.v23.common.ICustomAudienceInfo|null);

                        /** AdGroupCriterion combined_audience */
                        combined_audience?: (google.ads.googleads.v23.common.ICombinedAudienceInfo|null);

                        /** AdGroupCriterion audience */
                        audience?: (google.ads.googleads.v23.common.IAudienceInfo|null);

                        /** AdGroupCriterion location */
                        location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** AdGroupCriterion language */
                        language?: (google.ads.googleads.v23.common.ILanguageInfo|null);

                        /** AdGroupCriterion life_event */
                        life_event?: (google.ads.googleads.v23.common.ILifeEventInfo|null);

                        /** AdGroupCriterion video_lineup */
                        video_lineup?: (google.ads.googleads.v23.common.IVideoLineupInfo|null);

                        /** AdGroupCriterion extended_demographic */
                        extended_demographic?: (google.ads.googleads.v23.common.IExtendedDemographicInfo|null);

                        /** AdGroupCriterion brand_list */
                        brand_list?: (google.ads.googleads.v23.common.IBrandListInfo|null);

                        /** AdGroupCriterion vertical_ads_item_group_rule_list */
                        vertical_ads_item_group_rule_list?: (google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleListInfo|null);
                    }

                    /** Represents an AdGroupCriterion. */
                    class AdGroupCriterion implements IAdGroupCriterion {

                        /**
                         * Constructs a new AdGroupCriterion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupCriterion);

                        /** AdGroupCriterion resource_name. */
                        public resource_name: string;

                        /** AdGroupCriterion criterion_id. */
                        public criterion_id?: (number|null);

                        /** AdGroupCriterion display_name. */
                        public display_name: string;

                        /** AdGroupCriterion status. */
                        public status: (google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus);

                        /** AdGroupCriterion quality_info. */
                        public quality_info?: (google.ads.googleads.v23.resources.AdGroupCriterion.IQualityInfo|null);

                        /** AdGroupCriterion ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupCriterion type. */
                        public type: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType);

                        /** AdGroupCriterion negative. */
                        public negative?: (boolean|null);

                        /** AdGroupCriterion system_serving_status. */
                        public system_serving_status: (google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus|keyof typeof google.ads.googleads.v23.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus);

                        /** AdGroupCriterion approval_status. */
                        public approval_status: (google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus);

                        /** AdGroupCriterion disapproval_reasons. */
                        public disapproval_reasons: string[];

                        /** AdGroupCriterion labels. */
                        public labels: string[];

                        /** AdGroupCriterion bid_modifier. */
                        public bid_modifier?: (number|null);

                        /** AdGroupCriterion cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion cpm_bid_micros. */
                        public cpm_bid_micros?: (number|null);

                        /** AdGroupCriterion cpv_bid_micros. */
                        public cpv_bid_micros?: (number|null);

                        /** AdGroupCriterion percent_cpc_bid_micros. */
                        public percent_cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpc_bid_micros. */
                        public effective_cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpm_bid_micros. */
                        public effective_cpm_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpv_bid_micros. */
                        public effective_cpv_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_percent_cpc_bid_micros. */
                        public effective_percent_cpc_bid_micros?: (number|null);

                        /** AdGroupCriterion effective_cpc_bid_source. */
                        public effective_cpc_bid_source: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion effective_cpm_bid_source. */
                        public effective_cpm_bid_source: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion effective_cpv_bid_source. */
                        public effective_cpv_bid_source: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion effective_percent_cpc_bid_source. */
                        public effective_percent_cpc_bid_source: (google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v23.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion position_estimates. */
                        public position_estimates?: (google.ads.googleads.v23.resources.AdGroupCriterion.IPositionEstimates|null);

                        /** AdGroupCriterion final_urls. */
                        public final_urls: string[];

                        /** AdGroupCriterion final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** AdGroupCriterion final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** AdGroupCriterion tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** AdGroupCriterion url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v23.common.ICustomParameter[];

                        /** AdGroupCriterion primary_status. */
                        public primary_status?: (google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum.AdGroupCriterionPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusEnum.AdGroupCriterionPrimaryStatus|null);

                        /** AdGroupCriterion primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AdGroupCriterionPrimaryStatusReasonEnum.AdGroupCriterionPrimaryStatusReason[];

                        /** AdGroupCriterion keyword. */
                        public keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** AdGroupCriterion placement. */
                        public placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** AdGroupCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** AdGroupCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** AdGroupCriterion listing_group. */
                        public listing_group?: (google.ads.googleads.v23.common.IListingGroupInfo|null);

                        /** AdGroupCriterion age_range. */
                        public age_range?: (google.ads.googleads.v23.common.IAgeRangeInfo|null);

                        /** AdGroupCriterion gender. */
                        public gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** AdGroupCriterion income_range. */
                        public income_range?: (google.ads.googleads.v23.common.IIncomeRangeInfo|null);

                        /** AdGroupCriterion parental_status. */
                        public parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** AdGroupCriterion user_list. */
                        public user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** AdGroupCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** AdGroupCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** AdGroupCriterion topic. */
                        public topic?: (google.ads.googleads.v23.common.ITopicInfo|null);

                        /** AdGroupCriterion user_interest. */
                        public user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** AdGroupCriterion webpage. */
                        public webpage?: (google.ads.googleads.v23.common.IWebpageInfo|null);

                        /** AdGroupCriterion app_payment_model. */
                        public app_payment_model?: (google.ads.googleads.v23.common.IAppPaymentModelInfo|null);

                        /** AdGroupCriterion custom_affinity. */
                        public custom_affinity?: (google.ads.googleads.v23.common.ICustomAffinityInfo|null);

                        /** AdGroupCriterion custom_intent. */
                        public custom_intent?: (google.ads.googleads.v23.common.ICustomIntentInfo|null);

                        /** AdGroupCriterion custom_audience. */
                        public custom_audience?: (google.ads.googleads.v23.common.ICustomAudienceInfo|null);

                        /** AdGroupCriterion combined_audience. */
                        public combined_audience?: (google.ads.googleads.v23.common.ICombinedAudienceInfo|null);

                        /** AdGroupCriterion audience. */
                        public audience?: (google.ads.googleads.v23.common.IAudienceInfo|null);

                        /** AdGroupCriterion location. */
                        public location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** AdGroupCriterion language. */
                        public language?: (google.ads.googleads.v23.common.ILanguageInfo|null);

                        /** AdGroupCriterion life_event. */
                        public life_event?: (google.ads.googleads.v23.common.ILifeEventInfo|null);

                        /** AdGroupCriterion video_lineup. */
                        public video_lineup?: (google.ads.googleads.v23.common.IVideoLineupInfo|null);

                        /** AdGroupCriterion extended_demographic. */
                        public extended_demographic?: (google.ads.googleads.v23.common.IExtendedDemographicInfo|null);

                        /** AdGroupCriterion brand_list. */
                        public brand_list?: (google.ads.googleads.v23.common.IBrandListInfo|null);

                        /** AdGroupCriterion vertical_ads_item_group_rule_list. */
                        public vertical_ads_item_group_rule_list?: (google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleListInfo|null);

                        /** AdGroupCriterion criterion. */
                        public criterion?: ("keyword"|"placement"|"mobile_app_category"|"mobile_application"|"listing_group"|"age_range"|"gender"|"income_range"|"parental_status"|"user_list"|"youtube_video"|"youtube_channel"|"topic"|"user_interest"|"webpage"|"app_payment_model"|"custom_affinity"|"custom_intent"|"custom_audience"|"combined_audience"|"audience"|"location"|"language"|"life_event"|"video_lineup"|"extended_demographic"|"brand_list"|"vertical_ads_item_group_rule_list");

                        /**
                         * Creates a new AdGroupCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupCriterion): google.ads.googleads.v23.resources.AdGroupCriterion;

                        /**
                         * Encodes the specified AdGroupCriterion message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterion.verify|verify} messages.
                         * @param message AdGroupCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterion.verify|verify} messages.
                         * @param message AdGroupCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupCriterion;

                        /**
                         * Decodes an AdGroupCriterion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupCriterion;

                        /**
                         * Verifies an AdGroupCriterion message.
                         * @param message Plain 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 AdGroupCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupCriterion;

                        /**
                         * Creates a plain object from an AdGroupCriterion message. Also converts values to other types if specified.
                         * @param message AdGroupCriterion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupCriterion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdGroupCriterion {

                        /** Properties of a QualityInfo. */
                        interface IQualityInfo {

                            /** QualityInfo quality_score */
                            quality_score?: (number|null);

                            /** QualityInfo creative_quality_score */
                            creative_quality_score?: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                            /** QualityInfo post_click_quality_score */
                            post_click_quality_score?: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                            /** QualityInfo search_predicted_ctr */
                            search_predicted_ctr?: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|null);
                        }

                        /** Represents a QualityInfo. */
                        class QualityInfo implements IQualityInfo {

                            /**
                             * Constructs a new QualityInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdGroupCriterion.IQualityInfo);

                            /** QualityInfo quality_score. */
                            public quality_score?: (number|null);

                            /** QualityInfo creative_quality_score. */
                            public creative_quality_score: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket);

                            /** QualityInfo post_click_quality_score. */
                            public post_click_quality_score: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket);

                            /** QualityInfo search_predicted_ctr. */
                            public search_predicted_ctr: (google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v23.enums.QualityScoreBucketEnum.QualityScoreBucket);

                            /**
                             * Creates a new QualityInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns QualityInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdGroupCriterion.IQualityInfo): google.ads.googleads.v23.resources.AdGroupCriterion.QualityInfo;

                            /**
                             * Encodes the specified QualityInfo message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterion.QualityInfo.verify|verify} messages.
                             * @param message QualityInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdGroupCriterion.IQualityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified QualityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterion.QualityInfo.verify|verify} messages.
                             * @param message QualityInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroupCriterion.IQualityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a QualityInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns QualityInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupCriterion.QualityInfo;

                            /**
                             * Decodes a QualityInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns QualityInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupCriterion.QualityInfo;

                            /**
                             * Verifies a QualityInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a QualityInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns QualityInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupCriterion.QualityInfo;

                            /**
                             * Creates a plain object from a QualityInfo message. Also converts values to other types if specified.
                             * @param message QualityInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdGroupCriterion.QualityInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this QualityInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for QualityInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a PositionEstimates. */
                        interface IPositionEstimates {

                            /** PositionEstimates first_page_cpc_micros */
                            first_page_cpc_micros?: (number|null);

                            /** PositionEstimates first_position_cpc_micros */
                            first_position_cpc_micros?: (number|null);

                            /** PositionEstimates top_of_page_cpc_micros */
                            top_of_page_cpc_micros?: (number|null);

                            /** PositionEstimates estimated_add_clicks_at_first_position_cpc */
                            estimated_add_clicks_at_first_position_cpc?: (number|null);

                            /** PositionEstimates estimated_add_cost_at_first_position_cpc */
                            estimated_add_cost_at_first_position_cpc?: (number|null);
                        }

                        /** Represents a PositionEstimates. */
                        class PositionEstimates implements IPositionEstimates {

                            /**
                             * Constructs a new PositionEstimates.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdGroupCriterion.IPositionEstimates);

                            /** PositionEstimates first_page_cpc_micros. */
                            public first_page_cpc_micros?: (number|null);

                            /** PositionEstimates first_position_cpc_micros. */
                            public first_position_cpc_micros?: (number|null);

                            /** PositionEstimates top_of_page_cpc_micros. */
                            public top_of_page_cpc_micros?: (number|null);

                            /** PositionEstimates estimated_add_clicks_at_first_position_cpc. */
                            public estimated_add_clicks_at_first_position_cpc?: (number|null);

                            /** PositionEstimates estimated_add_cost_at_first_position_cpc. */
                            public estimated_add_cost_at_first_position_cpc?: (number|null);

                            /**
                             * Creates a new PositionEstimates instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PositionEstimates instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdGroupCriterion.IPositionEstimates): google.ads.googleads.v23.resources.AdGroupCriterion.PositionEstimates;

                            /**
                             * Encodes the specified PositionEstimates message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterion.PositionEstimates.verify|verify} messages.
                             * @param message PositionEstimates message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdGroupCriterion.IPositionEstimates, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PositionEstimates message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterion.PositionEstimates.verify|verify} messages.
                             * @param message PositionEstimates message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdGroupCriterion.IPositionEstimates, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PositionEstimates message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PositionEstimates
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupCriterion.PositionEstimates;

                            /**
                             * Decodes a PositionEstimates message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PositionEstimates
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupCriterion.PositionEstimates;

                            /**
                             * Verifies a PositionEstimates message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PositionEstimates message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PositionEstimates
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupCriterion.PositionEstimates;

                            /**
                             * Creates a plain object from a PositionEstimates message. Also converts values to other types if specified.
                             * @param message PositionEstimates
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdGroupCriterion.PositionEstimates, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PositionEstimates to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PositionEstimates
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an AdGroupCriterionCustomizer. */
                    interface IAdGroupCriterionCustomizer {

                        /** AdGroupCriterionCustomizer resource_name */
                        resource_name?: (string|null);

                        /** AdGroupCriterionCustomizer ad_group_criterion */
                        ad_group_criterion?: (string|null);

                        /** AdGroupCriterionCustomizer customizer_attribute */
                        customizer_attribute?: (string|null);

                        /** AdGroupCriterionCustomizer status */
                        status?: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|null);

                        /** AdGroupCriterionCustomizer value */
                        value?: (google.ads.googleads.v23.common.ICustomizerValue|null);
                    }

                    /** Represents an AdGroupCriterionCustomizer. */
                    class AdGroupCriterionCustomizer implements IAdGroupCriterionCustomizer {

                        /**
                         * Constructs a new AdGroupCriterionCustomizer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer);

                        /** AdGroupCriterionCustomizer resource_name. */
                        public resource_name: string;

                        /** AdGroupCriterionCustomizer ad_group_criterion. */
                        public ad_group_criterion?: (string|null);

                        /** AdGroupCriterionCustomizer customizer_attribute. */
                        public customizer_attribute: string;

                        /** AdGroupCriterionCustomizer status. */
                        public status: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus);

                        /** AdGroupCriterionCustomizer value. */
                        public value?: (google.ads.googleads.v23.common.ICustomizerValue|null);

                        /**
                         * Creates a new AdGroupCriterionCustomizer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionCustomizer instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer): google.ads.googleads.v23.resources.AdGroupCriterionCustomizer;

                        /**
                         * Encodes the specified AdGroupCriterionCustomizer message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterionCustomizer.verify|verify} messages.
                         * @param message AdGroupCriterionCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionCustomizer message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterionCustomizer.verify|verify} messages.
                         * @param message AdGroupCriterionCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionCustomizer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupCriterionCustomizer;

                        /**
                         * Decodes an AdGroupCriterionCustomizer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupCriterionCustomizer;

                        /**
                         * Verifies an AdGroupCriterionCustomizer message.
                         * @param message Plain 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 AdGroupCriterionCustomizer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionCustomizer
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupCriterionCustomizer;

                        /**
                         * Creates a plain object from an AdGroupCriterionCustomizer message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionCustomizer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupCriterionCustomizer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionCustomizer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionCustomizer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCriterionLabel. */
                    interface IAdGroupCriterionLabel {

                        /** AdGroupCriterionLabel resource_name */
                        resource_name?: (string|null);

                        /** AdGroupCriterionLabel ad_group_criterion */
                        ad_group_criterion?: (string|null);

                        /** AdGroupCriterionLabel label */
                        label?: (string|null);
                    }

                    /** Represents an AdGroupCriterionLabel. */
                    class AdGroupCriterionLabel implements IAdGroupCriterionLabel {

                        /**
                         * Constructs a new AdGroupCriterionLabel.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupCriterionLabel);

                        /** AdGroupCriterionLabel resource_name. */
                        public resource_name: string;

                        /** AdGroupCriterionLabel ad_group_criterion. */
                        public ad_group_criterion?: (string|null);

                        /** AdGroupCriterionLabel label. */
                        public label?: (string|null);

                        /**
                         * Creates a new AdGroupCriterionLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupCriterionLabel): google.ads.googleads.v23.resources.AdGroupCriterionLabel;

                        /**
                         * Encodes the specified AdGroupCriterionLabel message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterionLabel.verify|verify} messages.
                         * @param message AdGroupCriterionLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupCriterionLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterionLabel.verify|verify} messages.
                         * @param message AdGroupCriterionLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupCriterionLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionLabel message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupCriterionLabel;

                        /**
                         * Decodes an AdGroupCriterionLabel message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupCriterionLabel;

                        /**
                         * Verifies an AdGroupCriterionLabel message.
                         * @param message Plain 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 AdGroupCriterionLabel message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionLabel
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupCriterionLabel;

                        /**
                         * Creates a plain object from an AdGroupCriterionLabel message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionLabel
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupCriterionLabel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionLabel
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCriterionSimulation. */
                    interface IAdGroupCriterionSimulation {

                        /** AdGroupCriterionSimulation resource_name */
                        resource_name?: (string|null);

                        /** AdGroupCriterionSimulation ad_group_id */
                        ad_group_id?: (number|null);

                        /** AdGroupCriterionSimulation criterion_id */
                        criterion_id?: (number|null);

                        /** AdGroupCriterionSimulation type */
                        type?: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|null);

                        /** AdGroupCriterionSimulation modification_method */
                        modification_method?: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|null);

                        /** AdGroupCriterionSimulation start_date */
                        start_date?: (string|null);

                        /** AdGroupCriterionSimulation end_date */
                        end_date?: (string|null);

                        /** AdGroupCriterionSimulation cpc_bid_point_list */
                        cpc_bid_point_list?: (google.ads.googleads.v23.common.ICpcBidSimulationPointList|null);

                        /** AdGroupCriterionSimulation percent_cpc_bid_point_list */
                        percent_cpc_bid_point_list?: (google.ads.googleads.v23.common.IPercentCpcBidSimulationPointList|null);
                    }

                    /** Represents an AdGroupCriterionSimulation. */
                    class AdGroupCriterionSimulation implements IAdGroupCriterionSimulation {

                        /**
                         * Constructs a new AdGroupCriterionSimulation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupCriterionSimulation);

                        /** AdGroupCriterionSimulation resource_name. */
                        public resource_name: string;

                        /** AdGroupCriterionSimulation ad_group_id. */
                        public ad_group_id?: (number|null);

                        /** AdGroupCriterionSimulation criterion_id. */
                        public criterion_id?: (number|null);

                        /** AdGroupCriterionSimulation type. */
                        public type: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType);

                        /** AdGroupCriterionSimulation modification_method. */
                        public modification_method: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod);

                        /** AdGroupCriterionSimulation start_date. */
                        public start_date?: (string|null);

                        /** AdGroupCriterionSimulation end_date. */
                        public end_date?: (string|null);

                        /** AdGroupCriterionSimulation cpc_bid_point_list. */
                        public cpc_bid_point_list?: (google.ads.googleads.v23.common.ICpcBidSimulationPointList|null);

                        /** AdGroupCriterionSimulation percent_cpc_bid_point_list. */
                        public percent_cpc_bid_point_list?: (google.ads.googleads.v23.common.IPercentCpcBidSimulationPointList|null);

                        /** AdGroupCriterionSimulation point_list. */
                        public point_list?: ("cpc_bid_point_list"|"percent_cpc_bid_point_list");

                        /**
                         * Creates a new AdGroupCriterionSimulation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionSimulation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupCriterionSimulation): google.ads.googleads.v23.resources.AdGroupCriterionSimulation;

                        /**
                         * Encodes the specified AdGroupCriterionSimulation message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterionSimulation.verify|verify} messages.
                         * @param message AdGroupCriterionSimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupCriterionSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionSimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCriterionSimulation.verify|verify} messages.
                         * @param message AdGroupCriterionSimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupCriterionSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionSimulation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupCriterionSimulation;

                        /**
                         * Decodes an AdGroupCriterionSimulation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupCriterionSimulation;

                        /**
                         * Verifies an AdGroupCriterionSimulation message.
                         * @param message Plain 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 AdGroupCriterionSimulation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionSimulation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupCriterionSimulation;

                        /**
                         * Creates a plain object from an AdGroupCriterionSimulation message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionSimulation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupCriterionSimulation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionSimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionSimulation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCustomizer. */
                    interface IAdGroupCustomizer {

                        /** AdGroupCustomizer resource_name */
                        resource_name?: (string|null);

                        /** AdGroupCustomizer ad_group */
                        ad_group?: (string|null);

                        /** AdGroupCustomizer customizer_attribute */
                        customizer_attribute?: (string|null);

                        /** AdGroupCustomizer status */
                        status?: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|null);

                        /** AdGroupCustomizer value */
                        value?: (google.ads.googleads.v23.common.ICustomizerValue|null);
                    }

                    /** Represents an AdGroupCustomizer. */
                    class AdGroupCustomizer implements IAdGroupCustomizer {

                        /**
                         * Constructs a new AdGroupCustomizer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupCustomizer);

                        /** AdGroupCustomizer resource_name. */
                        public resource_name: string;

                        /** AdGroupCustomizer ad_group. */
                        public ad_group: string;

                        /** AdGroupCustomizer customizer_attribute. */
                        public customizer_attribute: string;

                        /** AdGroupCustomizer status. */
                        public status: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus);

                        /** AdGroupCustomizer value. */
                        public value?: (google.ads.googleads.v23.common.ICustomizerValue|null);

                        /**
                         * Creates a new AdGroupCustomizer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCustomizer instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupCustomizer): google.ads.googleads.v23.resources.AdGroupCustomizer;

                        /**
                         * Encodes the specified AdGroupCustomizer message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCustomizer.verify|verify} messages.
                         * @param message AdGroupCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCustomizer message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupCustomizer.verify|verify} messages.
                         * @param message AdGroupCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCustomizer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupCustomizer;

                        /**
                         * Decodes an AdGroupCustomizer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupCustomizer;

                        /**
                         * Verifies an AdGroupCustomizer message.
                         * @param message Plain 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 AdGroupCustomizer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCustomizer
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupCustomizer;

                        /**
                         * Creates a plain object from an AdGroupCustomizer message. Also converts values to other types if specified.
                         * @param message AdGroupCustomizer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupCustomizer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCustomizer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCustomizer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupLabel. */
                    interface IAdGroupLabel {

                        /** AdGroupLabel resource_name */
                        resource_name?: (string|null);

                        /** AdGroupLabel ad_group */
                        ad_group?: (string|null);

                        /** AdGroupLabel label */
                        label?: (string|null);
                    }

                    /** Represents an AdGroupLabel. */
                    class AdGroupLabel implements IAdGroupLabel {

                        /**
                         * Constructs a new AdGroupLabel.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupLabel);

                        /** AdGroupLabel resource_name. */
                        public resource_name: string;

                        /** AdGroupLabel ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupLabel label. */
                        public label?: (string|null);

                        /**
                         * Creates a new AdGroupLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupLabel): google.ads.googleads.v23.resources.AdGroupLabel;

                        /**
                         * Encodes the specified AdGroupLabel message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupLabel.verify|verify} messages.
                         * @param message AdGroupLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupLabel.verify|verify} messages.
                         * @param message AdGroupLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupLabel message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupLabel;

                        /**
                         * Decodes an AdGroupLabel message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupLabel;

                        /**
                         * Verifies an AdGroupLabel message.
                         * @param message Plain 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 AdGroupLabel message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupLabel
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupLabel;

                        /**
                         * Creates a plain object from an AdGroupLabel message. Also converts values to other types if specified.
                         * @param message AdGroupLabel
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupLabel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupLabel
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupSimulation. */
                    interface IAdGroupSimulation {

                        /** AdGroupSimulation resource_name */
                        resource_name?: (string|null);

                        /** AdGroupSimulation ad_group_id */
                        ad_group_id?: (number|null);

                        /** AdGroupSimulation type */
                        type?: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|null);

                        /** AdGroupSimulation modification_method */
                        modification_method?: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|null);

                        /** AdGroupSimulation start_date */
                        start_date?: (string|null);

                        /** AdGroupSimulation end_date */
                        end_date?: (string|null);

                        /** AdGroupSimulation cpc_bid_point_list */
                        cpc_bid_point_list?: (google.ads.googleads.v23.common.ICpcBidSimulationPointList|null);

                        /** AdGroupSimulation cpv_bid_point_list */
                        cpv_bid_point_list?: (google.ads.googleads.v23.common.ICpvBidSimulationPointList|null);

                        /** AdGroupSimulation target_cpa_point_list */
                        target_cpa_point_list?: (google.ads.googleads.v23.common.ITargetCpaSimulationPointList|null);

                        /** AdGroupSimulation target_roas_point_list */
                        target_roas_point_list?: (google.ads.googleads.v23.common.ITargetRoasSimulationPointList|null);
                    }

                    /** Represents an AdGroupSimulation. */
                    class AdGroupSimulation implements IAdGroupSimulation {

                        /**
                         * Constructs a new AdGroupSimulation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdGroupSimulation);

                        /** AdGroupSimulation resource_name. */
                        public resource_name: string;

                        /** AdGroupSimulation ad_group_id. */
                        public ad_group_id?: (number|null);

                        /** AdGroupSimulation type. */
                        public type: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType);

                        /** AdGroupSimulation modification_method. */
                        public modification_method: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod);

                        /** AdGroupSimulation start_date. */
                        public start_date?: (string|null);

                        /** AdGroupSimulation end_date. */
                        public end_date?: (string|null);

                        /** AdGroupSimulation cpc_bid_point_list. */
                        public cpc_bid_point_list?: (google.ads.googleads.v23.common.ICpcBidSimulationPointList|null);

                        /** AdGroupSimulation cpv_bid_point_list. */
                        public cpv_bid_point_list?: (google.ads.googleads.v23.common.ICpvBidSimulationPointList|null);

                        /** AdGroupSimulation target_cpa_point_list. */
                        public target_cpa_point_list?: (google.ads.googleads.v23.common.ITargetCpaSimulationPointList|null);

                        /** AdGroupSimulation target_roas_point_list. */
                        public target_roas_point_list?: (google.ads.googleads.v23.common.ITargetRoasSimulationPointList|null);

                        /** AdGroupSimulation point_list. */
                        public point_list?: ("cpc_bid_point_list"|"cpv_bid_point_list"|"target_cpa_point_list"|"target_roas_point_list");

                        /**
                         * Creates a new AdGroupSimulation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupSimulation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdGroupSimulation): google.ads.googleads.v23.resources.AdGroupSimulation;

                        /**
                         * Encodes the specified AdGroupSimulation message. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupSimulation.verify|verify} messages.
                         * @param message AdGroupSimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdGroupSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupSimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdGroupSimulation.verify|verify} messages.
                         * @param message AdGroupSimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdGroupSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupSimulation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdGroupSimulation;

                        /**
                         * Decodes an AdGroupSimulation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdGroupSimulation;

                        /**
                         * Verifies an AdGroupSimulation message.
                         * @param message Plain 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 AdGroupSimulation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupSimulation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdGroupSimulation;

                        /**
                         * Creates a plain object from an AdGroupSimulation message. Also converts values to other types if specified.
                         * @param message AdGroupSimulation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdGroupSimulation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupSimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupSimulation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdParameter. */
                    interface IAdParameter {

                        /** AdParameter resource_name */
                        resource_name?: (string|null);

                        /** AdParameter ad_group_criterion */
                        ad_group_criterion?: (string|null);

                        /** AdParameter parameter_index */
                        parameter_index?: (number|null);

                        /** AdParameter insertion_text */
                        insertion_text?: (string|null);
                    }

                    /** Represents an AdParameter. */
                    class AdParameter implements IAdParameter {

                        /**
                         * Constructs a new AdParameter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdParameter);

                        /** AdParameter resource_name. */
                        public resource_name: string;

                        /** AdParameter ad_group_criterion. */
                        public ad_group_criterion?: (string|null);

                        /** AdParameter parameter_index. */
                        public parameter_index?: (number|null);

                        /** AdParameter insertion_text. */
                        public insertion_text?: (string|null);

                        /**
                         * Creates a new AdParameter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdParameter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdParameter): google.ads.googleads.v23.resources.AdParameter;

                        /**
                         * Encodes the specified AdParameter message. Does not implicitly {@link google.ads.googleads.v23.resources.AdParameter.verify|verify} messages.
                         * @param message AdParameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdParameter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdParameter.verify|verify} messages.
                         * @param message AdParameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdParameter message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdParameter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdParameter;

                        /**
                         * Decodes an AdParameter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdParameter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdParameter;

                        /**
                         * Verifies an AdParameter message.
                         * @param message Plain 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 AdParameter message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdParameter
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdParameter;

                        /**
                         * Creates a plain object from an AdParameter message. Also converts values to other types if specified.
                         * @param message AdParameter
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdParameter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdParameter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdParameter
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdScheduleView. */
                    interface IAdScheduleView {

                        /** AdScheduleView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an AdScheduleView. */
                    class AdScheduleView implements IAdScheduleView {

                        /**
                         * Constructs a new AdScheduleView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdScheduleView);

                        /** AdScheduleView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new AdScheduleView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdScheduleView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdScheduleView): google.ads.googleads.v23.resources.AdScheduleView;

                        /**
                         * Encodes the specified AdScheduleView message. Does not implicitly {@link google.ads.googleads.v23.resources.AdScheduleView.verify|verify} messages.
                         * @param message AdScheduleView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdScheduleView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdScheduleView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdScheduleView.verify|verify} messages.
                         * @param message AdScheduleView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdScheduleView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdScheduleView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdScheduleView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdScheduleView;

                        /**
                         * Decodes an AdScheduleView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdScheduleView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdScheduleView;

                        /**
                         * Verifies an AdScheduleView message.
                         * @param message Plain 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 AdScheduleView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdScheduleView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdScheduleView;

                        /**
                         * Creates a plain object from an AdScheduleView message. Also converts values to other types if specified.
                         * @param message AdScheduleView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdScheduleView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdScheduleView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdScheduleView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AgeRangeView. */
                    interface IAgeRangeView {

                        /** AgeRangeView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an AgeRangeView. */
                    class AgeRangeView implements IAgeRangeView {

                        /**
                         * Constructs a new AgeRangeView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAgeRangeView);

                        /** AgeRangeView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new AgeRangeView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AgeRangeView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAgeRangeView): google.ads.googleads.v23.resources.AgeRangeView;

                        /**
                         * Encodes the specified AgeRangeView message. Does not implicitly {@link google.ads.googleads.v23.resources.AgeRangeView.verify|verify} messages.
                         * @param message AgeRangeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAgeRangeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AgeRangeView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AgeRangeView.verify|verify} messages.
                         * @param message AgeRangeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAgeRangeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeRangeView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AgeRangeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AgeRangeView;

                        /**
                         * Decodes an AgeRangeView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AgeRangeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AgeRangeView;

                        /**
                         * Verifies an AgeRangeView message.
                         * @param message Plain 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 AgeRangeView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AgeRangeView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AgeRangeView;

                        /**
                         * Creates a plain object from an AgeRangeView message. Also converts values to other types if specified.
                         * @param message AgeRangeView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AgeRangeView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AgeRangeView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AgeRangeView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AiMaxSearchTermAdCombinationView. */
                    interface IAiMaxSearchTermAdCombinationView {

                        /** AiMaxSearchTermAdCombinationView resource_name */
                        resource_name?: (string|null);

                        /** AiMaxSearchTermAdCombinationView ad_group */
                        ad_group?: (string|null);

                        /** AiMaxSearchTermAdCombinationView search_term */
                        search_term?: (string|null);

                        /** AiMaxSearchTermAdCombinationView landing_page */
                        landing_page?: (string|null);

                        /** AiMaxSearchTermAdCombinationView headline */
                        headline?: (string|null);
                    }

                    /** Represents an AiMaxSearchTermAdCombinationView. */
                    class AiMaxSearchTermAdCombinationView implements IAiMaxSearchTermAdCombinationView {

                        /**
                         * Constructs a new AiMaxSearchTermAdCombinationView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAiMaxSearchTermAdCombinationView);

                        /** AiMaxSearchTermAdCombinationView resource_name. */
                        public resource_name: string;

                        /** AiMaxSearchTermAdCombinationView ad_group. */
                        public ad_group?: (string|null);

                        /** AiMaxSearchTermAdCombinationView search_term. */
                        public search_term?: (string|null);

                        /** AiMaxSearchTermAdCombinationView landing_page. */
                        public landing_page?: (string|null);

                        /** AiMaxSearchTermAdCombinationView headline. */
                        public headline?: (string|null);

                        /**
                         * Creates a new AiMaxSearchTermAdCombinationView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AiMaxSearchTermAdCombinationView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAiMaxSearchTermAdCombinationView): google.ads.googleads.v23.resources.AiMaxSearchTermAdCombinationView;

                        /**
                         * Encodes the specified AiMaxSearchTermAdCombinationView message. Does not implicitly {@link google.ads.googleads.v23.resources.AiMaxSearchTermAdCombinationView.verify|verify} messages.
                         * @param message AiMaxSearchTermAdCombinationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAiMaxSearchTermAdCombinationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AiMaxSearchTermAdCombinationView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AiMaxSearchTermAdCombinationView.verify|verify} messages.
                         * @param message AiMaxSearchTermAdCombinationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAiMaxSearchTermAdCombinationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AiMaxSearchTermAdCombinationView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AiMaxSearchTermAdCombinationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AiMaxSearchTermAdCombinationView;

                        /**
                         * Decodes an AiMaxSearchTermAdCombinationView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AiMaxSearchTermAdCombinationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AiMaxSearchTermAdCombinationView;

                        /**
                         * Verifies an AiMaxSearchTermAdCombinationView message.
                         * @param message Plain 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 AiMaxSearchTermAdCombinationView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AiMaxSearchTermAdCombinationView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AiMaxSearchTermAdCombinationView;

                        /**
                         * Creates a plain object from an AiMaxSearchTermAdCombinationView message. Also converts values to other types if specified.
                         * @param message AiMaxSearchTermAdCombinationView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AiMaxSearchTermAdCombinationView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AiMaxSearchTermAdCombinationView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AiMaxSearchTermAdCombinationView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AndroidPrivacySharedKeyGoogleAdGroup. */
                    interface IAndroidPrivacySharedKeyGoogleAdGroup {

                        /** AndroidPrivacySharedKeyGoogleAdGroup resource_name */
                        resource_name?: (string|null);

                        /** AndroidPrivacySharedKeyGoogleAdGroup campaign_id */
                        campaign_id?: (number|null);

                        /** AndroidPrivacySharedKeyGoogleAdGroup android_privacy_interaction_type */
                        android_privacy_interaction_type?: (google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|null);

                        /** AndroidPrivacySharedKeyGoogleAdGroup android_privacy_interaction_date */
                        android_privacy_interaction_date?: (string|null);

                        /** AndroidPrivacySharedKeyGoogleAdGroup android_privacy_network_type */
                        android_privacy_network_type?: (google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType|null);

                        /** AndroidPrivacySharedKeyGoogleAdGroup ad_group_id */
                        ad_group_id?: (number|null);

                        /** AndroidPrivacySharedKeyGoogleAdGroup shared_ad_group_key */
                        shared_ad_group_key?: (string|null);
                    }

                    /** Represents an AndroidPrivacySharedKeyGoogleAdGroup. */
                    class AndroidPrivacySharedKeyGoogleAdGroup implements IAndroidPrivacySharedKeyGoogleAdGroup {

                        /**
                         * Constructs a new AndroidPrivacySharedKeyGoogleAdGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleAdGroup);

                        /** AndroidPrivacySharedKeyGoogleAdGroup resource_name. */
                        public resource_name: string;

                        /** AndroidPrivacySharedKeyGoogleAdGroup campaign_id. */
                        public campaign_id: number;

                        /** AndroidPrivacySharedKeyGoogleAdGroup android_privacy_interaction_type. */
                        public android_privacy_interaction_type: (google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType);

                        /** AndroidPrivacySharedKeyGoogleAdGroup android_privacy_interaction_date. */
                        public android_privacy_interaction_date: string;

                        /** AndroidPrivacySharedKeyGoogleAdGroup android_privacy_network_type. */
                        public android_privacy_network_type: (google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType);

                        /** AndroidPrivacySharedKeyGoogleAdGroup ad_group_id. */
                        public ad_group_id: number;

                        /** AndroidPrivacySharedKeyGoogleAdGroup shared_ad_group_key. */
                        public shared_ad_group_key: string;

                        /**
                         * Creates a new AndroidPrivacySharedKeyGoogleAdGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AndroidPrivacySharedKeyGoogleAdGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleAdGroup): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleAdGroup;

                        /**
                         * Encodes the specified AndroidPrivacySharedKeyGoogleAdGroup message. Does not implicitly {@link google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleAdGroup.verify|verify} messages.
                         * @param message AndroidPrivacySharedKeyGoogleAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AndroidPrivacySharedKeyGoogleAdGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleAdGroup.verify|verify} messages.
                         * @param message AndroidPrivacySharedKeyGoogleAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AndroidPrivacySharedKeyGoogleAdGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AndroidPrivacySharedKeyGoogleAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleAdGroup;

                        /**
                         * Decodes an AndroidPrivacySharedKeyGoogleAdGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AndroidPrivacySharedKeyGoogleAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleAdGroup;

                        /**
                         * Verifies an AndroidPrivacySharedKeyGoogleAdGroup message.
                         * @param message Plain 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 AndroidPrivacySharedKeyGoogleAdGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AndroidPrivacySharedKeyGoogleAdGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleAdGroup;

                        /**
                         * Creates a plain object from an AndroidPrivacySharedKeyGoogleAdGroup message. Also converts values to other types if specified.
                         * @param message AndroidPrivacySharedKeyGoogleAdGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleAdGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AndroidPrivacySharedKeyGoogleAdGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AndroidPrivacySharedKeyGoogleAdGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AndroidPrivacySharedKeyGoogleCampaign. */
                    interface IAndroidPrivacySharedKeyGoogleCampaign {

                        /** AndroidPrivacySharedKeyGoogleCampaign resource_name */
                        resource_name?: (string|null);

                        /** AndroidPrivacySharedKeyGoogleCampaign campaign_id */
                        campaign_id?: (number|null);

                        /** AndroidPrivacySharedKeyGoogleCampaign android_privacy_interaction_type */
                        android_privacy_interaction_type?: (google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|null);

                        /** AndroidPrivacySharedKeyGoogleCampaign android_privacy_interaction_date */
                        android_privacy_interaction_date?: (string|null);

                        /** AndroidPrivacySharedKeyGoogleCampaign shared_campaign_key */
                        shared_campaign_key?: (string|null);
                    }

                    /** Represents an AndroidPrivacySharedKeyGoogleCampaign. */
                    class AndroidPrivacySharedKeyGoogleCampaign implements IAndroidPrivacySharedKeyGoogleCampaign {

                        /**
                         * Constructs a new AndroidPrivacySharedKeyGoogleCampaign.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleCampaign);

                        /** AndroidPrivacySharedKeyGoogleCampaign resource_name. */
                        public resource_name: string;

                        /** AndroidPrivacySharedKeyGoogleCampaign campaign_id. */
                        public campaign_id: number;

                        /** AndroidPrivacySharedKeyGoogleCampaign android_privacy_interaction_type. */
                        public android_privacy_interaction_type: (google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType);

                        /** AndroidPrivacySharedKeyGoogleCampaign android_privacy_interaction_date. */
                        public android_privacy_interaction_date: string;

                        /** AndroidPrivacySharedKeyGoogleCampaign shared_campaign_key. */
                        public shared_campaign_key: string;

                        /**
                         * Creates a new AndroidPrivacySharedKeyGoogleCampaign instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AndroidPrivacySharedKeyGoogleCampaign instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleCampaign): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleCampaign;

                        /**
                         * Encodes the specified AndroidPrivacySharedKeyGoogleCampaign message. Does not implicitly {@link google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleCampaign.verify|verify} messages.
                         * @param message AndroidPrivacySharedKeyGoogleCampaign message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleCampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AndroidPrivacySharedKeyGoogleCampaign message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleCampaign.verify|verify} messages.
                         * @param message AndroidPrivacySharedKeyGoogleCampaign message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleCampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AndroidPrivacySharedKeyGoogleCampaign message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AndroidPrivacySharedKeyGoogleCampaign
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleCampaign;

                        /**
                         * Decodes an AndroidPrivacySharedKeyGoogleCampaign message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AndroidPrivacySharedKeyGoogleCampaign
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleCampaign;

                        /**
                         * Verifies an AndroidPrivacySharedKeyGoogleCampaign message.
                         * @param message Plain 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 AndroidPrivacySharedKeyGoogleCampaign message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AndroidPrivacySharedKeyGoogleCampaign
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleCampaign;

                        /**
                         * Creates a plain object from an AndroidPrivacySharedKeyGoogleCampaign message. Also converts values to other types if specified.
                         * @param message AndroidPrivacySharedKeyGoogleCampaign
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleCampaign, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AndroidPrivacySharedKeyGoogleCampaign to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AndroidPrivacySharedKeyGoogleCampaign
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AndroidPrivacySharedKeyGoogleNetworkType. */
                    interface IAndroidPrivacySharedKeyGoogleNetworkType {

                        /** AndroidPrivacySharedKeyGoogleNetworkType resource_name */
                        resource_name?: (string|null);

                        /** AndroidPrivacySharedKeyGoogleNetworkType campaign_id */
                        campaign_id?: (number|null);

                        /** AndroidPrivacySharedKeyGoogleNetworkType android_privacy_interaction_type */
                        android_privacy_interaction_type?: (google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|null);

                        /** AndroidPrivacySharedKeyGoogleNetworkType android_privacy_interaction_date */
                        android_privacy_interaction_date?: (string|null);

                        /** AndroidPrivacySharedKeyGoogleNetworkType android_privacy_network_type */
                        android_privacy_network_type?: (google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType|null);

                        /** AndroidPrivacySharedKeyGoogleNetworkType shared_network_type_key */
                        shared_network_type_key?: (string|null);
                    }

                    /** Represents an AndroidPrivacySharedKeyGoogleNetworkType. */
                    class AndroidPrivacySharedKeyGoogleNetworkType implements IAndroidPrivacySharedKeyGoogleNetworkType {

                        /**
                         * Constructs a new AndroidPrivacySharedKeyGoogleNetworkType.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleNetworkType);

                        /** AndroidPrivacySharedKeyGoogleNetworkType resource_name. */
                        public resource_name: string;

                        /** AndroidPrivacySharedKeyGoogleNetworkType campaign_id. */
                        public campaign_id: number;

                        /** AndroidPrivacySharedKeyGoogleNetworkType android_privacy_interaction_type. */
                        public android_privacy_interaction_type: (google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyInteractionTypeEnum.AndroidPrivacyInteractionType);

                        /** AndroidPrivacySharedKeyGoogleNetworkType android_privacy_interaction_date. */
                        public android_privacy_interaction_date: string;

                        /** AndroidPrivacySharedKeyGoogleNetworkType android_privacy_network_type. */
                        public android_privacy_network_type: (google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType|keyof typeof google.ads.googleads.v23.enums.AndroidPrivacyNetworkTypeEnum.AndroidPrivacyNetworkType);

                        /** AndroidPrivacySharedKeyGoogleNetworkType shared_network_type_key. */
                        public shared_network_type_key: string;

                        /**
                         * Creates a new AndroidPrivacySharedKeyGoogleNetworkType instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AndroidPrivacySharedKeyGoogleNetworkType instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleNetworkType): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleNetworkType;

                        /**
                         * Encodes the specified AndroidPrivacySharedKeyGoogleNetworkType message. Does not implicitly {@link google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleNetworkType.verify|verify} messages.
                         * @param message AndroidPrivacySharedKeyGoogleNetworkType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleNetworkType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AndroidPrivacySharedKeyGoogleNetworkType message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleNetworkType.verify|verify} messages.
                         * @param message AndroidPrivacySharedKeyGoogleNetworkType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleNetworkType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AndroidPrivacySharedKeyGoogleNetworkType message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AndroidPrivacySharedKeyGoogleNetworkType
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleNetworkType;

                        /**
                         * Decodes an AndroidPrivacySharedKeyGoogleNetworkType message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AndroidPrivacySharedKeyGoogleNetworkType
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleNetworkType;

                        /**
                         * Verifies an AndroidPrivacySharedKeyGoogleNetworkType message.
                         * @param message Plain 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 AndroidPrivacySharedKeyGoogleNetworkType message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AndroidPrivacySharedKeyGoogleNetworkType
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleNetworkType;

                        /**
                         * Creates a plain object from an AndroidPrivacySharedKeyGoogleNetworkType message. Also converts values to other types if specified.
                         * @param message AndroidPrivacySharedKeyGoogleNetworkType
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AndroidPrivacySharedKeyGoogleNetworkType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AndroidPrivacySharedKeyGoogleNetworkType to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AndroidPrivacySharedKeyGoogleNetworkType
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AppliedIncentive. */
                    interface IAppliedIncentive {

                        /** AppliedIncentive resource_name */
                        resource_name?: (string|null);

                        /** AppliedIncentive coupon_code */
                        coupon_code?: (string|null);

                        /** AppliedIncentive incentive_state */
                        incentive_state?: (google.ads.googleads.v23.enums.IncentiveStateEnum.IncentiveState|keyof typeof google.ads.googleads.v23.enums.IncentiveStateEnum.IncentiveState|null);

                        /** AppliedIncentive redemption_date_time */
                        redemption_date_time?: (string|null);

                        /** AppliedIncentive fulfillment_expiration_date_time */
                        fulfillment_expiration_date_time?: (string|null);

                        /** AppliedIncentive reward_grant_date_time */
                        reward_grant_date_time?: (string|null);

                        /** AppliedIncentive reward_expiration_date_time */
                        reward_expiration_date_time?: (string|null);

                        /** AppliedIncentive currency_code */
                        currency_code?: (string|null);

                        /** AppliedIncentive reward_amount_micros */
                        reward_amount_micros?: (number|null);

                        /** AppliedIncentive granted_amount_micros */
                        granted_amount_micros?: (number|null);

                        /** AppliedIncentive required_min_spend_micros */
                        required_min_spend_micros?: (number|null);

                        /** AppliedIncentive current_spend_towards_fulfillment_micros */
                        current_spend_towards_fulfillment_micros?: (number|null);

                        /** AppliedIncentive reward_balance_remaining_micros */
                        reward_balance_remaining_micros?: (number|null);
                    }

                    /** Represents an AppliedIncentive. */
                    class AppliedIncentive implements IAppliedIncentive {

                        /**
                         * Constructs a new AppliedIncentive.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAppliedIncentive);

                        /** AppliedIncentive resource_name. */
                        public resource_name: string;

                        /** AppliedIncentive coupon_code. */
                        public coupon_code?: (string|null);

                        /** AppliedIncentive incentive_state. */
                        public incentive_state?: (google.ads.googleads.v23.enums.IncentiveStateEnum.IncentiveState|keyof typeof google.ads.googleads.v23.enums.IncentiveStateEnum.IncentiveState|null);

                        /** AppliedIncentive redemption_date_time. */
                        public redemption_date_time?: (string|null);

                        /** AppliedIncentive fulfillment_expiration_date_time. */
                        public fulfillment_expiration_date_time?: (string|null);

                        /** AppliedIncentive reward_grant_date_time. */
                        public reward_grant_date_time?: (string|null);

                        /** AppliedIncentive reward_expiration_date_time. */
                        public reward_expiration_date_time?: (string|null);

                        /** AppliedIncentive currency_code. */
                        public currency_code?: (string|null);

                        /** AppliedIncentive reward_amount_micros. */
                        public reward_amount_micros?: (number|null);

                        /** AppliedIncentive granted_amount_micros. */
                        public granted_amount_micros?: (number|null);

                        /** AppliedIncentive required_min_spend_micros. */
                        public required_min_spend_micros?: (number|null);

                        /** AppliedIncentive current_spend_towards_fulfillment_micros. */
                        public current_spend_towards_fulfillment_micros?: (number|null);

                        /** AppliedIncentive reward_balance_remaining_micros. */
                        public reward_balance_remaining_micros?: (number|null);

                        /**
                         * Creates a new AppliedIncentive instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppliedIncentive instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAppliedIncentive): google.ads.googleads.v23.resources.AppliedIncentive;

                        /**
                         * Encodes the specified AppliedIncentive message. Does not implicitly {@link google.ads.googleads.v23.resources.AppliedIncentive.verify|verify} messages.
                         * @param message AppliedIncentive message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAppliedIncentive, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppliedIncentive message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AppliedIncentive.verify|verify} messages.
                         * @param message AppliedIncentive message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAppliedIncentive, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppliedIncentive message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppliedIncentive
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AppliedIncentive;

                        /**
                         * Decodes an AppliedIncentive message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppliedIncentive
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AppliedIncentive;

                        /**
                         * Verifies an AppliedIncentive message.
                         * @param message Plain 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 AppliedIncentive message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppliedIncentive
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AppliedIncentive;

                        /**
                         * Creates a plain object from an AppliedIncentive message. Also converts values to other types if specified.
                         * @param message AppliedIncentive
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AppliedIncentive, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppliedIncentive to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppliedIncentive
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Asset. */
                    interface IAsset {

                        /** Asset resource_name */
                        resource_name?: (string|null);

                        /** Asset id */
                        id?: (number|null);

                        /** Asset name */
                        name?: (string|null);

                        /** Asset type */
                        type?: (google.ads.googleads.v23.enums.AssetTypeEnum.AssetType|keyof typeof google.ads.googleads.v23.enums.AssetTypeEnum.AssetType|null);

                        /** Asset final_urls */
                        final_urls?: (string[]|null);

                        /** Asset final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** Asset tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** Asset url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v23.common.ICustomParameter[]|null);

                        /** Asset final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** Asset source */
                        source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** Asset policy_summary */
                        policy_summary?: (google.ads.googleads.v23.resources.IAssetPolicySummary|null);

                        /** Asset field_type_policy_summaries */
                        field_type_policy_summaries?: (google.ads.googleads.v23.resources.IAssetFieldTypePolicySummary[]|null);

                        /** Asset orientation */
                        orientation?: (google.ads.googleads.v23.enums.AssetOrientationEnum.AssetOrientation|keyof typeof google.ads.googleads.v23.enums.AssetOrientationEnum.AssetOrientation|null);

                        /** Asset youtube_video_asset */
                        youtube_video_asset?: (google.ads.googleads.v23.common.IYoutubeVideoAsset|null);

                        /** Asset media_bundle_asset */
                        media_bundle_asset?: (google.ads.googleads.v23.common.IMediaBundleAsset|null);

                        /** Asset image_asset */
                        image_asset?: (google.ads.googleads.v23.common.IImageAsset|null);

                        /** Asset text_asset */
                        text_asset?: (google.ads.googleads.v23.common.ITextAsset|null);

                        /** Asset lead_form_asset */
                        lead_form_asset?: (google.ads.googleads.v23.common.ILeadFormAsset|null);

                        /** Asset book_on_google_asset */
                        book_on_google_asset?: (google.ads.googleads.v23.common.IBookOnGoogleAsset|null);

                        /** Asset promotion_asset */
                        promotion_asset?: (google.ads.googleads.v23.common.IPromotionAsset|null);

                        /** Asset callout_asset */
                        callout_asset?: (google.ads.googleads.v23.common.ICalloutAsset|null);

                        /** Asset structured_snippet_asset */
                        structured_snippet_asset?: (google.ads.googleads.v23.common.IStructuredSnippetAsset|null);

                        /** Asset sitelink_asset */
                        sitelink_asset?: (google.ads.googleads.v23.common.ISitelinkAsset|null);

                        /** Asset page_feed_asset */
                        page_feed_asset?: (google.ads.googleads.v23.common.IPageFeedAsset|null);

                        /** Asset dynamic_education_asset */
                        dynamic_education_asset?: (google.ads.googleads.v23.common.IDynamicEducationAsset|null);

                        /** Asset mobile_app_asset */
                        mobile_app_asset?: (google.ads.googleads.v23.common.IMobileAppAsset|null);

                        /** Asset hotel_callout_asset */
                        hotel_callout_asset?: (google.ads.googleads.v23.common.IHotelCalloutAsset|null);

                        /** Asset call_asset */
                        call_asset?: (google.ads.googleads.v23.common.ICallAsset|null);

                        /** Asset price_asset */
                        price_asset?: (google.ads.googleads.v23.common.IPriceAsset|null);

                        /** Asset call_to_action_asset */
                        call_to_action_asset?: (google.ads.googleads.v23.common.ICallToActionAsset|null);

                        /** Asset dynamic_real_estate_asset */
                        dynamic_real_estate_asset?: (google.ads.googleads.v23.common.IDynamicRealEstateAsset|null);

                        /** Asset dynamic_custom_asset */
                        dynamic_custom_asset?: (google.ads.googleads.v23.common.IDynamicCustomAsset|null);

                        /** Asset dynamic_hotels_and_rentals_asset */
                        dynamic_hotels_and_rentals_asset?: (google.ads.googleads.v23.common.IDynamicHotelsAndRentalsAsset|null);

                        /** Asset dynamic_flights_asset */
                        dynamic_flights_asset?: (google.ads.googleads.v23.common.IDynamicFlightsAsset|null);

                        /** Asset demand_gen_carousel_card_asset */
                        demand_gen_carousel_card_asset?: (google.ads.googleads.v23.common.IDemandGenCarouselCardAsset|null);

                        /** Asset dynamic_travel_asset */
                        dynamic_travel_asset?: (google.ads.googleads.v23.common.IDynamicTravelAsset|null);

                        /** Asset dynamic_local_asset */
                        dynamic_local_asset?: (google.ads.googleads.v23.common.IDynamicLocalAsset|null);

                        /** Asset dynamic_jobs_asset */
                        dynamic_jobs_asset?: (google.ads.googleads.v23.common.IDynamicJobsAsset|null);

                        /** Asset location_asset */
                        location_asset?: (google.ads.googleads.v23.common.ILocationAsset|null);

                        /** Asset hotel_property_asset */
                        hotel_property_asset?: (google.ads.googleads.v23.common.IHotelPropertyAsset|null);

                        /** Asset business_message_asset */
                        business_message_asset?: (google.ads.googleads.v23.common.IBusinessMessageAsset|null);

                        /** Asset app_deep_link_asset */
                        app_deep_link_asset?: (google.ads.googleads.v23.common.IAppDeepLinkAsset|null);

                        /** Asset youtube_video_list_asset */
                        youtube_video_list_asset?: (google.ads.googleads.v23.common.IYouTubeVideoListAsset|null);
                    }

                    /** Represents an Asset. */
                    class Asset implements IAsset {

                        /**
                         * Constructs a new Asset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAsset);

                        /** Asset resource_name. */
                        public resource_name: string;

                        /** Asset id. */
                        public id?: (number|null);

                        /** Asset name. */
                        public name?: (string|null);

                        /** Asset type. */
                        public type: (google.ads.googleads.v23.enums.AssetTypeEnum.AssetType|keyof typeof google.ads.googleads.v23.enums.AssetTypeEnum.AssetType);

                        /** Asset final_urls. */
                        public final_urls: string[];

                        /** Asset final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** Asset tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** Asset url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v23.common.ICustomParameter[];

                        /** Asset final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** Asset source. */
                        public source: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource);

                        /** Asset policy_summary. */
                        public policy_summary?: (google.ads.googleads.v23.resources.IAssetPolicySummary|null);

                        /** Asset field_type_policy_summaries. */
                        public field_type_policy_summaries: google.ads.googleads.v23.resources.IAssetFieldTypePolicySummary[];

                        /** Asset orientation. */
                        public orientation?: (google.ads.googleads.v23.enums.AssetOrientationEnum.AssetOrientation|keyof typeof google.ads.googleads.v23.enums.AssetOrientationEnum.AssetOrientation|null);

                        /** Asset youtube_video_asset. */
                        public youtube_video_asset?: (google.ads.googleads.v23.common.IYoutubeVideoAsset|null);

                        /** Asset media_bundle_asset. */
                        public media_bundle_asset?: (google.ads.googleads.v23.common.IMediaBundleAsset|null);

                        /** Asset image_asset. */
                        public image_asset?: (google.ads.googleads.v23.common.IImageAsset|null);

                        /** Asset text_asset. */
                        public text_asset?: (google.ads.googleads.v23.common.ITextAsset|null);

                        /** Asset lead_form_asset. */
                        public lead_form_asset?: (google.ads.googleads.v23.common.ILeadFormAsset|null);

                        /** Asset book_on_google_asset. */
                        public book_on_google_asset?: (google.ads.googleads.v23.common.IBookOnGoogleAsset|null);

                        /** Asset promotion_asset. */
                        public promotion_asset?: (google.ads.googleads.v23.common.IPromotionAsset|null);

                        /** Asset callout_asset. */
                        public callout_asset?: (google.ads.googleads.v23.common.ICalloutAsset|null);

                        /** Asset structured_snippet_asset. */
                        public structured_snippet_asset?: (google.ads.googleads.v23.common.IStructuredSnippetAsset|null);

                        /** Asset sitelink_asset. */
                        public sitelink_asset?: (google.ads.googleads.v23.common.ISitelinkAsset|null);

                        /** Asset page_feed_asset. */
                        public page_feed_asset?: (google.ads.googleads.v23.common.IPageFeedAsset|null);

                        /** Asset dynamic_education_asset. */
                        public dynamic_education_asset?: (google.ads.googleads.v23.common.IDynamicEducationAsset|null);

                        /** Asset mobile_app_asset. */
                        public mobile_app_asset?: (google.ads.googleads.v23.common.IMobileAppAsset|null);

                        /** Asset hotel_callout_asset. */
                        public hotel_callout_asset?: (google.ads.googleads.v23.common.IHotelCalloutAsset|null);

                        /** Asset call_asset. */
                        public call_asset?: (google.ads.googleads.v23.common.ICallAsset|null);

                        /** Asset price_asset. */
                        public price_asset?: (google.ads.googleads.v23.common.IPriceAsset|null);

                        /** Asset call_to_action_asset. */
                        public call_to_action_asset?: (google.ads.googleads.v23.common.ICallToActionAsset|null);

                        /** Asset dynamic_real_estate_asset. */
                        public dynamic_real_estate_asset?: (google.ads.googleads.v23.common.IDynamicRealEstateAsset|null);

                        /** Asset dynamic_custom_asset. */
                        public dynamic_custom_asset?: (google.ads.googleads.v23.common.IDynamicCustomAsset|null);

                        /** Asset dynamic_hotels_and_rentals_asset. */
                        public dynamic_hotels_and_rentals_asset?: (google.ads.googleads.v23.common.IDynamicHotelsAndRentalsAsset|null);

                        /** Asset dynamic_flights_asset. */
                        public dynamic_flights_asset?: (google.ads.googleads.v23.common.IDynamicFlightsAsset|null);

                        /** Asset demand_gen_carousel_card_asset. */
                        public demand_gen_carousel_card_asset?: (google.ads.googleads.v23.common.IDemandGenCarouselCardAsset|null);

                        /** Asset dynamic_travel_asset. */
                        public dynamic_travel_asset?: (google.ads.googleads.v23.common.IDynamicTravelAsset|null);

                        /** Asset dynamic_local_asset. */
                        public dynamic_local_asset?: (google.ads.googleads.v23.common.IDynamicLocalAsset|null);

                        /** Asset dynamic_jobs_asset. */
                        public dynamic_jobs_asset?: (google.ads.googleads.v23.common.IDynamicJobsAsset|null);

                        /** Asset location_asset. */
                        public location_asset?: (google.ads.googleads.v23.common.ILocationAsset|null);

                        /** Asset hotel_property_asset. */
                        public hotel_property_asset?: (google.ads.googleads.v23.common.IHotelPropertyAsset|null);

                        /** Asset business_message_asset. */
                        public business_message_asset?: (google.ads.googleads.v23.common.IBusinessMessageAsset|null);

                        /** Asset app_deep_link_asset. */
                        public app_deep_link_asset?: (google.ads.googleads.v23.common.IAppDeepLinkAsset|null);

                        /** Asset youtube_video_list_asset. */
                        public youtube_video_list_asset?: (google.ads.googleads.v23.common.IYouTubeVideoListAsset|null);

                        /** Asset asset_data. */
                        public asset_data?: ("youtube_video_asset"|"media_bundle_asset"|"image_asset"|"text_asset"|"lead_form_asset"|"book_on_google_asset"|"promotion_asset"|"callout_asset"|"structured_snippet_asset"|"sitelink_asset"|"page_feed_asset"|"dynamic_education_asset"|"mobile_app_asset"|"hotel_callout_asset"|"call_asset"|"price_asset"|"call_to_action_asset"|"dynamic_real_estate_asset"|"dynamic_custom_asset"|"dynamic_hotels_and_rentals_asset"|"dynamic_flights_asset"|"demand_gen_carousel_card_asset"|"dynamic_travel_asset"|"dynamic_local_asset"|"dynamic_jobs_asset"|"location_asset"|"hotel_property_asset"|"business_message_asset"|"app_deep_link_asset"|"youtube_video_list_asset");

                        /**
                         * Creates a new Asset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Asset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAsset): google.ads.googleads.v23.resources.Asset;

                        /**
                         * Encodes the specified Asset message. Does not implicitly {@link google.ads.googleads.v23.resources.Asset.verify|verify} messages.
                         * @param message Asset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Asset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Asset.verify|verify} messages.
                         * @param message Asset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Asset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Asset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Asset;

                        /**
                         * Decodes an Asset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Asset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Asset;

                        /**
                         * Verifies an Asset message.
                         * @param message Plain 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 Asset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Asset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Asset;

                        /**
                         * Creates a plain object from an Asset message. Also converts values to other types if specified.
                         * @param message Asset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Asset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Asset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Asset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetFieldTypePolicySummary. */
                    interface IAssetFieldTypePolicySummary {

                        /** AssetFieldTypePolicySummary asset_field_type */
                        asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** AssetFieldTypePolicySummary asset_source */
                        asset_source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** AssetFieldTypePolicySummary policy_summary_info */
                        policy_summary_info?: (google.ads.googleads.v23.resources.IAssetPolicySummary|null);
                    }

                    /** Represents an AssetFieldTypePolicySummary. */
                    class AssetFieldTypePolicySummary implements IAssetFieldTypePolicySummary {

                        /**
                         * Constructs a new AssetFieldTypePolicySummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetFieldTypePolicySummary);

                        /** AssetFieldTypePolicySummary asset_field_type. */
                        public asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** AssetFieldTypePolicySummary asset_source. */
                        public asset_source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** AssetFieldTypePolicySummary policy_summary_info. */
                        public policy_summary_info?: (google.ads.googleads.v23.resources.IAssetPolicySummary|null);

                        /**
                         * Creates a new AssetFieldTypePolicySummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetFieldTypePolicySummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetFieldTypePolicySummary): google.ads.googleads.v23.resources.AssetFieldTypePolicySummary;

                        /**
                         * Encodes the specified AssetFieldTypePolicySummary message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetFieldTypePolicySummary.verify|verify} messages.
                         * @param message AssetFieldTypePolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetFieldTypePolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetFieldTypePolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetFieldTypePolicySummary.verify|verify} messages.
                         * @param message AssetFieldTypePolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetFieldTypePolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetFieldTypePolicySummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetFieldTypePolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetFieldTypePolicySummary;

                        /**
                         * Decodes an AssetFieldTypePolicySummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetFieldTypePolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetFieldTypePolicySummary;

                        /**
                         * Verifies an AssetFieldTypePolicySummary message.
                         * @param message Plain 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 AssetFieldTypePolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetFieldTypePolicySummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetFieldTypePolicySummary;

                        /**
                         * Creates a plain object from an AssetFieldTypePolicySummary message. Also converts values to other types if specified.
                         * @param message AssetFieldTypePolicySummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetFieldTypePolicySummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetFieldTypePolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetFieldTypePolicySummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetPolicySummary. */
                    interface IAssetPolicySummary {

                        /** AssetPolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v23.common.IPolicyTopicEntry[]|null);

                        /** AssetPolicySummary review_status */
                        review_status?: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** AssetPolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents an AssetPolicySummary. */
                    class AssetPolicySummary implements IAssetPolicySummary {

                        /**
                         * Constructs a new AssetPolicySummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetPolicySummary);

                        /** AssetPolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v23.common.IPolicyTopicEntry[];

                        /** AssetPolicySummary review_status. */
                        public review_status: (google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v23.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** AssetPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v23.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus);

                        /**
                         * Creates a new AssetPolicySummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetPolicySummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetPolicySummary): google.ads.googleads.v23.resources.AssetPolicySummary;

                        /**
                         * Encodes the specified AssetPolicySummary message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetPolicySummary.verify|verify} messages.
                         * @param message AssetPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetPolicySummary.verify|verify} messages.
                         * @param message AssetPolicySummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetPolicySummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetPolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetPolicySummary;

                        /**
                         * Decodes an AssetPolicySummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetPolicySummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetPolicySummary;

                        /**
                         * Verifies an AssetPolicySummary message.
                         * @param message Plain 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 AssetPolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetPolicySummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetPolicySummary;

                        /**
                         * Creates a plain object from an AssetPolicySummary message. Also converts values to other types if specified.
                         * @param message AssetPolicySummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetPolicySummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetPolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetPolicySummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetFieldTypeView. */
                    interface IAssetFieldTypeView {

                        /** AssetFieldTypeView resource_name */
                        resource_name?: (string|null);

                        /** AssetFieldTypeView field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents an AssetFieldTypeView. */
                    class AssetFieldTypeView implements IAssetFieldTypeView {

                        /**
                         * Constructs a new AssetFieldTypeView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetFieldTypeView);

                        /** AssetFieldTypeView resource_name. */
                        public resource_name: string;

                        /** AssetFieldTypeView field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /**
                         * Creates a new AssetFieldTypeView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetFieldTypeView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetFieldTypeView): google.ads.googleads.v23.resources.AssetFieldTypeView;

                        /**
                         * Encodes the specified AssetFieldTypeView message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetFieldTypeView.verify|verify} messages.
                         * @param message AssetFieldTypeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetFieldTypeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetFieldTypeView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetFieldTypeView.verify|verify} messages.
                         * @param message AssetFieldTypeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetFieldTypeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetFieldTypeView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetFieldTypeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetFieldTypeView;

                        /**
                         * Decodes an AssetFieldTypeView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetFieldTypeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetFieldTypeView;

                        /**
                         * Verifies an AssetFieldTypeView message.
                         * @param message Plain 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 AssetFieldTypeView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetFieldTypeView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetFieldTypeView;

                        /**
                         * Creates a plain object from an AssetFieldTypeView message. Also converts values to other types if specified.
                         * @param message AssetFieldTypeView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetFieldTypeView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetFieldTypeView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetFieldTypeView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroup. */
                    interface IAssetGroup {

                        /** AssetGroup resource_name */
                        resource_name?: (string|null);

                        /** AssetGroup id */
                        id?: (number|null);

                        /** AssetGroup campaign */
                        campaign?: (string|null);

                        /** AssetGroup name */
                        name?: (string|null);

                        /** AssetGroup final_urls */
                        final_urls?: (string[]|null);

                        /** AssetGroup final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** AssetGroup status */
                        status?: (google.ads.googleads.v23.enums.AssetGroupStatusEnum.AssetGroupStatus|keyof typeof google.ads.googleads.v23.enums.AssetGroupStatusEnum.AssetGroupStatus|null);

                        /** AssetGroup primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum.AssetGroupPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum.AssetGroupPrimaryStatus|null);

                        /** AssetGroup primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum.AssetGroupPrimaryStatusReason[]|null);

                        /** AssetGroup path1 */
                        path1?: (string|null);

                        /** AssetGroup path2 */
                        path2?: (string|null);

                        /** AssetGroup ad_strength */
                        ad_strength?: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|null);

                        /** AssetGroup asset_coverage */
                        asset_coverage?: (google.ads.googleads.v23.resources.IAssetCoverage|null);
                    }

                    /** Represents an AssetGroup. */
                    class AssetGroup implements IAssetGroup {

                        /**
                         * Constructs a new AssetGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetGroup);

                        /** AssetGroup resource_name. */
                        public resource_name: string;

                        /** AssetGroup id. */
                        public id: number;

                        /** AssetGroup campaign. */
                        public campaign: string;

                        /** AssetGroup name. */
                        public name: string;

                        /** AssetGroup final_urls. */
                        public final_urls: string[];

                        /** AssetGroup final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** AssetGroup status. */
                        public status: (google.ads.googleads.v23.enums.AssetGroupStatusEnum.AssetGroupStatus|keyof typeof google.ads.googleads.v23.enums.AssetGroupStatusEnum.AssetGroupStatus);

                        /** AssetGroup primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum.AssetGroupPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetGroupPrimaryStatusEnum.AssetGroupPrimaryStatus);

                        /** AssetGroup primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AssetGroupPrimaryStatusReasonEnum.AssetGroupPrimaryStatusReason[];

                        /** AssetGroup path1. */
                        public path1: string;

                        /** AssetGroup path2. */
                        public path2: string;

                        /** AssetGroup ad_strength. */
                        public ad_strength: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength);

                        /** AssetGroup asset_coverage. */
                        public asset_coverage?: (google.ads.googleads.v23.resources.IAssetCoverage|null);

                        /**
                         * Creates a new AssetGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetGroup): google.ads.googleads.v23.resources.AssetGroup;

                        /**
                         * Encodes the specified AssetGroup message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroup.verify|verify} messages.
                         * @param message AssetGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroup.verify|verify} messages.
                         * @param message AssetGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetGroup;

                        /**
                         * Decodes an AssetGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetGroup;

                        /**
                         * Verifies an AssetGroup message.
                         * @param message Plain 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 AssetGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetGroup;

                        /**
                         * Creates a plain object from an AssetGroup message. Also converts values to other types if specified.
                         * @param message AssetGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetCoverage. */
                    interface IAssetCoverage {

                        /** AssetCoverage ad_strength_action_items */
                        ad_strength_action_items?: (google.ads.googleads.v23.resources.IAdStrengthActionItem[]|null);
                    }

                    /** Represents an AssetCoverage. */
                    class AssetCoverage implements IAssetCoverage {

                        /**
                         * Constructs a new AssetCoverage.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetCoverage);

                        /** AssetCoverage ad_strength_action_items. */
                        public ad_strength_action_items: google.ads.googleads.v23.resources.IAdStrengthActionItem[];

                        /**
                         * Creates a new AssetCoverage instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetCoverage instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetCoverage): google.ads.googleads.v23.resources.AssetCoverage;

                        /**
                         * Encodes the specified AssetCoverage message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetCoverage.verify|verify} messages.
                         * @param message AssetCoverage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetCoverage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetCoverage message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetCoverage.verify|verify} messages.
                         * @param message AssetCoverage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetCoverage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetCoverage message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetCoverage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetCoverage;

                        /**
                         * Decodes an AssetCoverage message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetCoverage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetCoverage;

                        /**
                         * Verifies an AssetCoverage message.
                         * @param message Plain 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 AssetCoverage message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetCoverage
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetCoverage;

                        /**
                         * Creates a plain object from an AssetCoverage message. Also converts values to other types if specified.
                         * @param message AssetCoverage
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetCoverage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetCoverage to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetCoverage
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdStrengthActionItem. */
                    interface IAdStrengthActionItem {

                        /** AdStrengthActionItem action_item_type */
                        action_item_type?: (google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum.AdStrengthActionItemType|keyof typeof google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum.AdStrengthActionItemType|null);

                        /** AdStrengthActionItem add_asset_details */
                        add_asset_details?: (google.ads.googleads.v23.resources.AdStrengthActionItem.IAddAssetDetails|null);
                    }

                    /** Represents an AdStrengthActionItem. */
                    class AdStrengthActionItem implements IAdStrengthActionItem {

                        /**
                         * Constructs a new AdStrengthActionItem.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdStrengthActionItem);

                        /** AdStrengthActionItem action_item_type. */
                        public action_item_type: (google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum.AdStrengthActionItemType|keyof typeof google.ads.googleads.v23.enums.AdStrengthActionItemTypeEnum.AdStrengthActionItemType);

                        /** AdStrengthActionItem add_asset_details. */
                        public add_asset_details?: (google.ads.googleads.v23.resources.AdStrengthActionItem.IAddAssetDetails|null);

                        /** AdStrengthActionItem action_details. */
                        public action_details?: "add_asset_details";

                        /**
                         * Creates a new AdStrengthActionItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdStrengthActionItem instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdStrengthActionItem): google.ads.googleads.v23.resources.AdStrengthActionItem;

                        /**
                         * Encodes the specified AdStrengthActionItem message. Does not implicitly {@link google.ads.googleads.v23.resources.AdStrengthActionItem.verify|verify} messages.
                         * @param message AdStrengthActionItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdStrengthActionItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdStrengthActionItem message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdStrengthActionItem.verify|verify} messages.
                         * @param message AdStrengthActionItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdStrengthActionItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdStrengthActionItem message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdStrengthActionItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdStrengthActionItem;

                        /**
                         * Decodes an AdStrengthActionItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdStrengthActionItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdStrengthActionItem;

                        /**
                         * Verifies an AdStrengthActionItem message.
                         * @param message Plain 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 AdStrengthActionItem message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdStrengthActionItem
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdStrengthActionItem;

                        /**
                         * Creates a plain object from an AdStrengthActionItem message. Also converts values to other types if specified.
                         * @param message AdStrengthActionItem
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdStrengthActionItem, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdStrengthActionItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdStrengthActionItem
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AdStrengthActionItem {

                        /** Properties of an AddAssetDetails. */
                        interface IAddAssetDetails {

                            /** AddAssetDetails asset_field_type */
                            asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                            /** AddAssetDetails asset_count */
                            asset_count?: (number|null);

                            /** AddAssetDetails video_aspect_ratio_requirement */
                            video_aspect_ratio_requirement?: (google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum.AssetCoverageVideoAspectRatioRequirement|keyof typeof google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum.AssetCoverageVideoAspectRatioRequirement|null);
                        }

                        /** Represents an AddAssetDetails. */
                        class AddAssetDetails implements IAddAssetDetails {

                            /**
                             * Constructs a new AddAssetDetails.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AdStrengthActionItem.IAddAssetDetails);

                            /** AddAssetDetails asset_field_type. */
                            public asset_field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                            /** AddAssetDetails asset_count. */
                            public asset_count?: (number|null);

                            /** AddAssetDetails video_aspect_ratio_requirement. */
                            public video_aspect_ratio_requirement?: (google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum.AssetCoverageVideoAspectRatioRequirement|keyof typeof google.ads.googleads.v23.enums.AssetCoverageVideoAspectRatioRequirementEnum.AssetCoverageVideoAspectRatioRequirement|null);

                            /**
                             * Creates a new AddAssetDetails instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AddAssetDetails instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AdStrengthActionItem.IAddAssetDetails): google.ads.googleads.v23.resources.AdStrengthActionItem.AddAssetDetails;

                            /**
                             * Encodes the specified AddAssetDetails message. Does not implicitly {@link google.ads.googleads.v23.resources.AdStrengthActionItem.AddAssetDetails.verify|verify} messages.
                             * @param message AddAssetDetails message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AdStrengthActionItem.IAddAssetDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AddAssetDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdStrengthActionItem.AddAssetDetails.verify|verify} messages.
                             * @param message AddAssetDetails message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AdStrengthActionItem.IAddAssetDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AddAssetDetails message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AddAssetDetails
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdStrengthActionItem.AddAssetDetails;

                            /**
                             * Decodes an AddAssetDetails message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AddAssetDetails
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdStrengthActionItem.AddAssetDetails;

                            /**
                             * Verifies an AddAssetDetails message.
                             * @param message Plain 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 AddAssetDetails message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AddAssetDetails
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdStrengthActionItem.AddAssetDetails;

                            /**
                             * Creates a plain object from an AddAssetDetails message. Also converts values to other types if specified.
                             * @param message AddAssetDetails
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AdStrengthActionItem.AddAssetDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AddAssetDetails to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AddAssetDetails
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an AssetGroupAsset. */
                    interface IAssetGroupAsset {

                        /** AssetGroupAsset resource_name */
                        resource_name?: (string|null);

                        /** AssetGroupAsset asset_group */
                        asset_group?: (string|null);

                        /** AssetGroupAsset asset */
                        asset?: (string|null);

                        /** AssetGroupAsset field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** AssetGroupAsset status */
                        status?: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|null);

                        /** AssetGroupAsset primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|null);

                        /** AssetGroupAsset primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[]|null);

                        /** AssetGroupAsset primary_status_details */
                        primary_status_details?: (google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[]|null);

                        /** AssetGroupAsset policy_summary */
                        policy_summary?: (google.ads.googleads.v23.common.IPolicySummary|null);

                        /** AssetGroupAsset source */
                        source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);
                    }

                    /** Represents an AssetGroupAsset. */
                    class AssetGroupAsset implements IAssetGroupAsset {

                        /**
                         * Constructs a new AssetGroupAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetGroupAsset);

                        /** AssetGroupAsset resource_name. */
                        public resource_name: string;

                        /** AssetGroupAsset asset_group. */
                        public asset_group: string;

                        /** AssetGroupAsset asset. */
                        public asset: string;

                        /** AssetGroupAsset field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** AssetGroupAsset status. */
                        public status: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus);

                        /** AssetGroupAsset primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus);

                        /** AssetGroupAsset primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[];

                        /** AssetGroupAsset primary_status_details. */
                        public primary_status_details: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[];

                        /** AssetGroupAsset policy_summary. */
                        public policy_summary?: (google.ads.googleads.v23.common.IPolicySummary|null);

                        /** AssetGroupAsset source. */
                        public source: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource);

                        /**
                         * Creates a new AssetGroupAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetGroupAsset): google.ads.googleads.v23.resources.AssetGroupAsset;

                        /**
                         * Encodes the specified AssetGroupAsset message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupAsset.verify|verify} messages.
                         * @param message AssetGroupAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetGroupAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupAsset.verify|verify} messages.
                         * @param message AssetGroupAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetGroupAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupAsset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetGroupAsset;

                        /**
                         * Decodes an AssetGroupAsset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetGroupAsset;

                        /**
                         * Verifies an AssetGroupAsset message.
                         * @param message Plain 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 AssetGroupAsset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupAsset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetGroupAsset;

                        /**
                         * Creates a plain object from an AssetGroupAsset message. Also converts values to other types if specified.
                         * @param message AssetGroupAsset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetGroupAsset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupAsset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupListingGroupFilter. */
                    interface IAssetGroupListingGroupFilter {

                        /** AssetGroupListingGroupFilter resource_name */
                        resource_name?: (string|null);

                        /** AssetGroupListingGroupFilter asset_group */
                        asset_group?: (string|null);

                        /** AssetGroupListingGroupFilter id */
                        id?: (number|null);

                        /** AssetGroupListingGroupFilter type */
                        type?: (google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum.ListingGroupFilterType|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum.ListingGroupFilterType|null);

                        /** AssetGroupListingGroupFilter listing_source */
                        listing_source?: (google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum.ListingGroupFilterListingSource|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum.ListingGroupFilterListingSource|null);

                        /** AssetGroupListingGroupFilter case_value */
                        case_value?: (google.ads.googleads.v23.resources.IListingGroupFilterDimension|null);

                        /** AssetGroupListingGroupFilter parent_listing_group_filter */
                        parent_listing_group_filter?: (string|null);

                        /** AssetGroupListingGroupFilter path */
                        path?: (google.ads.googleads.v23.resources.IListingGroupFilterDimensionPath|null);
                    }

                    /** Represents an AssetGroupListingGroupFilter. */
                    class AssetGroupListingGroupFilter implements IAssetGroupListingGroupFilter {

                        /**
                         * Constructs a new AssetGroupListingGroupFilter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter);

                        /** AssetGroupListingGroupFilter resource_name. */
                        public resource_name: string;

                        /** AssetGroupListingGroupFilter asset_group. */
                        public asset_group: string;

                        /** AssetGroupListingGroupFilter id. */
                        public id: number;

                        /** AssetGroupListingGroupFilter type. */
                        public type: (google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum.ListingGroupFilterType|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterTypeEnum.ListingGroupFilterType);

                        /** AssetGroupListingGroupFilter listing_source. */
                        public listing_source: (google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum.ListingGroupFilterListingSource|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterListingSourceEnum.ListingGroupFilterListingSource);

                        /** AssetGroupListingGroupFilter case_value. */
                        public case_value?: (google.ads.googleads.v23.resources.IListingGroupFilterDimension|null);

                        /** AssetGroupListingGroupFilter parent_listing_group_filter. */
                        public parent_listing_group_filter: string;

                        /** AssetGroupListingGroupFilter path. */
                        public path?: (google.ads.googleads.v23.resources.IListingGroupFilterDimensionPath|null);

                        /**
                         * Creates a new AssetGroupListingGroupFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupListingGroupFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter): google.ads.googleads.v23.resources.AssetGroupListingGroupFilter;

                        /**
                         * Encodes the specified AssetGroupListingGroupFilter message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupListingGroupFilter.verify|verify} messages.
                         * @param message AssetGroupListingGroupFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupListingGroupFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupListingGroupFilter.verify|verify} messages.
                         * @param message AssetGroupListingGroupFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupListingGroupFilter message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupListingGroupFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetGroupListingGroupFilter;

                        /**
                         * Decodes an AssetGroupListingGroupFilter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupListingGroupFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetGroupListingGroupFilter;

                        /**
                         * Verifies an AssetGroupListingGroupFilter message.
                         * @param message Plain 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 AssetGroupListingGroupFilter message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupListingGroupFilter
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetGroupListingGroupFilter;

                        /**
                         * Creates a plain object from an AssetGroupListingGroupFilter message. Also converts values to other types if specified.
                         * @param message AssetGroupListingGroupFilter
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetGroupListingGroupFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupListingGroupFilter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupListingGroupFilter
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListingGroupFilterDimensionPath. */
                    interface IListingGroupFilterDimensionPath {

                        /** ListingGroupFilterDimensionPath dimensions */
                        dimensions?: (google.ads.googleads.v23.resources.IListingGroupFilterDimension[]|null);
                    }

                    /** Represents a ListingGroupFilterDimensionPath. */
                    class ListingGroupFilterDimensionPath implements IListingGroupFilterDimensionPath {

                        /**
                         * Constructs a new ListingGroupFilterDimensionPath.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IListingGroupFilterDimensionPath);

                        /** ListingGroupFilterDimensionPath dimensions. */
                        public dimensions: google.ads.googleads.v23.resources.IListingGroupFilterDimension[];

                        /**
                         * Creates a new ListingGroupFilterDimensionPath instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterDimensionPath instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IListingGroupFilterDimensionPath): google.ads.googleads.v23.resources.ListingGroupFilterDimensionPath;

                        /**
                         * Encodes the specified ListingGroupFilterDimensionPath message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimensionPath.verify|verify} messages.
                         * @param message ListingGroupFilterDimensionPath message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IListingGroupFilterDimensionPath, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterDimensionPath message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimensionPath.verify|verify} messages.
                         * @param message ListingGroupFilterDimensionPath message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IListingGroupFilterDimensionPath, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterDimensionPath message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterDimensionPath
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimensionPath;

                        /**
                         * Decodes a ListingGroupFilterDimensionPath message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterDimensionPath
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimensionPath;

                        /**
                         * Verifies a ListingGroupFilterDimensionPath message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterDimensionPath message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterDimensionPath
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimensionPath;

                        /**
                         * Creates a plain object from a ListingGroupFilterDimensionPath message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterDimensionPath
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimensionPath, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterDimensionPath to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterDimensionPath
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListingGroupFilterDimension. */
                    interface IListingGroupFilterDimension {

                        /** ListingGroupFilterDimension product_category */
                        product_category?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCategory|null);

                        /** ListingGroupFilterDimension product_brand */
                        product_brand?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductBrand|null);

                        /** ListingGroupFilterDimension product_channel */
                        product_channel?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductChannel|null);

                        /** ListingGroupFilterDimension product_condition */
                        product_condition?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCondition|null);

                        /** ListingGroupFilterDimension product_custom_attribute */
                        product_custom_attribute?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCustomAttribute|null);

                        /** ListingGroupFilterDimension product_item_id */
                        product_item_id?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductItemId|null);

                        /** ListingGroupFilterDimension product_type */
                        product_type?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductType|null);

                        /** ListingGroupFilterDimension webpage */
                        webpage?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpage|null);
                    }

                    /** Represents a ListingGroupFilterDimension. */
                    class ListingGroupFilterDimension implements IListingGroupFilterDimension {

                        /**
                         * Constructs a new ListingGroupFilterDimension.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IListingGroupFilterDimension);

                        /** ListingGroupFilterDimension product_category. */
                        public product_category?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCategory|null);

                        /** ListingGroupFilterDimension product_brand. */
                        public product_brand?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductBrand|null);

                        /** ListingGroupFilterDimension product_channel. */
                        public product_channel?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductChannel|null);

                        /** ListingGroupFilterDimension product_condition. */
                        public product_condition?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCondition|null);

                        /** ListingGroupFilterDimension product_custom_attribute. */
                        public product_custom_attribute?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCustomAttribute|null);

                        /** ListingGroupFilterDimension product_item_id. */
                        public product_item_id?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductItemId|null);

                        /** ListingGroupFilterDimension product_type. */
                        public product_type?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductType|null);

                        /** ListingGroupFilterDimension webpage. */
                        public webpage?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpage|null);

                        /** ListingGroupFilterDimension dimension. */
                        public dimension?: ("product_category"|"product_brand"|"product_channel"|"product_condition"|"product_custom_attribute"|"product_item_id"|"product_type"|"webpage");

                        /**
                         * Creates a new ListingGroupFilterDimension instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListingGroupFilterDimension instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IListingGroupFilterDimension): google.ads.googleads.v23.resources.ListingGroupFilterDimension;

                        /**
                         * Encodes the specified ListingGroupFilterDimension message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.verify|verify} messages.
                         * @param message ListingGroupFilterDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IListingGroupFilterDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupFilterDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.verify|verify} messages.
                         * @param message ListingGroupFilterDimension message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IListingGroupFilterDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupFilterDimension message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListingGroupFilterDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension;

                        /**
                         * Decodes a ListingGroupFilterDimension message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListingGroupFilterDimension
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension;

                        /**
                         * Verifies a ListingGroupFilterDimension message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupFilterDimension message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListingGroupFilterDimension
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension;

                        /**
                         * Creates a plain object from a ListingGroupFilterDimension message. Also converts values to other types if specified.
                         * @param message ListingGroupFilterDimension
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupFilterDimension to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListingGroupFilterDimension
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ListingGroupFilterDimension {

                        /** Properties of a ProductCategory. */
                        interface IProductCategory {

                            /** ProductCategory category_id */
                            category_id?: (number|null);

                            /** ProductCategory level */
                            level?: (google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum.ListingGroupFilterProductCategoryLevel|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum.ListingGroupFilterProductCategoryLevel|null);
                        }

                        /** Represents a ProductCategory. */
                        class ProductCategory implements IProductCategory {

                            /**
                             * Constructs a new ProductCategory.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCategory);

                            /** ProductCategory category_id. */
                            public category_id?: (number|null);

                            /** ProductCategory level. */
                            public level: (google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum.ListingGroupFilterProductCategoryLevel|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductCategoryLevelEnum.ListingGroupFilterProductCategoryLevel);

                            /**
                             * Creates a new ProductCategory instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductCategory instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCategory): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCategory;

                            /**
                             * Encodes the specified ProductCategory message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCategory.verify|verify} messages.
                             * @param message ProductCategory message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCategory, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductCategory message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCategory.verify|verify} messages.
                             * @param message ProductCategory message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCategory, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductCategory message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductCategory
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCategory;

                            /**
                             * Decodes a ProductCategory message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductCategory
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCategory;

                            /**
                             * Verifies a ProductCategory message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductCategory message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductCategory
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCategory;

                            /**
                             * Creates a plain object from a ProductCategory message. Also converts values to other types if specified.
                             * @param message ProductCategory
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCategory, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductCategory to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductCategory
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ProductBrand. */
                        interface IProductBrand {

                            /** ProductBrand value */
                            value?: (string|null);
                        }

                        /** Represents a ProductBrand. */
                        class ProductBrand implements IProductBrand {

                            /**
                             * Constructs a new ProductBrand.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductBrand);

                            /** ProductBrand value. */
                            public value?: (string|null);

                            /**
                             * Creates a new ProductBrand instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductBrand instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductBrand): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductBrand;

                            /**
                             * Encodes the specified ProductBrand message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductBrand.verify|verify} messages.
                             * @param message ProductBrand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductBrand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductBrand message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductBrand.verify|verify} messages.
                             * @param message ProductBrand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductBrand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductBrand message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductBrand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductBrand;

                            /**
                             * Decodes a ProductBrand message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductBrand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductBrand;

                            /**
                             * Verifies a ProductBrand message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductBrand message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductBrand
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductBrand;

                            /**
                             * Creates a plain object from a ProductBrand message. Also converts values to other types if specified.
                             * @param message ProductBrand
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductBrand, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductBrand to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductBrand
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ProductChannel. */
                        interface IProductChannel {

                            /** ProductChannel channel */
                            channel?: (google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum.ListingGroupFilterProductChannel|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum.ListingGroupFilterProductChannel|null);
                        }

                        /** Represents a ProductChannel. */
                        class ProductChannel implements IProductChannel {

                            /**
                             * Constructs a new ProductChannel.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductChannel);

                            /** ProductChannel channel. */
                            public channel: (google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum.ListingGroupFilterProductChannel|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductChannelEnum.ListingGroupFilterProductChannel);

                            /**
                             * Creates a new ProductChannel instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductChannel instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductChannel): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductChannel;

                            /**
                             * Encodes the specified ProductChannel message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductChannel.verify|verify} messages.
                             * @param message ProductChannel message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductChannel, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductChannel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductChannel.verify|verify} messages.
                             * @param message ProductChannel message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductChannel, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductChannel message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductChannel
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductChannel;

                            /**
                             * Decodes a ProductChannel message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductChannel
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductChannel;

                            /**
                             * Verifies a ProductChannel message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductChannel message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductChannel
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductChannel;

                            /**
                             * Creates a plain object from a ProductChannel message. Also converts values to other types if specified.
                             * @param message ProductChannel
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductChannel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductChannel to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductChannel
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ProductCondition. */
                        interface IProductCondition {

                            /** ProductCondition condition */
                            condition?: (google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum.ListingGroupFilterProductCondition|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum.ListingGroupFilterProductCondition|null);
                        }

                        /** Represents a ProductCondition. */
                        class ProductCondition implements IProductCondition {

                            /**
                             * Constructs a new ProductCondition.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCondition);

                            /** ProductCondition condition. */
                            public condition: (google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum.ListingGroupFilterProductCondition|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductConditionEnum.ListingGroupFilterProductCondition);

                            /**
                             * Creates a new ProductCondition instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductCondition instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCondition): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCondition;

                            /**
                             * Encodes the specified ProductCondition message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCondition.verify|verify} messages.
                             * @param message ProductCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCondition.verify|verify} messages.
                             * @param message ProductCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductCondition message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCondition;

                            /**
                             * Decodes a ProductCondition message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCondition;

                            /**
                             * Verifies a ProductCondition message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductCondition message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductCondition
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCondition;

                            /**
                             * Creates a plain object from a ProductCondition message. Also converts values to other types if specified.
                             * @param message ProductCondition
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCondition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductCondition
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ProductCustomAttribute. */
                        interface IProductCustomAttribute {

                            /** ProductCustomAttribute value */
                            value?: (string|null);

                            /** ProductCustomAttribute index */
                            index?: (google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum.ListingGroupFilterCustomAttributeIndex|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum.ListingGroupFilterCustomAttributeIndex|null);
                        }

                        /** Represents a ProductCustomAttribute. */
                        class ProductCustomAttribute implements IProductCustomAttribute {

                            /**
                             * Constructs a new ProductCustomAttribute.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCustomAttribute);

                            /** ProductCustomAttribute value. */
                            public value?: (string|null);

                            /** ProductCustomAttribute index. */
                            public index: (google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum.ListingGroupFilterCustomAttributeIndex|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterCustomAttributeIndexEnum.ListingGroupFilterCustomAttributeIndex);

                            /**
                             * Creates a new ProductCustomAttribute instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductCustomAttribute instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCustomAttribute): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCustomAttribute;

                            /**
                             * Encodes the specified ProductCustomAttribute message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCustomAttribute.verify|verify} messages.
                             * @param message ProductCustomAttribute message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCustomAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductCustomAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCustomAttribute.verify|verify} messages.
                             * @param message ProductCustomAttribute message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductCustomAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductCustomAttribute message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductCustomAttribute
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCustomAttribute;

                            /**
                             * Decodes a ProductCustomAttribute message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductCustomAttribute
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCustomAttribute;

                            /**
                             * Verifies a ProductCustomAttribute message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductCustomAttribute message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductCustomAttribute
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCustomAttribute;

                            /**
                             * Creates a plain object from a ProductCustomAttribute message. Also converts values to other types if specified.
                             * @param message ProductCustomAttribute
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductCustomAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductCustomAttribute to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductCustomAttribute
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ProductItemId. */
                        interface IProductItemId {

                            /** ProductItemId value */
                            value?: (string|null);
                        }

                        /** Represents a ProductItemId. */
                        class ProductItemId implements IProductItemId {

                            /**
                             * Constructs a new ProductItemId.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductItemId);

                            /** ProductItemId value. */
                            public value?: (string|null);

                            /**
                             * Creates a new ProductItemId instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductItemId instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductItemId): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductItemId;

                            /**
                             * Encodes the specified ProductItemId message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductItemId.verify|verify} messages.
                             * @param message ProductItemId message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductItemId, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductItemId message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductItemId.verify|verify} messages.
                             * @param message ProductItemId message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductItemId, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductItemId message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductItemId
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductItemId;

                            /**
                             * Decodes a ProductItemId message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductItemId
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductItemId;

                            /**
                             * Verifies a ProductItemId message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductItemId message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductItemId
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductItemId;

                            /**
                             * Creates a plain object from a ProductItemId message. Also converts values to other types if specified.
                             * @param message ProductItemId
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductItemId, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductItemId to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductItemId
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ProductType. */
                        interface IProductType {

                            /** ProductType value */
                            value?: (string|null);

                            /** ProductType level */
                            level?: (google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum.ListingGroupFilterProductTypeLevel|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum.ListingGroupFilterProductTypeLevel|null);
                        }

                        /** Represents a ProductType. */
                        class ProductType implements IProductType {

                            /**
                             * Constructs a new ProductType.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductType);

                            /** ProductType value. */
                            public value?: (string|null);

                            /** ProductType level. */
                            public level: (google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum.ListingGroupFilterProductTypeLevel|keyof typeof google.ads.googleads.v23.enums.ListingGroupFilterProductTypeLevelEnum.ListingGroupFilterProductTypeLevel);

                            /**
                             * Creates a new ProductType instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductType instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductType): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductType;

                            /**
                             * Encodes the specified ProductType message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductType.verify|verify} messages.
                             * @param message ProductType message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductType, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductType message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductType.verify|verify} messages.
                             * @param message ProductType message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IProductType, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductType message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductType
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductType;

                            /**
                             * Decodes a ProductType message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductType
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductType;

                            /**
                             * Verifies a ProductType message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductType message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductType
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductType;

                            /**
                             * Creates a plain object from a ProductType message. Also converts values to other types if specified.
                             * @param message ProductType
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.ProductType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductType to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductType
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Webpage. */
                        interface IWebpage {

                            /** Webpage conditions */
                            conditions?: (google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpageCondition[]|null);
                        }

                        /** Represents a Webpage. */
                        class Webpage implements IWebpage {

                            /**
                             * Constructs a new Webpage.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpage);

                            /** Webpage conditions. */
                            public conditions: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpageCondition[];

                            /**
                             * Creates a new Webpage instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Webpage instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpage): google.ads.googleads.v23.resources.ListingGroupFilterDimension.Webpage;

                            /**
                             * Encodes the specified Webpage message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.Webpage.verify|verify} messages.
                             * @param message Webpage message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Webpage message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.Webpage.verify|verify} messages.
                             * @param message Webpage message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Webpage message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Webpage
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.Webpage;

                            /**
                             * Decodes a Webpage message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Webpage
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.Webpage;

                            /**
                             * Verifies a Webpage message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Webpage message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Webpage
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.Webpage;

                            /**
                             * Creates a plain object from a Webpage message. Also converts values to other types if specified.
                             * @param message Webpage
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.Webpage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Webpage to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Webpage
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a WebpageCondition. */
                        interface IWebpageCondition {

                            /** WebpageCondition custom_label */
                            custom_label?: (string|null);

                            /** WebpageCondition url_contains */
                            url_contains?: (string|null);
                        }

                        /** Represents a WebpageCondition. */
                        class WebpageCondition implements IWebpageCondition {

                            /**
                             * Constructs a new WebpageCondition.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpageCondition);

                            /** WebpageCondition custom_label. */
                            public custom_label?: (string|null);

                            /** WebpageCondition url_contains. */
                            public url_contains?: (string|null);

                            /** WebpageCondition condition. */
                            public condition?: ("custom_label"|"url_contains");

                            /**
                             * Creates a new WebpageCondition instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns WebpageCondition instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpageCondition): google.ads.googleads.v23.resources.ListingGroupFilterDimension.WebpageCondition;

                            /**
                             * Encodes the specified WebpageCondition message. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.WebpageCondition.verify|verify} messages.
                             * @param message WebpageCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpageCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified WebpageCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ListingGroupFilterDimension.WebpageCondition.verify|verify} messages.
                             * @param message WebpageCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.IWebpageCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a WebpageCondition message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns WebpageCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ListingGroupFilterDimension.WebpageCondition;

                            /**
                             * Decodes a WebpageCondition message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns WebpageCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ListingGroupFilterDimension.WebpageCondition;

                            /**
                             * Verifies a WebpageCondition message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a WebpageCondition message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns WebpageCondition
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ListingGroupFilterDimension.WebpageCondition;

                            /**
                             * Creates a plain object from a WebpageCondition message. Also converts values to other types if specified.
                             * @param message WebpageCondition
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ListingGroupFilterDimension.WebpageCondition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this WebpageCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for WebpageCondition
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an AssetGroupProductGroupView. */
                    interface IAssetGroupProductGroupView {

                        /** AssetGroupProductGroupView resource_name */
                        resource_name?: (string|null);

                        /** AssetGroupProductGroupView asset_group */
                        asset_group?: (string|null);

                        /** AssetGroupProductGroupView asset_group_listing_group_filter */
                        asset_group_listing_group_filter?: (string|null);
                    }

                    /** Represents an AssetGroupProductGroupView. */
                    class AssetGroupProductGroupView implements IAssetGroupProductGroupView {

                        /**
                         * Constructs a new AssetGroupProductGroupView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetGroupProductGroupView);

                        /** AssetGroupProductGroupView resource_name. */
                        public resource_name: string;

                        /** AssetGroupProductGroupView asset_group. */
                        public asset_group: string;

                        /** AssetGroupProductGroupView asset_group_listing_group_filter. */
                        public asset_group_listing_group_filter: string;

                        /**
                         * Creates a new AssetGroupProductGroupView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupProductGroupView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetGroupProductGroupView): google.ads.googleads.v23.resources.AssetGroupProductGroupView;

                        /**
                         * Encodes the specified AssetGroupProductGroupView message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupProductGroupView.verify|verify} messages.
                         * @param message AssetGroupProductGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetGroupProductGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupProductGroupView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupProductGroupView.verify|verify} messages.
                         * @param message AssetGroupProductGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetGroupProductGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupProductGroupView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupProductGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetGroupProductGroupView;

                        /**
                         * Decodes an AssetGroupProductGroupView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupProductGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetGroupProductGroupView;

                        /**
                         * Verifies an AssetGroupProductGroupView message.
                         * @param message Plain 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 AssetGroupProductGroupView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupProductGroupView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetGroupProductGroupView;

                        /**
                         * Creates a plain object from an AssetGroupProductGroupView message. Also converts values to other types if specified.
                         * @param message AssetGroupProductGroupView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetGroupProductGroupView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupProductGroupView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupProductGroupView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupSignal. */
                    interface IAssetGroupSignal {

                        /** AssetGroupSignal resource_name */
                        resource_name?: (string|null);

                        /** AssetGroupSignal asset_group */
                        asset_group?: (string|null);

                        /** AssetGroupSignal approval_status */
                        approval_status?: (google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum.AssetGroupSignalApprovalStatus|keyof typeof google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum.AssetGroupSignalApprovalStatus|null);

                        /** AssetGroupSignal disapproval_reasons */
                        disapproval_reasons?: (string[]|null);

                        /** AssetGroupSignal audience */
                        audience?: (google.ads.googleads.v23.common.IAudienceInfo|null);

                        /** AssetGroupSignal search_theme */
                        search_theme?: (google.ads.googleads.v23.common.ISearchThemeInfo|null);
                    }

                    /** Represents an AssetGroupSignal. */
                    class AssetGroupSignal implements IAssetGroupSignal {

                        /**
                         * Constructs a new AssetGroupSignal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetGroupSignal);

                        /** AssetGroupSignal resource_name. */
                        public resource_name: string;

                        /** AssetGroupSignal asset_group. */
                        public asset_group: string;

                        /** AssetGroupSignal approval_status. */
                        public approval_status: (google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum.AssetGroupSignalApprovalStatus|keyof typeof google.ads.googleads.v23.enums.AssetGroupSignalApprovalStatusEnum.AssetGroupSignalApprovalStatus);

                        /** AssetGroupSignal disapproval_reasons. */
                        public disapproval_reasons: string[];

                        /** AssetGroupSignal audience. */
                        public audience?: (google.ads.googleads.v23.common.IAudienceInfo|null);

                        /** AssetGroupSignal search_theme. */
                        public search_theme?: (google.ads.googleads.v23.common.ISearchThemeInfo|null);

                        /** AssetGroupSignal signal. */
                        public signal?: ("audience"|"search_theme");

                        /**
                         * Creates a new AssetGroupSignal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupSignal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetGroupSignal): google.ads.googleads.v23.resources.AssetGroupSignal;

                        /**
                         * Encodes the specified AssetGroupSignal message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupSignal.verify|verify} messages.
                         * @param message AssetGroupSignal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetGroupSignal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupSignal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupSignal.verify|verify} messages.
                         * @param message AssetGroupSignal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetGroupSignal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupSignal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupSignal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetGroupSignal;

                        /**
                         * Decodes an AssetGroupSignal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupSignal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetGroupSignal;

                        /**
                         * Verifies an AssetGroupSignal message.
                         * @param message Plain 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 AssetGroupSignal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupSignal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetGroupSignal;

                        /**
                         * Creates a plain object from an AssetGroupSignal message. Also converts values to other types if specified.
                         * @param message AssetGroupSignal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetGroupSignal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupSignal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupSignal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupTopCombinationView. */
                    interface IAssetGroupTopCombinationView {

                        /** AssetGroupTopCombinationView resource_name */
                        resource_name?: (string|null);

                        /** AssetGroupTopCombinationView asset_group_top_combinations */
                        asset_group_top_combinations?: (google.ads.googleads.v23.resources.IAssetGroupAssetCombinationData[]|null);
                    }

                    /** Represents an AssetGroupTopCombinationView. */
                    class AssetGroupTopCombinationView implements IAssetGroupTopCombinationView {

                        /**
                         * Constructs a new AssetGroupTopCombinationView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetGroupTopCombinationView);

                        /** AssetGroupTopCombinationView resource_name. */
                        public resource_name: string;

                        /** AssetGroupTopCombinationView asset_group_top_combinations. */
                        public asset_group_top_combinations: google.ads.googleads.v23.resources.IAssetGroupAssetCombinationData[];

                        /**
                         * Creates a new AssetGroupTopCombinationView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupTopCombinationView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetGroupTopCombinationView): google.ads.googleads.v23.resources.AssetGroupTopCombinationView;

                        /**
                         * Encodes the specified AssetGroupTopCombinationView message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupTopCombinationView.verify|verify} messages.
                         * @param message AssetGroupTopCombinationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetGroupTopCombinationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupTopCombinationView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupTopCombinationView.verify|verify} messages.
                         * @param message AssetGroupTopCombinationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetGroupTopCombinationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupTopCombinationView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupTopCombinationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetGroupTopCombinationView;

                        /**
                         * Decodes an AssetGroupTopCombinationView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupTopCombinationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetGroupTopCombinationView;

                        /**
                         * Verifies an AssetGroupTopCombinationView message.
                         * @param message Plain 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 AssetGroupTopCombinationView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupTopCombinationView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetGroupTopCombinationView;

                        /**
                         * Creates a plain object from an AssetGroupTopCombinationView message. Also converts values to other types if specified.
                         * @param message AssetGroupTopCombinationView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetGroupTopCombinationView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupTopCombinationView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupTopCombinationView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupAssetCombinationData. */
                    interface IAssetGroupAssetCombinationData {

                        /** AssetGroupAssetCombinationData asset_combination_served_assets */
                        asset_combination_served_assets?: (google.ads.googleads.v23.common.IAssetUsage[]|null);
                    }

                    /** Represents an AssetGroupAssetCombinationData. */
                    class AssetGroupAssetCombinationData implements IAssetGroupAssetCombinationData {

                        /**
                         * Constructs a new AssetGroupAssetCombinationData.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetGroupAssetCombinationData);

                        /** AssetGroupAssetCombinationData asset_combination_served_assets. */
                        public asset_combination_served_assets: google.ads.googleads.v23.common.IAssetUsage[];

                        /**
                         * Creates a new AssetGroupAssetCombinationData instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupAssetCombinationData instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetGroupAssetCombinationData): google.ads.googleads.v23.resources.AssetGroupAssetCombinationData;

                        /**
                         * Encodes the specified AssetGroupAssetCombinationData message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupAssetCombinationData.verify|verify} messages.
                         * @param message AssetGroupAssetCombinationData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetGroupAssetCombinationData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupAssetCombinationData message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetGroupAssetCombinationData.verify|verify} messages.
                         * @param message AssetGroupAssetCombinationData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetGroupAssetCombinationData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupAssetCombinationData message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupAssetCombinationData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetGroupAssetCombinationData;

                        /**
                         * Decodes an AssetGroupAssetCombinationData message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupAssetCombinationData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetGroupAssetCombinationData;

                        /**
                         * Verifies an AssetGroupAssetCombinationData message.
                         * @param message Plain 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 AssetGroupAssetCombinationData message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupAssetCombinationData
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetGroupAssetCombinationData;

                        /**
                         * Creates a plain object from an AssetGroupAssetCombinationData message. Also converts values to other types if specified.
                         * @param message AssetGroupAssetCombinationData
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetGroupAssetCombinationData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupAssetCombinationData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupAssetCombinationData
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetSet. */
                    interface IAssetSet {

                        /** AssetSet id */
                        id?: (number|null);

                        /** AssetSet resource_name */
                        resource_name?: (string|null);

                        /** AssetSet name */
                        name?: (string|null);

                        /** AssetSet type */
                        type?: (google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType|keyof typeof google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType|null);

                        /** AssetSet status */
                        status?: (google.ads.googleads.v23.enums.AssetSetStatusEnum.AssetSetStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetStatusEnum.AssetSetStatus|null);

                        /** AssetSet merchant_center_feed */
                        merchant_center_feed?: (google.ads.googleads.v23.resources.AssetSet.IMerchantCenterFeed|null);

                        /** AssetSet location_group_parent_asset_set_id */
                        location_group_parent_asset_set_id?: (number|null);

                        /** AssetSet hotel_property_data */
                        hotel_property_data?: (google.ads.googleads.v23.resources.AssetSet.IHotelPropertyData|null);

                        /** AssetSet location_set */
                        location_set?: (google.ads.googleads.v23.common.ILocationSet|null);

                        /** AssetSet business_profile_location_group */
                        business_profile_location_group?: (google.ads.googleads.v23.common.IBusinessProfileLocationGroup|null);

                        /** AssetSet chain_location_group */
                        chain_location_group?: (google.ads.googleads.v23.common.IChainLocationGroup|null);
                    }

                    /** Represents an AssetSet. */
                    class AssetSet implements IAssetSet {

                        /**
                         * Constructs a new AssetSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetSet);

                        /** AssetSet id. */
                        public id: number;

                        /** AssetSet resource_name. */
                        public resource_name: string;

                        /** AssetSet name. */
                        public name: string;

                        /** AssetSet type. */
                        public type: (google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType|keyof typeof google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType);

                        /** AssetSet status. */
                        public status: (google.ads.googleads.v23.enums.AssetSetStatusEnum.AssetSetStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetStatusEnum.AssetSetStatus);

                        /** AssetSet merchant_center_feed. */
                        public merchant_center_feed?: (google.ads.googleads.v23.resources.AssetSet.IMerchantCenterFeed|null);

                        /** AssetSet location_group_parent_asset_set_id. */
                        public location_group_parent_asset_set_id: number;

                        /** AssetSet hotel_property_data. */
                        public hotel_property_data?: (google.ads.googleads.v23.resources.AssetSet.IHotelPropertyData|null);

                        /** AssetSet location_set. */
                        public location_set?: (google.ads.googleads.v23.common.ILocationSet|null);

                        /** AssetSet business_profile_location_group. */
                        public business_profile_location_group?: (google.ads.googleads.v23.common.IBusinessProfileLocationGroup|null);

                        /** AssetSet chain_location_group. */
                        public chain_location_group?: (google.ads.googleads.v23.common.IChainLocationGroup|null);

                        /** AssetSet asset_set_source. */
                        public asset_set_source?: ("location_set"|"business_profile_location_group"|"chain_location_group");

                        /**
                         * Creates a new AssetSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetSet): google.ads.googleads.v23.resources.AssetSet;

                        /**
                         * Encodes the specified AssetSet message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSet.verify|verify} messages.
                         * @param message AssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSet.verify|verify} messages.
                         * @param message AssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetSet;

                        /**
                         * Decodes an AssetSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetSet;

                        /**
                         * Verifies an AssetSet message.
                         * @param message Plain 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 AssetSet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetSet;

                        /**
                         * Creates a plain object from an AssetSet message. Also converts values to other types if specified.
                         * @param message AssetSet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AssetSet {

                        /** Properties of a MerchantCenterFeed. */
                        interface IMerchantCenterFeed {

                            /** MerchantCenterFeed merchant_id */
                            merchant_id?: (number|null);

                            /** MerchantCenterFeed feed_label */
                            feed_label?: (string|null);
                        }

                        /** Represents a MerchantCenterFeed. */
                        class MerchantCenterFeed implements IMerchantCenterFeed {

                            /**
                             * Constructs a new MerchantCenterFeed.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AssetSet.IMerchantCenterFeed);

                            /** MerchantCenterFeed merchant_id. */
                            public merchant_id: number;

                            /** MerchantCenterFeed feed_label. */
                            public feed_label?: (string|null);

                            /**
                             * Creates a new MerchantCenterFeed instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MerchantCenterFeed instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AssetSet.IMerchantCenterFeed): google.ads.googleads.v23.resources.AssetSet.MerchantCenterFeed;

                            /**
                             * Encodes the specified MerchantCenterFeed message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSet.MerchantCenterFeed.verify|verify} messages.
                             * @param message MerchantCenterFeed message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AssetSet.IMerchantCenterFeed, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MerchantCenterFeed message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSet.MerchantCenterFeed.verify|verify} messages.
                             * @param message MerchantCenterFeed message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AssetSet.IMerchantCenterFeed, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MerchantCenterFeed message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MerchantCenterFeed
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetSet.MerchantCenterFeed;

                            /**
                             * Decodes a MerchantCenterFeed message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MerchantCenterFeed
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetSet.MerchantCenterFeed;

                            /**
                             * Verifies a MerchantCenterFeed message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MerchantCenterFeed message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MerchantCenterFeed
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetSet.MerchantCenterFeed;

                            /**
                             * Creates a plain object from a MerchantCenterFeed message. Also converts values to other types if specified.
                             * @param message MerchantCenterFeed
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AssetSet.MerchantCenterFeed, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MerchantCenterFeed to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MerchantCenterFeed
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a HotelPropertyData. */
                        interface IHotelPropertyData {

                            /** HotelPropertyData hotel_center_id */
                            hotel_center_id?: (number|null);

                            /** HotelPropertyData partner_name */
                            partner_name?: (string|null);
                        }

                        /** Represents a HotelPropertyData. */
                        class HotelPropertyData implements IHotelPropertyData {

                            /**
                             * Constructs a new HotelPropertyData.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.AssetSet.IHotelPropertyData);

                            /** HotelPropertyData hotel_center_id. */
                            public hotel_center_id?: (number|null);

                            /** HotelPropertyData partner_name. */
                            public partner_name?: (string|null);

                            /**
                             * Creates a new HotelPropertyData instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns HotelPropertyData instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.AssetSet.IHotelPropertyData): google.ads.googleads.v23.resources.AssetSet.HotelPropertyData;

                            /**
                             * Encodes the specified HotelPropertyData message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSet.HotelPropertyData.verify|verify} messages.
                             * @param message HotelPropertyData message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.AssetSet.IHotelPropertyData, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified HotelPropertyData message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSet.HotelPropertyData.verify|verify} messages.
                             * @param message HotelPropertyData message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.AssetSet.IHotelPropertyData, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a HotelPropertyData message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns HotelPropertyData
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetSet.HotelPropertyData;

                            /**
                             * Decodes a HotelPropertyData message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns HotelPropertyData
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetSet.HotelPropertyData;

                            /**
                             * Verifies a HotelPropertyData message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a HotelPropertyData message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns HotelPropertyData
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetSet.HotelPropertyData;

                            /**
                             * Creates a plain object from a HotelPropertyData message. Also converts values to other types if specified.
                             * @param message HotelPropertyData
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.AssetSet.HotelPropertyData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this HotelPropertyData to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for HotelPropertyData
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an AssetSetAsset. */
                    interface IAssetSetAsset {

                        /** AssetSetAsset resource_name */
                        resource_name?: (string|null);

                        /** AssetSetAsset asset_set */
                        asset_set?: (string|null);

                        /** AssetSetAsset asset */
                        asset?: (string|null);

                        /** AssetSetAsset status */
                        status?: (google.ads.googleads.v23.enums.AssetSetAssetStatusEnum.AssetSetAssetStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetAssetStatusEnum.AssetSetAssetStatus|null);
                    }

                    /** Represents an AssetSetAsset. */
                    class AssetSetAsset implements IAssetSetAsset {

                        /**
                         * Constructs a new AssetSetAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetSetAsset);

                        /** AssetSetAsset resource_name. */
                        public resource_name: string;

                        /** AssetSetAsset asset_set. */
                        public asset_set: string;

                        /** AssetSetAsset asset. */
                        public asset: string;

                        /** AssetSetAsset status. */
                        public status: (google.ads.googleads.v23.enums.AssetSetAssetStatusEnum.AssetSetAssetStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetAssetStatusEnum.AssetSetAssetStatus);

                        /**
                         * Creates a new AssetSetAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetSetAsset): google.ads.googleads.v23.resources.AssetSetAsset;

                        /**
                         * Encodes the specified AssetSetAsset message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSetAsset.verify|verify} messages.
                         * @param message AssetSetAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetSetAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSetAsset.verify|verify} messages.
                         * @param message AssetSetAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetSetAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetAsset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetSetAsset;

                        /**
                         * Decodes an AssetSetAsset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetSetAsset;

                        /**
                         * Verifies an AssetSetAsset message.
                         * @param message Plain 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 AssetSetAsset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetAsset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetSetAsset;

                        /**
                         * Creates a plain object from an AssetSetAsset message. Also converts values to other types if specified.
                         * @param message AssetSetAsset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetSetAsset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetAsset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetSetTypeView. */
                    interface IAssetSetTypeView {

                        /** AssetSetTypeView resource_name */
                        resource_name?: (string|null);

                        /** AssetSetTypeView asset_set_type */
                        asset_set_type?: (google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType|keyof typeof google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType|null);
                    }

                    /** Represents an AssetSetTypeView. */
                    class AssetSetTypeView implements IAssetSetTypeView {

                        /**
                         * Constructs a new AssetSetTypeView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAssetSetTypeView);

                        /** AssetSetTypeView resource_name. */
                        public resource_name: string;

                        /** AssetSetTypeView asset_set_type. */
                        public asset_set_type: (google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType|keyof typeof google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType);

                        /**
                         * Creates a new AssetSetTypeView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetTypeView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAssetSetTypeView): google.ads.googleads.v23.resources.AssetSetTypeView;

                        /**
                         * Encodes the specified AssetSetTypeView message. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSetTypeView.verify|verify} messages.
                         * @param message AssetSetTypeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAssetSetTypeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetTypeView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AssetSetTypeView.verify|verify} messages.
                         * @param message AssetSetTypeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAssetSetTypeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetTypeView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetTypeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AssetSetTypeView;

                        /**
                         * Decodes an AssetSetTypeView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetTypeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AssetSetTypeView;

                        /**
                         * Verifies an AssetSetTypeView message.
                         * @param message Plain 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 AssetSetTypeView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetTypeView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AssetSetTypeView;

                        /**
                         * Creates a plain object from an AssetSetTypeView message. Also converts values to other types if specified.
                         * @param message AssetSetTypeView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AssetSetTypeView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetTypeView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetTypeView
                         * @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 resource_name */
                        resource_name?: (string|null);

                        /** Audience id */
                        id?: (number|null);

                        /** Audience status */
                        status?: (google.ads.googleads.v23.enums.AudienceStatusEnum.AudienceStatus|keyof typeof google.ads.googleads.v23.enums.AudienceStatusEnum.AudienceStatus|null);

                        /** Audience name */
                        name?: (string|null);

                        /** Audience description */
                        description?: (string|null);

                        /** Audience dimensions */
                        dimensions?: (google.ads.googleads.v23.common.IAudienceDimension[]|null);

                        /** Audience exclusion_dimension */
                        exclusion_dimension?: (google.ads.googleads.v23.common.IAudienceExclusionDimension|null);

                        /** Audience scope */
                        scope?: (google.ads.googleads.v23.enums.AudienceScopeEnum.AudienceScope|keyof typeof google.ads.googleads.v23.enums.AudienceScopeEnum.AudienceScope|null);

                        /** Audience asset_group */
                        asset_group?: (string|null);
                    }

                    /** Represents an Audience. */
                    class Audience implements IAudience {

                        /**
                         * Constructs a new Audience.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAudience);

                        /** Audience resource_name. */
                        public resource_name: string;

                        /** Audience id. */
                        public id: number;

                        /** Audience status. */
                        public status: (google.ads.googleads.v23.enums.AudienceStatusEnum.AudienceStatus|keyof typeof google.ads.googleads.v23.enums.AudienceStatusEnum.AudienceStatus);

                        /** Audience name. */
                        public name?: (string|null);

                        /** Audience description. */
                        public description: string;

                        /** Audience dimensions. */
                        public dimensions: google.ads.googleads.v23.common.IAudienceDimension[];

                        /** Audience exclusion_dimension. */
                        public exclusion_dimension?: (google.ads.googleads.v23.common.IAudienceExclusionDimension|null);

                        /** Audience scope. */
                        public scope: (google.ads.googleads.v23.enums.AudienceScopeEnum.AudienceScope|keyof typeof google.ads.googleads.v23.enums.AudienceScopeEnum.AudienceScope);

                        /** Audience asset_group. */
                        public asset_group: string;

                        /**
                         * Creates a new Audience instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Audience instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAudience): google.ads.googleads.v23.resources.Audience;

                        /**
                         * Encodes the specified Audience message. Does not implicitly {@link google.ads.googleads.v23.resources.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.ads.googleads.v23.resources.IAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Audience message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.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.ads.googleads.v23.resources.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.ads.googleads.v23.resources.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.ads.googleads.v23.resources.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.ads.googleads.v23.resources.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.ads.googleads.v23.resources.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 BatchJob. */
                    interface IBatchJob {

                        /** BatchJob resource_name */
                        resource_name?: (string|null);

                        /** BatchJob id */
                        id?: (number|null);

                        /** BatchJob next_add_sequence_token */
                        next_add_sequence_token?: (string|null);

                        /** BatchJob metadata */
                        metadata?: (google.ads.googleads.v23.resources.BatchJob.IBatchJobMetadata|null);

                        /** BatchJob status */
                        status?: (google.ads.googleads.v23.enums.BatchJobStatusEnum.BatchJobStatus|keyof typeof google.ads.googleads.v23.enums.BatchJobStatusEnum.BatchJobStatus|null);

                        /** BatchJob long_running_operation */
                        long_running_operation?: (string|null);
                    }

                    /** Represents a BatchJob. */
                    class BatchJob implements IBatchJob {

                        /**
                         * Constructs a new BatchJob.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBatchJob);

                        /** BatchJob resource_name. */
                        public resource_name: string;

                        /** BatchJob id. */
                        public id?: (number|null);

                        /** BatchJob next_add_sequence_token. */
                        public next_add_sequence_token?: (string|null);

                        /** BatchJob metadata. */
                        public metadata?: (google.ads.googleads.v23.resources.BatchJob.IBatchJobMetadata|null);

                        /** BatchJob status. */
                        public status: (google.ads.googleads.v23.enums.BatchJobStatusEnum.BatchJobStatus|keyof typeof google.ads.googleads.v23.enums.BatchJobStatusEnum.BatchJobStatus);

                        /** BatchJob long_running_operation. */
                        public long_running_operation?: (string|null);

                        /**
                         * Creates a new BatchJob instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJob instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBatchJob): google.ads.googleads.v23.resources.BatchJob;

                        /**
                         * Encodes the specified BatchJob message. Does not implicitly {@link google.ads.googleads.v23.resources.BatchJob.verify|verify} messages.
                         * @param message BatchJob message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBatchJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJob message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BatchJob.verify|verify} messages.
                         * @param message BatchJob message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBatchJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJob message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BatchJob
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BatchJob;

                        /**
                         * Decodes a BatchJob message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BatchJob
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BatchJob;

                        /**
                         * Verifies a BatchJob message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJob message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BatchJob
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BatchJob;

                        /**
                         * Creates a plain object from a BatchJob message. Also converts values to other types if specified.
                         * @param message BatchJob
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BatchJob, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJob to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BatchJob
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BatchJob {

                        /** Properties of a BatchJobMetadata. */
                        interface IBatchJobMetadata {

                            /** BatchJobMetadata creation_date_time */
                            creation_date_time?: (string|null);

                            /** BatchJobMetadata start_date_time */
                            start_date_time?: (string|null);

                            /** BatchJobMetadata completion_date_time */
                            completion_date_time?: (string|null);

                            /** BatchJobMetadata estimated_completion_ratio */
                            estimated_completion_ratio?: (number|null);

                            /** BatchJobMetadata operation_count */
                            operation_count?: (number|null);

                            /** BatchJobMetadata executed_operation_count */
                            executed_operation_count?: (number|null);

                            /** BatchJobMetadata execution_limit_seconds */
                            execution_limit_seconds?: (number|null);
                        }

                        /** Represents a BatchJobMetadata. */
                        class BatchJobMetadata implements IBatchJobMetadata {

                            /**
                             * Constructs a new BatchJobMetadata.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.BatchJob.IBatchJobMetadata);

                            /** BatchJobMetadata creation_date_time. */
                            public creation_date_time?: (string|null);

                            /** BatchJobMetadata start_date_time. */
                            public start_date_time?: (string|null);

                            /** BatchJobMetadata completion_date_time. */
                            public completion_date_time?: (string|null);

                            /** BatchJobMetadata estimated_completion_ratio. */
                            public estimated_completion_ratio?: (number|null);

                            /** BatchJobMetadata operation_count. */
                            public operation_count?: (number|null);

                            /** BatchJobMetadata executed_operation_count. */
                            public executed_operation_count?: (number|null);

                            /** BatchJobMetadata execution_limit_seconds. */
                            public execution_limit_seconds?: (number|null);

                            /**
                             * Creates a new BatchJobMetadata instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns BatchJobMetadata instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.BatchJob.IBatchJobMetadata): google.ads.googleads.v23.resources.BatchJob.BatchJobMetadata;

                            /**
                             * Encodes the specified BatchJobMetadata message. Does not implicitly {@link google.ads.googleads.v23.resources.BatchJob.BatchJobMetadata.verify|verify} messages.
                             * @param message BatchJobMetadata message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.BatchJob.IBatchJobMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BatchJobMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BatchJob.BatchJobMetadata.verify|verify} messages.
                             * @param message BatchJobMetadata message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.BatchJob.IBatchJobMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BatchJobMetadata message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns BatchJobMetadata
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BatchJob.BatchJobMetadata;

                            /**
                             * Decodes a BatchJobMetadata message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns BatchJobMetadata
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BatchJob.BatchJobMetadata;

                            /**
                             * Verifies a BatchJobMetadata message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BatchJobMetadata message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns BatchJobMetadata
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BatchJob.BatchJobMetadata;

                            /**
                             * Creates a plain object from a BatchJobMetadata message. Also converts values to other types if specified.
                             * @param message BatchJobMetadata
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.BatchJob.BatchJobMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BatchJobMetadata to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for BatchJobMetadata
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a BiddingDataExclusion. */
                    interface IBiddingDataExclusion {

                        /** BiddingDataExclusion resource_name */
                        resource_name?: (string|null);

                        /** BiddingDataExclusion data_exclusion_id */
                        data_exclusion_id?: (number|null);

                        /** BiddingDataExclusion scope */
                        scope?: (google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|null);

                        /** BiddingDataExclusion status */
                        status?: (google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|null);

                        /** BiddingDataExclusion start_date_time */
                        start_date_time?: (string|null);

                        /** BiddingDataExclusion end_date_time */
                        end_date_time?: (string|null);

                        /** BiddingDataExclusion name */
                        name?: (string|null);

                        /** BiddingDataExclusion description */
                        description?: (string|null);

                        /** BiddingDataExclusion devices */
                        devices?: (google.ads.googleads.v23.enums.DeviceEnum.Device[]|null);

                        /** BiddingDataExclusion campaigns */
                        campaigns?: (string[]|null);

                        /** BiddingDataExclusion advertising_channel_types */
                        advertising_channel_types?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType[]|null);
                    }

                    /** Represents a BiddingDataExclusion. */
                    class BiddingDataExclusion implements IBiddingDataExclusion {

                        /**
                         * Constructs a new BiddingDataExclusion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBiddingDataExclusion);

                        /** BiddingDataExclusion resource_name. */
                        public resource_name: string;

                        /** BiddingDataExclusion data_exclusion_id. */
                        public data_exclusion_id: number;

                        /** BiddingDataExclusion scope. */
                        public scope: (google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope);

                        /** BiddingDataExclusion status. */
                        public status: (google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus);

                        /** BiddingDataExclusion start_date_time. */
                        public start_date_time: string;

                        /** BiddingDataExclusion end_date_time. */
                        public end_date_time: string;

                        /** BiddingDataExclusion name. */
                        public name: string;

                        /** BiddingDataExclusion description. */
                        public description: string;

                        /** BiddingDataExclusion devices. */
                        public devices: google.ads.googleads.v23.enums.DeviceEnum.Device[];

                        /** BiddingDataExclusion campaigns. */
                        public campaigns: string[];

                        /** BiddingDataExclusion advertising_channel_types. */
                        public advertising_channel_types: google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType[];

                        /**
                         * Creates a new BiddingDataExclusion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingDataExclusion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBiddingDataExclusion): google.ads.googleads.v23.resources.BiddingDataExclusion;

                        /**
                         * Encodes the specified BiddingDataExclusion message. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingDataExclusion.verify|verify} messages.
                         * @param message BiddingDataExclusion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBiddingDataExclusion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingDataExclusion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingDataExclusion.verify|verify} messages.
                         * @param message BiddingDataExclusion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBiddingDataExclusion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingDataExclusion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingDataExclusion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BiddingDataExclusion;

                        /**
                         * Decodes a BiddingDataExclusion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingDataExclusion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BiddingDataExclusion;

                        /**
                         * Verifies a BiddingDataExclusion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingDataExclusion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingDataExclusion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BiddingDataExclusion;

                        /**
                         * Creates a plain object from a BiddingDataExclusion message. Also converts values to other types if specified.
                         * @param message BiddingDataExclusion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BiddingDataExclusion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingDataExclusion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingDataExclusion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BiddingSeasonalityAdjustment. */
                    interface IBiddingSeasonalityAdjustment {

                        /** BiddingSeasonalityAdjustment resource_name */
                        resource_name?: (string|null);

                        /** BiddingSeasonalityAdjustment seasonality_adjustment_id */
                        seasonality_adjustment_id?: (number|null);

                        /** BiddingSeasonalityAdjustment scope */
                        scope?: (google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|null);

                        /** BiddingSeasonalityAdjustment status */
                        status?: (google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|null);

                        /** BiddingSeasonalityAdjustment start_date_time */
                        start_date_time?: (string|null);

                        /** BiddingSeasonalityAdjustment end_date_time */
                        end_date_time?: (string|null);

                        /** BiddingSeasonalityAdjustment name */
                        name?: (string|null);

                        /** BiddingSeasonalityAdjustment description */
                        description?: (string|null);

                        /** BiddingSeasonalityAdjustment devices */
                        devices?: (google.ads.googleads.v23.enums.DeviceEnum.Device[]|null);

                        /** BiddingSeasonalityAdjustment conversion_rate_modifier */
                        conversion_rate_modifier?: (number|null);

                        /** BiddingSeasonalityAdjustment campaigns */
                        campaigns?: (string[]|null);

                        /** BiddingSeasonalityAdjustment advertising_channel_types */
                        advertising_channel_types?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType[]|null);
                    }

                    /** Represents a BiddingSeasonalityAdjustment. */
                    class BiddingSeasonalityAdjustment implements IBiddingSeasonalityAdjustment {

                        /**
                         * Constructs a new BiddingSeasonalityAdjustment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment);

                        /** BiddingSeasonalityAdjustment resource_name. */
                        public resource_name: string;

                        /** BiddingSeasonalityAdjustment seasonality_adjustment_id. */
                        public seasonality_adjustment_id: number;

                        /** BiddingSeasonalityAdjustment scope. */
                        public scope: (google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventScopeEnum.SeasonalityEventScope);

                        /** BiddingSeasonalityAdjustment status. */
                        public status: (google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v23.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus);

                        /** BiddingSeasonalityAdjustment start_date_time. */
                        public start_date_time: string;

                        /** BiddingSeasonalityAdjustment end_date_time. */
                        public end_date_time: string;

                        /** BiddingSeasonalityAdjustment name. */
                        public name: string;

                        /** BiddingSeasonalityAdjustment description. */
                        public description: string;

                        /** BiddingSeasonalityAdjustment devices. */
                        public devices: google.ads.googleads.v23.enums.DeviceEnum.Device[];

                        /** BiddingSeasonalityAdjustment conversion_rate_modifier. */
                        public conversion_rate_modifier: number;

                        /** BiddingSeasonalityAdjustment campaigns. */
                        public campaigns: string[];

                        /** BiddingSeasonalityAdjustment advertising_channel_types. */
                        public advertising_channel_types: google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType[];

                        /**
                         * Creates a new BiddingSeasonalityAdjustment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingSeasonalityAdjustment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment): google.ads.googleads.v23.resources.BiddingSeasonalityAdjustment;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustment message. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingSeasonalityAdjustment.verify|verify} messages.
                         * @param message BiddingSeasonalityAdjustment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingSeasonalityAdjustment.verify|verify} messages.
                         * @param message BiddingSeasonalityAdjustment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingSeasonalityAdjustment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingSeasonalityAdjustment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BiddingSeasonalityAdjustment;

                        /**
                         * Decodes a BiddingSeasonalityAdjustment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingSeasonalityAdjustment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BiddingSeasonalityAdjustment;

                        /**
                         * Verifies a BiddingSeasonalityAdjustment message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingSeasonalityAdjustment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingSeasonalityAdjustment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BiddingSeasonalityAdjustment;

                        /**
                         * Creates a plain object from a BiddingSeasonalityAdjustment message. Also converts values to other types if specified.
                         * @param message BiddingSeasonalityAdjustment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BiddingSeasonalityAdjustment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingSeasonalityAdjustment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingSeasonalityAdjustment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BiddingStrategy. */
                    interface IBiddingStrategy {

                        /** BiddingStrategy resource_name */
                        resource_name?: (string|null);

                        /** BiddingStrategy id */
                        id?: (number|null);

                        /** BiddingStrategy name */
                        name?: (string|null);

                        /** BiddingStrategy status */
                        status?: (google.ads.googleads.v23.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus|null);

                        /** BiddingStrategy type */
                        type?: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|null);

                        /** BiddingStrategy currency_code */
                        currency_code?: (string|null);

                        /** BiddingStrategy effective_currency_code */
                        effective_currency_code?: (string|null);

                        /** BiddingStrategy aligned_campaign_budget_id */
                        aligned_campaign_budget_id?: (number|null);

                        /** BiddingStrategy campaign_count */
                        campaign_count?: (number|null);

                        /** BiddingStrategy non_removed_campaign_count */
                        non_removed_campaign_count?: (number|null);

                        /** BiddingStrategy enhanced_cpc */
                        enhanced_cpc?: (google.ads.googleads.v23.common.IEnhancedCpc|null);

                        /** BiddingStrategy maximize_conversion_value */
                        maximize_conversion_value?: (google.ads.googleads.v23.common.IMaximizeConversionValue|null);

                        /** BiddingStrategy maximize_conversions */
                        maximize_conversions?: (google.ads.googleads.v23.common.IMaximizeConversions|null);

                        /** BiddingStrategy target_cpa */
                        target_cpa?: (google.ads.googleads.v23.common.ITargetCpa|null);

                        /** BiddingStrategy target_impression_share */
                        target_impression_share?: (google.ads.googleads.v23.common.ITargetImpressionShare|null);

                        /** BiddingStrategy target_roas */
                        target_roas?: (google.ads.googleads.v23.common.ITargetRoas|null);

                        /** BiddingStrategy target_spend */
                        target_spend?: (google.ads.googleads.v23.common.ITargetSpend|null);
                    }

                    /** Represents a BiddingStrategy. */
                    class BiddingStrategy implements IBiddingStrategy {

                        /**
                         * Constructs a new BiddingStrategy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBiddingStrategy);

                        /** BiddingStrategy resource_name. */
                        public resource_name: string;

                        /** BiddingStrategy id. */
                        public id?: (number|null);

                        /** BiddingStrategy name. */
                        public name?: (string|null);

                        /** BiddingStrategy status. */
                        public status: (google.ads.googleads.v23.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus);

                        /** BiddingStrategy type. */
                        public type: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType);

                        /** BiddingStrategy currency_code. */
                        public currency_code: string;

                        /** BiddingStrategy effective_currency_code. */
                        public effective_currency_code?: (string|null);

                        /** BiddingStrategy aligned_campaign_budget_id. */
                        public aligned_campaign_budget_id: number;

                        /** BiddingStrategy campaign_count. */
                        public campaign_count?: (number|null);

                        /** BiddingStrategy non_removed_campaign_count. */
                        public non_removed_campaign_count?: (number|null);

                        /** BiddingStrategy enhanced_cpc. */
                        public enhanced_cpc?: (google.ads.googleads.v23.common.IEnhancedCpc|null);

                        /** BiddingStrategy maximize_conversion_value. */
                        public maximize_conversion_value?: (google.ads.googleads.v23.common.IMaximizeConversionValue|null);

                        /** BiddingStrategy maximize_conversions. */
                        public maximize_conversions?: (google.ads.googleads.v23.common.IMaximizeConversions|null);

                        /** BiddingStrategy target_cpa. */
                        public target_cpa?: (google.ads.googleads.v23.common.ITargetCpa|null);

                        /** BiddingStrategy target_impression_share. */
                        public target_impression_share?: (google.ads.googleads.v23.common.ITargetImpressionShare|null);

                        /** BiddingStrategy target_roas. */
                        public target_roas?: (google.ads.googleads.v23.common.ITargetRoas|null);

                        /** BiddingStrategy target_spend. */
                        public target_spend?: (google.ads.googleads.v23.common.ITargetSpend|null);

                        /** BiddingStrategy scheme. */
                        public scheme?: ("enhanced_cpc"|"maximize_conversion_value"|"maximize_conversions"|"target_cpa"|"target_impression_share"|"target_roas"|"target_spend");

                        /**
                         * Creates a new BiddingStrategy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingStrategy instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBiddingStrategy): google.ads.googleads.v23.resources.BiddingStrategy;

                        /**
                         * Encodes the specified BiddingStrategy message. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingStrategy.verify|verify} messages.
                         * @param message BiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingStrategy.verify|verify} messages.
                         * @param message BiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BiddingStrategy;

                        /**
                         * Decodes a BiddingStrategy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BiddingStrategy;

                        /**
                         * Verifies a BiddingStrategy message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingStrategy
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BiddingStrategy;

                        /**
                         * Creates a plain object from a BiddingStrategy message. Also converts values to other types if specified.
                         * @param message BiddingStrategy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BiddingStrategy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingStrategy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BiddingStrategySimulation. */
                    interface IBiddingStrategySimulation {

                        /** BiddingStrategySimulation resource_name */
                        resource_name?: (string|null);

                        /** BiddingStrategySimulation bidding_strategy_id */
                        bidding_strategy_id?: (number|null);

                        /** BiddingStrategySimulation type */
                        type?: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|null);

                        /** BiddingStrategySimulation modification_method */
                        modification_method?: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|null);

                        /** BiddingStrategySimulation start_date */
                        start_date?: (string|null);

                        /** BiddingStrategySimulation end_date */
                        end_date?: (string|null);

                        /** BiddingStrategySimulation target_cpa_point_list */
                        target_cpa_point_list?: (google.ads.googleads.v23.common.ITargetCpaSimulationPointList|null);

                        /** BiddingStrategySimulation target_roas_point_list */
                        target_roas_point_list?: (google.ads.googleads.v23.common.ITargetRoasSimulationPointList|null);
                    }

                    /** Represents a BiddingStrategySimulation. */
                    class BiddingStrategySimulation implements IBiddingStrategySimulation {

                        /**
                         * Constructs a new BiddingStrategySimulation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBiddingStrategySimulation);

                        /** BiddingStrategySimulation resource_name. */
                        public resource_name: string;

                        /** BiddingStrategySimulation bidding_strategy_id. */
                        public bidding_strategy_id: number;

                        /** BiddingStrategySimulation type. */
                        public type: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType);

                        /** BiddingStrategySimulation modification_method. */
                        public modification_method: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod);

                        /** BiddingStrategySimulation start_date. */
                        public start_date: string;

                        /** BiddingStrategySimulation end_date. */
                        public end_date: string;

                        /** BiddingStrategySimulation target_cpa_point_list. */
                        public target_cpa_point_list?: (google.ads.googleads.v23.common.ITargetCpaSimulationPointList|null);

                        /** BiddingStrategySimulation target_roas_point_list. */
                        public target_roas_point_list?: (google.ads.googleads.v23.common.ITargetRoasSimulationPointList|null);

                        /** BiddingStrategySimulation point_list. */
                        public point_list?: ("target_cpa_point_list"|"target_roas_point_list");

                        /**
                         * Creates a new BiddingStrategySimulation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingStrategySimulation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBiddingStrategySimulation): google.ads.googleads.v23.resources.BiddingStrategySimulation;

                        /**
                         * Encodes the specified BiddingStrategySimulation message. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingStrategySimulation.verify|verify} messages.
                         * @param message BiddingStrategySimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBiddingStrategySimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategySimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BiddingStrategySimulation.verify|verify} messages.
                         * @param message BiddingStrategySimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBiddingStrategySimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategySimulation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingStrategySimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BiddingStrategySimulation;

                        /**
                         * Decodes a BiddingStrategySimulation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingStrategySimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BiddingStrategySimulation;

                        /**
                         * Verifies a BiddingStrategySimulation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategySimulation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingStrategySimulation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BiddingStrategySimulation;

                        /**
                         * Creates a plain object from a BiddingStrategySimulation message. Also converts values to other types if specified.
                         * @param message BiddingStrategySimulation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BiddingStrategySimulation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategySimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingStrategySimulation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BillingSetup. */
                    interface IBillingSetup {

                        /** BillingSetup resource_name */
                        resource_name?: (string|null);

                        /** BillingSetup id */
                        id?: (number|null);

                        /** BillingSetup status */
                        status?: (google.ads.googleads.v23.enums.BillingSetupStatusEnum.BillingSetupStatus|keyof typeof google.ads.googleads.v23.enums.BillingSetupStatusEnum.BillingSetupStatus|null);

                        /** BillingSetup payments_account */
                        payments_account?: (string|null);

                        /** BillingSetup payments_account_info */
                        payments_account_info?: (google.ads.googleads.v23.resources.BillingSetup.IPaymentsAccountInfo|null);

                        /** BillingSetup start_date_time */
                        start_date_time?: (string|null);

                        /** BillingSetup start_time_type */
                        start_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** BillingSetup end_date_time */
                        end_date_time?: (string|null);

                        /** BillingSetup end_time_type */
                        end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);
                    }

                    /** Represents a BillingSetup. */
                    class BillingSetup implements IBillingSetup {

                        /**
                         * Constructs a new BillingSetup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBillingSetup);

                        /** BillingSetup resource_name. */
                        public resource_name: string;

                        /** BillingSetup id. */
                        public id?: (number|null);

                        /** BillingSetup status. */
                        public status: (google.ads.googleads.v23.enums.BillingSetupStatusEnum.BillingSetupStatus|keyof typeof google.ads.googleads.v23.enums.BillingSetupStatusEnum.BillingSetupStatus);

                        /** BillingSetup payments_account. */
                        public payments_account?: (string|null);

                        /** BillingSetup payments_account_info. */
                        public payments_account_info?: (google.ads.googleads.v23.resources.BillingSetup.IPaymentsAccountInfo|null);

                        /** BillingSetup start_date_time. */
                        public start_date_time?: (string|null);

                        /** BillingSetup start_time_type. */
                        public start_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** BillingSetup end_date_time. */
                        public end_date_time?: (string|null);

                        /** BillingSetup end_time_type. */
                        public end_time_type?: (google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v23.enums.TimeTypeEnum.TimeType|null);

                        /** BillingSetup start_time. */
                        public start_time?: ("start_date_time"|"start_time_type");

                        /** BillingSetup end_time. */
                        public end_time?: ("end_date_time"|"end_time_type");

                        /**
                         * Creates a new BillingSetup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BillingSetup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBillingSetup): google.ads.googleads.v23.resources.BillingSetup;

                        /**
                         * Encodes the specified BillingSetup message. Does not implicitly {@link google.ads.googleads.v23.resources.BillingSetup.verify|verify} messages.
                         * @param message BillingSetup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBillingSetup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BillingSetup.verify|verify} messages.
                         * @param message BillingSetup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBillingSetup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BillingSetup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BillingSetup;

                        /**
                         * Decodes a BillingSetup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BillingSetup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BillingSetup;

                        /**
                         * Verifies a BillingSetup message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BillingSetup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BillingSetup;

                        /**
                         * Creates a plain object from a BillingSetup message. Also converts values to other types if specified.
                         * @param message BillingSetup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BillingSetup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BillingSetup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BillingSetup {

                        /** Properties of a PaymentsAccountInfo. */
                        interface IPaymentsAccountInfo {

                            /** PaymentsAccountInfo payments_account_id */
                            payments_account_id?: (string|null);

                            /** PaymentsAccountInfo payments_account_name */
                            payments_account_name?: (string|null);

                            /** PaymentsAccountInfo payments_profile_id */
                            payments_profile_id?: (string|null);

                            /** PaymentsAccountInfo payments_profile_name */
                            payments_profile_name?: (string|null);

                            /** PaymentsAccountInfo secondary_payments_profile_id */
                            secondary_payments_profile_id?: (string|null);
                        }

                        /** Represents a PaymentsAccountInfo. */
                        class PaymentsAccountInfo implements IPaymentsAccountInfo {

                            /**
                             * Constructs a new PaymentsAccountInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.BillingSetup.IPaymentsAccountInfo);

                            /** PaymentsAccountInfo payments_account_id. */
                            public payments_account_id?: (string|null);

                            /** PaymentsAccountInfo payments_account_name. */
                            public payments_account_name?: (string|null);

                            /** PaymentsAccountInfo payments_profile_id. */
                            public payments_profile_id?: (string|null);

                            /** PaymentsAccountInfo payments_profile_name. */
                            public payments_profile_name?: (string|null);

                            /** PaymentsAccountInfo secondary_payments_profile_id. */
                            public secondary_payments_profile_id?: (string|null);

                            /**
                             * Creates a new PaymentsAccountInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PaymentsAccountInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.BillingSetup.IPaymentsAccountInfo): google.ads.googleads.v23.resources.BillingSetup.PaymentsAccountInfo;

                            /**
                             * Encodes the specified PaymentsAccountInfo message. Does not implicitly {@link google.ads.googleads.v23.resources.BillingSetup.PaymentsAccountInfo.verify|verify} messages.
                             * @param message PaymentsAccountInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.BillingSetup.IPaymentsAccountInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PaymentsAccountInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BillingSetup.PaymentsAccountInfo.verify|verify} messages.
                             * @param message PaymentsAccountInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.BillingSetup.IPaymentsAccountInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PaymentsAccountInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PaymentsAccountInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BillingSetup.PaymentsAccountInfo;

                            /**
                             * Decodes a PaymentsAccountInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PaymentsAccountInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BillingSetup.PaymentsAccountInfo;

                            /**
                             * Verifies a PaymentsAccountInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PaymentsAccountInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PaymentsAccountInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BillingSetup.PaymentsAccountInfo;

                            /**
                             * Creates a plain object from a PaymentsAccountInfo message. Also converts values to other types if specified.
                             * @param message PaymentsAccountInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.BillingSetup.PaymentsAccountInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PaymentsAccountInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PaymentsAccountInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a CallView. */
                    interface ICallView {

                        /** CallView resource_name */
                        resource_name?: (string|null);

                        /** CallView caller_country_code */
                        caller_country_code?: (string|null);

                        /** CallView caller_area_code */
                        caller_area_code?: (string|null);

                        /** CallView call_duration_seconds */
                        call_duration_seconds?: (number|null);

                        /** CallView start_call_date_time */
                        start_call_date_time?: (string|null);

                        /** CallView end_call_date_time */
                        end_call_date_time?: (string|null);

                        /** CallView call_tracking_display_location */
                        call_tracking_display_location?: (google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation|keyof typeof google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation|null);

                        /** CallView type */
                        type?: (google.ads.googleads.v23.enums.CallTypeEnum.CallType|keyof typeof google.ads.googleads.v23.enums.CallTypeEnum.CallType|null);

                        /** CallView call_status */
                        call_status?: (google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum.GoogleVoiceCallStatus|keyof typeof google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum.GoogleVoiceCallStatus|null);
                    }

                    /** Represents a CallView. */
                    class CallView implements ICallView {

                        /**
                         * Constructs a new CallView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICallView);

                        /** CallView resource_name. */
                        public resource_name: string;

                        /** CallView caller_country_code. */
                        public caller_country_code: string;

                        /** CallView caller_area_code. */
                        public caller_area_code: string;

                        /** CallView call_duration_seconds. */
                        public call_duration_seconds: number;

                        /** CallView start_call_date_time. */
                        public start_call_date_time: string;

                        /** CallView end_call_date_time. */
                        public end_call_date_time: string;

                        /** CallView call_tracking_display_location. */
                        public call_tracking_display_location: (google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation|keyof typeof google.ads.googleads.v23.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation);

                        /** CallView type. */
                        public type: (google.ads.googleads.v23.enums.CallTypeEnum.CallType|keyof typeof google.ads.googleads.v23.enums.CallTypeEnum.CallType);

                        /** CallView call_status. */
                        public call_status: (google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum.GoogleVoiceCallStatus|keyof typeof google.ads.googleads.v23.enums.GoogleVoiceCallStatusEnum.GoogleVoiceCallStatus);

                        /**
                         * Creates a new CallView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICallView): google.ads.googleads.v23.resources.CallView;

                        /**
                         * Encodes the specified CallView message. Does not implicitly {@link google.ads.googleads.v23.resources.CallView.verify|verify} messages.
                         * @param message CallView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICallView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CallView.verify|verify} messages.
                         * @param message CallView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICallView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CallView;

                        /**
                         * Decodes a CallView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CallView;

                        /**
                         * Verifies a CallView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CallView;

                        /**
                         * Creates a plain object from a CallView message. Also converts values to other types if specified.
                         * @param message CallView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CallView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Campaign. */
                    interface ICampaign {

                        /** Campaign resource_name */
                        resource_name?: (string|null);

                        /** Campaign id */
                        id?: (number|null);

                        /** Campaign name */
                        name?: (string|null);

                        /** Campaign primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum.CampaignPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum.CampaignPrimaryStatus|null);

                        /** Campaign primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum.CampaignPrimaryStatusReason[]|null);

                        /** Campaign status */
                        status?: (google.ads.googleads.v23.enums.CampaignStatusEnum.CampaignStatus|keyof typeof google.ads.googleads.v23.enums.CampaignStatusEnum.CampaignStatus|null);

                        /** Campaign serving_status */
                        serving_status?: (google.ads.googleads.v23.enums.CampaignServingStatusEnum.CampaignServingStatus|keyof typeof google.ads.googleads.v23.enums.CampaignServingStatusEnum.CampaignServingStatus|null);

                        /** Campaign bidding_strategy_system_status */
                        bidding_strategy_system_status?: (google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum.BiddingStrategySystemStatus|keyof typeof google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum.BiddingStrategySystemStatus|null);

                        /** Campaign ad_serving_optimization_status */
                        ad_serving_optimization_status?: (google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus|keyof typeof google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus|null);

                        /** Campaign advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** Campaign advertising_channel_sub_type */
                        advertising_channel_sub_type?: (google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType|null);

                        /** Campaign tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** Campaign url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v23.common.ICustomParameter[]|null);

                        /** Campaign local_services_campaign_settings */
                        local_services_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.ILocalServicesCampaignSettings|null);

                        /** Campaign travel_campaign_settings */
                        travel_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.ITravelCampaignSettings|null);

                        /** Campaign demand_gen_campaign_settings */
                        demand_gen_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.IDemandGenCampaignSettings|null);

                        /** Campaign video_campaign_settings */
                        video_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.IVideoCampaignSettings|null);

                        /** Campaign pmax_campaign_settings */
                        pmax_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.IPmaxCampaignSettings|null);

                        /** Campaign real_time_bidding_setting */
                        real_time_bidding_setting?: (google.ads.googleads.v23.common.IRealTimeBiddingSetting|null);

                        /** Campaign network_settings */
                        network_settings?: (google.ads.googleads.v23.resources.Campaign.INetworkSettings|null);

                        /** Campaign hotel_setting */
                        hotel_setting?: (google.ads.googleads.v23.resources.Campaign.IHotelSettingInfo|null);

                        /** Campaign dynamic_search_ads_setting */
                        dynamic_search_ads_setting?: (google.ads.googleads.v23.resources.Campaign.IDynamicSearchAdsSetting|null);

                        /** Campaign shopping_setting */
                        shopping_setting?: (google.ads.googleads.v23.resources.Campaign.IShoppingSetting|null);

                        /** Campaign targeting_setting */
                        targeting_setting?: (google.ads.googleads.v23.common.ITargetingSetting|null);

                        /** Campaign audience_setting */
                        audience_setting?: (google.ads.googleads.v23.resources.Campaign.IAudienceSetting|null);

                        /** Campaign geo_target_type_setting */
                        geo_target_type_setting?: (google.ads.googleads.v23.resources.Campaign.IGeoTargetTypeSetting|null);

                        /** Campaign local_campaign_setting */
                        local_campaign_setting?: (google.ads.googleads.v23.resources.Campaign.ILocalCampaignSetting|null);

                        /** Campaign app_campaign_setting */
                        app_campaign_setting?: (google.ads.googleads.v23.resources.Campaign.IAppCampaignSetting|null);

                        /** Campaign labels */
                        labels?: (string[]|null);

                        /** Campaign experiment_type */
                        experiment_type?: (google.ads.googleads.v23.enums.CampaignExperimentTypeEnum.CampaignExperimentType|keyof typeof google.ads.googleads.v23.enums.CampaignExperimentTypeEnum.CampaignExperimentType|null);

                        /** Campaign base_campaign */
                        base_campaign?: (string|null);

                        /** Campaign campaign_budget */
                        campaign_budget?: (string|null);

                        /** Campaign bidding_strategy_type */
                        bidding_strategy_type?: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|null);

                        /** Campaign accessible_bidding_strategy */
                        accessible_bidding_strategy?: (string|null);

                        /** Campaign campaign_group */
                        campaign_group?: (string|null);

                        /** Campaign start_date_time */
                        start_date_time?: (string|null);

                        /** Campaign end_date_time */
                        end_date_time?: (string|null);

                        /** Campaign final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** Campaign frequency_caps */
                        frequency_caps?: (google.ads.googleads.v23.common.IFrequencyCapEntry[]|null);

                        /** Campaign video_brand_safety_suitability */
                        video_brand_safety_suitability?: (google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|keyof typeof google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|null);

                        /** Campaign vanity_pharma */
                        vanity_pharma?: (google.ads.googleads.v23.resources.Campaign.IVanityPharma|null);

                        /** Campaign selective_optimization */
                        selective_optimization?: (google.ads.googleads.v23.resources.Campaign.ISelectiveOptimization|null);

                        /** Campaign optimization_goal_setting */
                        optimization_goal_setting?: (google.ads.googleads.v23.resources.Campaign.IOptimizationGoalSetting|null);

                        /** Campaign tracking_setting */
                        tracking_setting?: (google.ads.googleads.v23.resources.Campaign.ITrackingSetting|null);

                        /** Campaign payment_mode */
                        payment_mode?: (google.ads.googleads.v23.enums.PaymentModeEnum.PaymentMode|keyof typeof google.ads.googleads.v23.enums.PaymentModeEnum.PaymentMode|null);

                        /** Campaign optimization_score */
                        optimization_score?: (number|null);

                        /** Campaign excluded_parent_asset_field_types */
                        excluded_parent_asset_field_types?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[]|null);

                        /** Campaign excluded_parent_asset_set_types */
                        excluded_parent_asset_set_types?: (google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType[]|null);

                        /** Campaign performance_max_upgrade */
                        performance_max_upgrade?: (google.ads.googleads.v23.resources.Campaign.IPerformanceMaxUpgrade|null);

                        /** Campaign hotel_property_asset_set */
                        hotel_property_asset_set?: (string|null);

                        /** Campaign listing_type */
                        listing_type?: (google.ads.googleads.v23.enums.ListingTypeEnum.ListingType|keyof typeof google.ads.googleads.v23.enums.ListingTypeEnum.ListingType|null);

                        /** Campaign asset_automation_settings */
                        asset_automation_settings?: (google.ads.googleads.v23.resources.Campaign.IAssetAutomationSetting[]|null);

                        /** Campaign keyword_match_type */
                        keyword_match_type?: (google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum.CampaignKeywordMatchType|keyof typeof google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum.CampaignKeywordMatchType|null);

                        /** Campaign brand_guidelines_enabled */
                        brand_guidelines_enabled?: (boolean|null);

                        /** Campaign brand_guidelines */
                        brand_guidelines?: (google.ads.googleads.v23.resources.Campaign.IBrandGuidelines|null);

                        /** Campaign third_party_integration_partners */
                        third_party_integration_partners?: (google.ads.googleads.v23.common.ICampaignThirdPartyIntegrationPartners|null);

                        /** Campaign ai_max_setting */
                        ai_max_setting?: (google.ads.googleads.v23.resources.Campaign.IAiMaxSetting|null);

                        /** Campaign contains_eu_political_advertising */
                        contains_eu_political_advertising?: (google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum.EuPoliticalAdvertisingStatus|keyof typeof google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum.EuPoliticalAdvertisingStatus|null);

                        /** Campaign feed_types */
                        feed_types?: (google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType[]|null);

                        /** Campaign bidding_strategy */
                        bidding_strategy?: (string|null);

                        /** Campaign commission */
                        commission?: (google.ads.googleads.v23.common.ICommission|null);

                        /** Campaign manual_cpa */
                        manual_cpa?: (google.ads.googleads.v23.common.IManualCpa|null);

                        /** Campaign manual_cpc */
                        manual_cpc?: (google.ads.googleads.v23.common.IManualCpc|null);

                        /** Campaign manual_cpm */
                        manual_cpm?: (google.ads.googleads.v23.common.IManualCpm|null);

                        /** Campaign manual_cpv */
                        manual_cpv?: (google.ads.googleads.v23.common.IManualCpv|null);

                        /** Campaign maximize_conversions */
                        maximize_conversions?: (google.ads.googleads.v23.common.IMaximizeConversions|null);

                        /** Campaign maximize_conversion_value */
                        maximize_conversion_value?: (google.ads.googleads.v23.common.IMaximizeConversionValue|null);

                        /** Campaign target_cpa */
                        target_cpa?: (google.ads.googleads.v23.common.ITargetCpa|null);

                        /** Campaign target_impression_share */
                        target_impression_share?: (google.ads.googleads.v23.common.ITargetImpressionShare|null);

                        /** Campaign target_roas */
                        target_roas?: (google.ads.googleads.v23.common.ITargetRoas|null);

                        /** Campaign target_spend */
                        target_spend?: (google.ads.googleads.v23.common.ITargetSpend|null);

                        /** Campaign percent_cpc */
                        percent_cpc?: (google.ads.googleads.v23.common.IPercentCpc|null);

                        /** Campaign target_cpm */
                        target_cpm?: (google.ads.googleads.v23.common.ITargetCpm|null);

                        /** Campaign fixed_cpm */
                        fixed_cpm?: (google.ads.googleads.v23.common.IFixedCpm|null);

                        /** Campaign target_cpv */
                        target_cpv?: (google.ads.googleads.v23.common.ITargetCpv|null);

                        /** Campaign target_cpc */
                        target_cpc?: (google.ads.googleads.v23.common.ITargetCpc|null);
                    }

                    /** Represents a Campaign. */
                    class Campaign implements ICampaign {

                        /**
                         * Constructs a new Campaign.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaign);

                        /** Campaign resource_name. */
                        public resource_name: string;

                        /** Campaign id. */
                        public id?: (number|null);

                        /** Campaign name. */
                        public name?: (string|null);

                        /** Campaign primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum.CampaignPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.CampaignPrimaryStatusEnum.CampaignPrimaryStatus);

                        /** Campaign primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.CampaignPrimaryStatusReasonEnum.CampaignPrimaryStatusReason[];

                        /** Campaign status. */
                        public status: (google.ads.googleads.v23.enums.CampaignStatusEnum.CampaignStatus|keyof typeof google.ads.googleads.v23.enums.CampaignStatusEnum.CampaignStatus);

                        /** Campaign serving_status. */
                        public serving_status: (google.ads.googleads.v23.enums.CampaignServingStatusEnum.CampaignServingStatus|keyof typeof google.ads.googleads.v23.enums.CampaignServingStatusEnum.CampaignServingStatus);

                        /** Campaign bidding_strategy_system_status. */
                        public bidding_strategy_system_status: (google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum.BiddingStrategySystemStatus|keyof typeof google.ads.googleads.v23.enums.BiddingStrategySystemStatusEnum.BiddingStrategySystemStatus);

                        /** Campaign ad_serving_optimization_status. */
                        public ad_serving_optimization_status: (google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus|keyof typeof google.ads.googleads.v23.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus);

                        /** Campaign advertising_channel_type. */
                        public advertising_channel_type: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType);

                        /** Campaign advertising_channel_sub_type. */
                        public advertising_channel_sub_type: (google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType);

                        /** Campaign tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** Campaign url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v23.common.ICustomParameter[];

                        /** Campaign local_services_campaign_settings. */
                        public local_services_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.ILocalServicesCampaignSettings|null);

                        /** Campaign travel_campaign_settings. */
                        public travel_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.ITravelCampaignSettings|null);

                        /** Campaign demand_gen_campaign_settings. */
                        public demand_gen_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.IDemandGenCampaignSettings|null);

                        /** Campaign video_campaign_settings. */
                        public video_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.IVideoCampaignSettings|null);

                        /** Campaign pmax_campaign_settings. */
                        public pmax_campaign_settings?: (google.ads.googleads.v23.resources.Campaign.IPmaxCampaignSettings|null);

                        /** Campaign real_time_bidding_setting. */
                        public real_time_bidding_setting?: (google.ads.googleads.v23.common.IRealTimeBiddingSetting|null);

                        /** Campaign network_settings. */
                        public network_settings?: (google.ads.googleads.v23.resources.Campaign.INetworkSettings|null);

                        /** Campaign hotel_setting. */
                        public hotel_setting?: (google.ads.googleads.v23.resources.Campaign.IHotelSettingInfo|null);

                        /** Campaign dynamic_search_ads_setting. */
                        public dynamic_search_ads_setting?: (google.ads.googleads.v23.resources.Campaign.IDynamicSearchAdsSetting|null);

                        /** Campaign shopping_setting. */
                        public shopping_setting?: (google.ads.googleads.v23.resources.Campaign.IShoppingSetting|null);

                        /** Campaign targeting_setting. */
                        public targeting_setting?: (google.ads.googleads.v23.common.ITargetingSetting|null);

                        /** Campaign audience_setting. */
                        public audience_setting?: (google.ads.googleads.v23.resources.Campaign.IAudienceSetting|null);

                        /** Campaign geo_target_type_setting. */
                        public geo_target_type_setting?: (google.ads.googleads.v23.resources.Campaign.IGeoTargetTypeSetting|null);

                        /** Campaign local_campaign_setting. */
                        public local_campaign_setting?: (google.ads.googleads.v23.resources.Campaign.ILocalCampaignSetting|null);

                        /** Campaign app_campaign_setting. */
                        public app_campaign_setting?: (google.ads.googleads.v23.resources.Campaign.IAppCampaignSetting|null);

                        /** Campaign labels. */
                        public labels: string[];

                        /** Campaign experiment_type. */
                        public experiment_type: (google.ads.googleads.v23.enums.CampaignExperimentTypeEnum.CampaignExperimentType|keyof typeof google.ads.googleads.v23.enums.CampaignExperimentTypeEnum.CampaignExperimentType);

                        /** Campaign base_campaign. */
                        public base_campaign?: (string|null);

                        /** Campaign campaign_budget. */
                        public campaign_budget?: (string|null);

                        /** Campaign bidding_strategy_type. */
                        public bidding_strategy_type: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType);

                        /** Campaign accessible_bidding_strategy. */
                        public accessible_bidding_strategy: string;

                        /** Campaign campaign_group. */
                        public campaign_group?: (string|null);

                        /** Campaign start_date_time. */
                        public start_date_time?: (string|null);

                        /** Campaign end_date_time. */
                        public end_date_time?: (string|null);

                        /** Campaign final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** Campaign frequency_caps. */
                        public frequency_caps: google.ads.googleads.v23.common.IFrequencyCapEntry[];

                        /** Campaign video_brand_safety_suitability. */
                        public video_brand_safety_suitability: (google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|keyof typeof google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability);

                        /** Campaign vanity_pharma. */
                        public vanity_pharma?: (google.ads.googleads.v23.resources.Campaign.IVanityPharma|null);

                        /** Campaign selective_optimization. */
                        public selective_optimization?: (google.ads.googleads.v23.resources.Campaign.ISelectiveOptimization|null);

                        /** Campaign optimization_goal_setting. */
                        public optimization_goal_setting?: (google.ads.googleads.v23.resources.Campaign.IOptimizationGoalSetting|null);

                        /** Campaign tracking_setting. */
                        public tracking_setting?: (google.ads.googleads.v23.resources.Campaign.ITrackingSetting|null);

                        /** Campaign payment_mode. */
                        public payment_mode: (google.ads.googleads.v23.enums.PaymentModeEnum.PaymentMode|keyof typeof google.ads.googleads.v23.enums.PaymentModeEnum.PaymentMode);

                        /** Campaign optimization_score. */
                        public optimization_score?: (number|null);

                        /** Campaign excluded_parent_asset_field_types. */
                        public excluded_parent_asset_field_types: google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[];

                        /** Campaign excluded_parent_asset_set_types. */
                        public excluded_parent_asset_set_types: google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType[];

                        /** Campaign performance_max_upgrade. */
                        public performance_max_upgrade?: (google.ads.googleads.v23.resources.Campaign.IPerformanceMaxUpgrade|null);

                        /** Campaign hotel_property_asset_set. */
                        public hotel_property_asset_set?: (string|null);

                        /** Campaign listing_type. */
                        public listing_type?: (google.ads.googleads.v23.enums.ListingTypeEnum.ListingType|keyof typeof google.ads.googleads.v23.enums.ListingTypeEnum.ListingType|null);

                        /** Campaign asset_automation_settings. */
                        public asset_automation_settings: google.ads.googleads.v23.resources.Campaign.IAssetAutomationSetting[];

                        /** Campaign keyword_match_type. */
                        public keyword_match_type: (google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum.CampaignKeywordMatchType|keyof typeof google.ads.googleads.v23.enums.CampaignKeywordMatchTypeEnum.CampaignKeywordMatchType);

                        /** Campaign brand_guidelines_enabled. */
                        public brand_guidelines_enabled?: (boolean|null);

                        /** Campaign brand_guidelines. */
                        public brand_guidelines?: (google.ads.googleads.v23.resources.Campaign.IBrandGuidelines|null);

                        /** Campaign third_party_integration_partners. */
                        public third_party_integration_partners?: (google.ads.googleads.v23.common.ICampaignThirdPartyIntegrationPartners|null);

                        /** Campaign ai_max_setting. */
                        public ai_max_setting?: (google.ads.googleads.v23.resources.Campaign.IAiMaxSetting|null);

                        /** Campaign contains_eu_political_advertising. */
                        public contains_eu_political_advertising: (google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum.EuPoliticalAdvertisingStatus|keyof typeof google.ads.googleads.v23.enums.EuPoliticalAdvertisingStatusEnum.EuPoliticalAdvertisingStatus);

                        /** Campaign feed_types. */
                        public feed_types: google.ads.googleads.v23.enums.AssetSetTypeEnum.AssetSetType[];

                        /** Campaign bidding_strategy. */
                        public bidding_strategy?: (string|null);

                        /** Campaign commission. */
                        public commission?: (google.ads.googleads.v23.common.ICommission|null);

                        /** Campaign manual_cpa. */
                        public manual_cpa?: (google.ads.googleads.v23.common.IManualCpa|null);

                        /** Campaign manual_cpc. */
                        public manual_cpc?: (google.ads.googleads.v23.common.IManualCpc|null);

                        /** Campaign manual_cpm. */
                        public manual_cpm?: (google.ads.googleads.v23.common.IManualCpm|null);

                        /** Campaign manual_cpv. */
                        public manual_cpv?: (google.ads.googleads.v23.common.IManualCpv|null);

                        /** Campaign maximize_conversions. */
                        public maximize_conversions?: (google.ads.googleads.v23.common.IMaximizeConversions|null);

                        /** Campaign maximize_conversion_value. */
                        public maximize_conversion_value?: (google.ads.googleads.v23.common.IMaximizeConversionValue|null);

                        /** Campaign target_cpa. */
                        public target_cpa?: (google.ads.googleads.v23.common.ITargetCpa|null);

                        /** Campaign target_impression_share. */
                        public target_impression_share?: (google.ads.googleads.v23.common.ITargetImpressionShare|null);

                        /** Campaign target_roas. */
                        public target_roas?: (google.ads.googleads.v23.common.ITargetRoas|null);

                        /** Campaign target_spend. */
                        public target_spend?: (google.ads.googleads.v23.common.ITargetSpend|null);

                        /** Campaign percent_cpc. */
                        public percent_cpc?: (google.ads.googleads.v23.common.IPercentCpc|null);

                        /** Campaign target_cpm. */
                        public target_cpm?: (google.ads.googleads.v23.common.ITargetCpm|null);

                        /** Campaign fixed_cpm. */
                        public fixed_cpm?: (google.ads.googleads.v23.common.IFixedCpm|null);

                        /** Campaign target_cpv. */
                        public target_cpv?: (google.ads.googleads.v23.common.ITargetCpv|null);

                        /** Campaign target_cpc. */
                        public target_cpc?: (google.ads.googleads.v23.common.ITargetCpc|null);

                        /** Campaign campaign_bidding_strategy. */
                        public campaign_bidding_strategy?: ("bidding_strategy"|"commission"|"manual_cpa"|"manual_cpc"|"manual_cpm"|"manual_cpv"|"maximize_conversions"|"maximize_conversion_value"|"target_cpa"|"target_impression_share"|"target_roas"|"target_spend"|"percent_cpc"|"target_cpm"|"fixed_cpm"|"target_cpv"|"target_cpc");

                        /**
                         * Creates a new Campaign instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Campaign instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaign): google.ads.googleads.v23.resources.Campaign;

                        /**
                         * Encodes the specified Campaign message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.verify|verify} messages.
                         * @param message Campaign message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Campaign message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.verify|verify} messages.
                         * @param message Campaign message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Campaign message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Campaign
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign;

                        /**
                         * Decodes a Campaign message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Campaign
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign;

                        /**
                         * Verifies a Campaign message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Campaign message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Campaign
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign;

                        /**
                         * Creates a plain object from a Campaign message. Also converts values to other types if specified.
                         * @param message Campaign
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Campaign, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Campaign to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Campaign
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Campaign {

                        /** Properties of a PerformanceMaxUpgrade. */
                        interface IPerformanceMaxUpgrade {

                            /** PerformanceMaxUpgrade performance_max_campaign */
                            performance_max_campaign?: (string|null);

                            /** PerformanceMaxUpgrade pre_upgrade_campaign */
                            pre_upgrade_campaign?: (string|null);

                            /** PerformanceMaxUpgrade status */
                            status?: (google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum.PerformanceMaxUpgradeStatus|keyof typeof google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum.PerformanceMaxUpgradeStatus|null);
                        }

                        /** Represents a PerformanceMaxUpgrade. */
                        class PerformanceMaxUpgrade implements IPerformanceMaxUpgrade {

                            /**
                             * Constructs a new PerformanceMaxUpgrade.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IPerformanceMaxUpgrade);

                            /** PerformanceMaxUpgrade performance_max_campaign. */
                            public performance_max_campaign: string;

                            /** PerformanceMaxUpgrade pre_upgrade_campaign. */
                            public pre_upgrade_campaign: string;

                            /** PerformanceMaxUpgrade status. */
                            public status: (google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum.PerformanceMaxUpgradeStatus|keyof typeof google.ads.googleads.v23.enums.PerformanceMaxUpgradeStatusEnum.PerformanceMaxUpgradeStatus);

                            /**
                             * Creates a new PerformanceMaxUpgrade instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PerformanceMaxUpgrade instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IPerformanceMaxUpgrade): google.ads.googleads.v23.resources.Campaign.PerformanceMaxUpgrade;

                            /**
                             * Encodes the specified PerformanceMaxUpgrade message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.PerformanceMaxUpgrade.verify|verify} messages.
                             * @param message PerformanceMaxUpgrade message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IPerformanceMaxUpgrade, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PerformanceMaxUpgrade message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.PerformanceMaxUpgrade.verify|verify} messages.
                             * @param message PerformanceMaxUpgrade message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IPerformanceMaxUpgrade, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PerformanceMaxUpgrade message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PerformanceMaxUpgrade
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.PerformanceMaxUpgrade;

                            /**
                             * Decodes a PerformanceMaxUpgrade message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PerformanceMaxUpgrade
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.PerformanceMaxUpgrade;

                            /**
                             * Verifies a PerformanceMaxUpgrade message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PerformanceMaxUpgrade message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PerformanceMaxUpgrade
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.PerformanceMaxUpgrade;

                            /**
                             * Creates a plain object from a PerformanceMaxUpgrade message. Also converts values to other types if specified.
                             * @param message PerformanceMaxUpgrade
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.PerformanceMaxUpgrade, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PerformanceMaxUpgrade to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PerformanceMaxUpgrade
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a NetworkSettings. */
                        interface INetworkSettings {

                            /** NetworkSettings target_google_search */
                            target_google_search?: (boolean|null);

                            /** NetworkSettings target_search_network */
                            target_search_network?: (boolean|null);

                            /** NetworkSettings target_content_network */
                            target_content_network?: (boolean|null);

                            /** NetworkSettings target_partner_search_network */
                            target_partner_search_network?: (boolean|null);

                            /** NetworkSettings target_youtube */
                            target_youtube?: (boolean|null);

                            /** NetworkSettings target_google_tv_network */
                            target_google_tv_network?: (boolean|null);
                        }

                        /** Represents a NetworkSettings. */
                        class NetworkSettings implements INetworkSettings {

                            /**
                             * Constructs a new NetworkSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.INetworkSettings);

                            /** NetworkSettings target_google_search. */
                            public target_google_search?: (boolean|null);

                            /** NetworkSettings target_search_network. */
                            public target_search_network?: (boolean|null);

                            /** NetworkSettings target_content_network. */
                            public target_content_network?: (boolean|null);

                            /** NetworkSettings target_partner_search_network. */
                            public target_partner_search_network?: (boolean|null);

                            /** NetworkSettings target_youtube. */
                            public target_youtube?: (boolean|null);

                            /** NetworkSettings target_google_tv_network. */
                            public target_google_tv_network?: (boolean|null);

                            /**
                             * Creates a new NetworkSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns NetworkSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.INetworkSettings): google.ads.googleads.v23.resources.Campaign.NetworkSettings;

                            /**
                             * Encodes the specified NetworkSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.NetworkSettings.verify|verify} messages.
                             * @param message NetworkSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.INetworkSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified NetworkSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.NetworkSettings.verify|verify} messages.
                             * @param message NetworkSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.INetworkSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a NetworkSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns NetworkSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.NetworkSettings;

                            /**
                             * Decodes a NetworkSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns NetworkSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.NetworkSettings;

                            /**
                             * Verifies a NetworkSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a NetworkSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns NetworkSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.NetworkSettings;

                            /**
                             * Creates a plain object from a NetworkSettings message. Also converts values to other types if specified.
                             * @param message NetworkSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.NetworkSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this NetworkSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for NetworkSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a HotelSettingInfo. */
                        interface IHotelSettingInfo {

                            /** HotelSettingInfo hotel_center_id */
                            hotel_center_id?: (number|null);
                        }

                        /** Represents a HotelSettingInfo. */
                        class HotelSettingInfo implements IHotelSettingInfo {

                            /**
                             * Constructs a new HotelSettingInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IHotelSettingInfo);

                            /** HotelSettingInfo hotel_center_id. */
                            public hotel_center_id?: (number|null);

                            /**
                             * Creates a new HotelSettingInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns HotelSettingInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IHotelSettingInfo): google.ads.googleads.v23.resources.Campaign.HotelSettingInfo;

                            /**
                             * Encodes the specified HotelSettingInfo message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.HotelSettingInfo.verify|verify} messages.
                             * @param message HotelSettingInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IHotelSettingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified HotelSettingInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.HotelSettingInfo.verify|verify} messages.
                             * @param message HotelSettingInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IHotelSettingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a HotelSettingInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns HotelSettingInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.HotelSettingInfo;

                            /**
                             * Decodes a HotelSettingInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns HotelSettingInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.HotelSettingInfo;

                            /**
                             * Verifies a HotelSettingInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a HotelSettingInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns HotelSettingInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.HotelSettingInfo;

                            /**
                             * Creates a plain object from a HotelSettingInfo message. Also converts values to other types if specified.
                             * @param message HotelSettingInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.HotelSettingInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this HotelSettingInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for HotelSettingInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a DynamicSearchAdsSetting. */
                        interface IDynamicSearchAdsSetting {

                            /** DynamicSearchAdsSetting domain_name */
                            domain_name?: (string|null);

                            /** DynamicSearchAdsSetting language_code */
                            language_code?: (string|null);

                            /** DynamicSearchAdsSetting use_supplied_urls_only */
                            use_supplied_urls_only?: (boolean|null);
                        }

                        /** Represents a DynamicSearchAdsSetting. */
                        class DynamicSearchAdsSetting implements IDynamicSearchAdsSetting {

                            /**
                             * Constructs a new DynamicSearchAdsSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IDynamicSearchAdsSetting);

                            /** DynamicSearchAdsSetting domain_name. */
                            public domain_name: string;

                            /** DynamicSearchAdsSetting language_code. */
                            public language_code: string;

                            /** DynamicSearchAdsSetting use_supplied_urls_only. */
                            public use_supplied_urls_only?: (boolean|null);

                            /**
                             * Creates a new DynamicSearchAdsSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DynamicSearchAdsSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IDynamicSearchAdsSetting): google.ads.googleads.v23.resources.Campaign.DynamicSearchAdsSetting;

                            /**
                             * Encodes the specified DynamicSearchAdsSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.DynamicSearchAdsSetting.verify|verify} messages.
                             * @param message DynamicSearchAdsSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IDynamicSearchAdsSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DynamicSearchAdsSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.DynamicSearchAdsSetting.verify|verify} messages.
                             * @param message DynamicSearchAdsSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IDynamicSearchAdsSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DynamicSearchAdsSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DynamicSearchAdsSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.DynamicSearchAdsSetting;

                            /**
                             * Decodes a DynamicSearchAdsSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DynamicSearchAdsSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.DynamicSearchAdsSetting;

                            /**
                             * Verifies a DynamicSearchAdsSetting message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DynamicSearchAdsSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DynamicSearchAdsSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.DynamicSearchAdsSetting;

                            /**
                             * Creates a plain object from a DynamicSearchAdsSetting message. Also converts values to other types if specified.
                             * @param message DynamicSearchAdsSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.DynamicSearchAdsSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DynamicSearchAdsSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DynamicSearchAdsSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ShoppingSetting. */
                        interface IShoppingSetting {

                            /** ShoppingSetting merchant_id */
                            merchant_id?: (number|null);

                            /** ShoppingSetting feed_label */
                            feed_label?: (string|null);

                            /** ShoppingSetting campaign_priority */
                            campaign_priority?: (number|null);

                            /** ShoppingSetting enable_local */
                            enable_local?: (boolean|null);

                            /** ShoppingSetting use_vehicle_inventory */
                            use_vehicle_inventory?: (boolean|null);

                            /** ShoppingSetting advertising_partner_ids */
                            advertising_partner_ids?: (number[]|null);

                            /** ShoppingSetting disable_product_feed */
                            disable_product_feed?: (boolean|null);
                        }

                        /** Represents a ShoppingSetting. */
                        class ShoppingSetting implements IShoppingSetting {

                            /**
                             * Constructs a new ShoppingSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IShoppingSetting);

                            /** ShoppingSetting merchant_id. */
                            public merchant_id?: (number|null);

                            /** ShoppingSetting feed_label. */
                            public feed_label: string;

                            /** ShoppingSetting campaign_priority. */
                            public campaign_priority?: (number|null);

                            /** ShoppingSetting enable_local. */
                            public enable_local?: (boolean|null);

                            /** ShoppingSetting use_vehicle_inventory. */
                            public use_vehicle_inventory: boolean;

                            /** ShoppingSetting advertising_partner_ids. */
                            public advertising_partner_ids: number[];

                            /** ShoppingSetting disable_product_feed. */
                            public disable_product_feed?: (boolean|null);

                            /**
                             * Creates a new ShoppingSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IShoppingSetting): google.ads.googleads.v23.resources.Campaign.ShoppingSetting;

                            /**
                             * Encodes the specified ShoppingSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.ShoppingSetting.verify|verify} messages.
                             * @param message ShoppingSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IShoppingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.ShoppingSetting.verify|verify} messages.
                             * @param message ShoppingSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IShoppingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ShoppingSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.ShoppingSetting;

                            /**
                             * Decodes a ShoppingSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ShoppingSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.ShoppingSetting;

                            /**
                             * Verifies a ShoppingSetting message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ShoppingSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.ShoppingSetting;

                            /**
                             * Creates a plain object from a ShoppingSetting message. Also converts values to other types if specified.
                             * @param message ShoppingSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.ShoppingSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ShoppingSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TrackingSetting. */
                        interface ITrackingSetting {

                            /** TrackingSetting tracking_url */
                            tracking_url?: (string|null);
                        }

                        /** Represents a TrackingSetting. */
                        class TrackingSetting implements ITrackingSetting {

                            /**
                             * Constructs a new TrackingSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.ITrackingSetting);

                            /** TrackingSetting tracking_url. */
                            public tracking_url?: (string|null);

                            /**
                             * Creates a new TrackingSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TrackingSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.ITrackingSetting): google.ads.googleads.v23.resources.Campaign.TrackingSetting;

                            /**
                             * Encodes the specified TrackingSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.TrackingSetting.verify|verify} messages.
                             * @param message TrackingSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.ITrackingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TrackingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.TrackingSetting.verify|verify} messages.
                             * @param message TrackingSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.ITrackingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TrackingSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TrackingSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.TrackingSetting;

                            /**
                             * Decodes a TrackingSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TrackingSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.TrackingSetting;

                            /**
                             * Verifies a TrackingSetting message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TrackingSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TrackingSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.TrackingSetting;

                            /**
                             * Creates a plain object from a TrackingSetting message. Also converts values to other types if specified.
                             * @param message TrackingSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.TrackingSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TrackingSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TrackingSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a GeoTargetTypeSetting. */
                        interface IGeoTargetTypeSetting {

                            /** GeoTargetTypeSetting positive_geo_target_type */
                            positive_geo_target_type?: (google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType|keyof typeof google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType|null);

                            /** GeoTargetTypeSetting negative_geo_target_type */
                            negative_geo_target_type?: (google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum.NegativeGeoTargetType|keyof typeof google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum.NegativeGeoTargetType|null);
                        }

                        /** Represents a GeoTargetTypeSetting. */
                        class GeoTargetTypeSetting implements IGeoTargetTypeSetting {

                            /**
                             * Constructs a new GeoTargetTypeSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IGeoTargetTypeSetting);

                            /** GeoTargetTypeSetting positive_geo_target_type. */
                            public positive_geo_target_type: (google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType|keyof typeof google.ads.googleads.v23.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType);

                            /** GeoTargetTypeSetting negative_geo_target_type. */
                            public negative_geo_target_type: (google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum.NegativeGeoTargetType|keyof typeof google.ads.googleads.v23.enums.NegativeGeoTargetTypeEnum.NegativeGeoTargetType);

                            /**
                             * Creates a new GeoTargetTypeSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns GeoTargetTypeSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IGeoTargetTypeSetting): google.ads.googleads.v23.resources.Campaign.GeoTargetTypeSetting;

                            /**
                             * Encodes the specified GeoTargetTypeSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.GeoTargetTypeSetting.verify|verify} messages.
                             * @param message GeoTargetTypeSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IGeoTargetTypeSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified GeoTargetTypeSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.GeoTargetTypeSetting.verify|verify} messages.
                             * @param message GeoTargetTypeSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IGeoTargetTypeSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a GeoTargetTypeSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns GeoTargetTypeSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.GeoTargetTypeSetting;

                            /**
                             * Decodes a GeoTargetTypeSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns GeoTargetTypeSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.GeoTargetTypeSetting;

                            /**
                             * Verifies a GeoTargetTypeSetting message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a GeoTargetTypeSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns GeoTargetTypeSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.GeoTargetTypeSetting;

                            /**
                             * Creates a plain object from a GeoTargetTypeSetting message. Also converts values to other types if specified.
                             * @param message GeoTargetTypeSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.GeoTargetTypeSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this GeoTargetTypeSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for GeoTargetTypeSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a LocalCampaignSetting. */
                        interface ILocalCampaignSetting {

                            /** LocalCampaignSetting location_source_type */
                            location_source_type?: (google.ads.googleads.v23.enums.LocationSourceTypeEnum.LocationSourceType|keyof typeof google.ads.googleads.v23.enums.LocationSourceTypeEnum.LocationSourceType|null);
                        }

                        /** Represents a LocalCampaignSetting. */
                        class LocalCampaignSetting implements ILocalCampaignSetting {

                            /**
                             * Constructs a new LocalCampaignSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.ILocalCampaignSetting);

                            /** LocalCampaignSetting location_source_type. */
                            public location_source_type: (google.ads.googleads.v23.enums.LocationSourceTypeEnum.LocationSourceType|keyof typeof google.ads.googleads.v23.enums.LocationSourceTypeEnum.LocationSourceType);

                            /**
                             * Creates a new LocalCampaignSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LocalCampaignSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.ILocalCampaignSetting): google.ads.googleads.v23.resources.Campaign.LocalCampaignSetting;

                            /**
                             * Encodes the specified LocalCampaignSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.LocalCampaignSetting.verify|verify} messages.
                             * @param message LocalCampaignSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.ILocalCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LocalCampaignSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.LocalCampaignSetting.verify|verify} messages.
                             * @param message LocalCampaignSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.ILocalCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LocalCampaignSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LocalCampaignSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.LocalCampaignSetting;

                            /**
                             * Decodes a LocalCampaignSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LocalCampaignSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.LocalCampaignSetting;

                            /**
                             * Verifies a LocalCampaignSetting message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LocalCampaignSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LocalCampaignSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.LocalCampaignSetting;

                            /**
                             * Creates a plain object from a LocalCampaignSetting message. Also converts values to other types if specified.
                             * @param message LocalCampaignSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.LocalCampaignSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LocalCampaignSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LocalCampaignSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AppCampaignSetting. */
                        interface IAppCampaignSetting {

                            /** AppCampaignSetting bidding_strategy_goal_type */
                            bidding_strategy_goal_type?: (google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType|keyof typeof google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType|null);

                            /** AppCampaignSetting app_id */
                            app_id?: (string|null);

                            /** AppCampaignSetting app_store */
                            app_store?: (google.ads.googleads.v23.enums.AppCampaignAppStoreEnum.AppCampaignAppStore|keyof typeof google.ads.googleads.v23.enums.AppCampaignAppStoreEnum.AppCampaignAppStore|null);
                        }

                        /** Represents an AppCampaignSetting. */
                        class AppCampaignSetting implements IAppCampaignSetting {

                            /**
                             * Constructs a new AppCampaignSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IAppCampaignSetting);

                            /** AppCampaignSetting bidding_strategy_goal_type. */
                            public bidding_strategy_goal_type: (google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType|keyof typeof google.ads.googleads.v23.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType);

                            /** AppCampaignSetting app_id. */
                            public app_id?: (string|null);

                            /** AppCampaignSetting app_store. */
                            public app_store: (google.ads.googleads.v23.enums.AppCampaignAppStoreEnum.AppCampaignAppStore|keyof typeof google.ads.googleads.v23.enums.AppCampaignAppStoreEnum.AppCampaignAppStore);

                            /**
                             * Creates a new AppCampaignSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AppCampaignSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IAppCampaignSetting): google.ads.googleads.v23.resources.Campaign.AppCampaignSetting;

                            /**
                             * Encodes the specified AppCampaignSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AppCampaignSetting.verify|verify} messages.
                             * @param message AppCampaignSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IAppCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AppCampaignSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AppCampaignSetting.verify|verify} messages.
                             * @param message AppCampaignSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IAppCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AppCampaignSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AppCampaignSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.AppCampaignSetting;

                            /**
                             * Decodes an AppCampaignSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AppCampaignSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.AppCampaignSetting;

                            /**
                             * Verifies an AppCampaignSetting message.
                             * @param message Plain 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 AppCampaignSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AppCampaignSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.AppCampaignSetting;

                            /**
                             * Creates a plain object from an AppCampaignSetting message. Also converts values to other types if specified.
                             * @param message AppCampaignSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.AppCampaignSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AppCampaignSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AppCampaignSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a VanityPharma. */
                        interface IVanityPharma {

                            /** VanityPharma vanity_pharma_display_url_mode */
                            vanity_pharma_display_url_mode?: (google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode|keyof typeof google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode|null);

                            /** VanityPharma vanity_pharma_text */
                            vanity_pharma_text?: (google.ads.googleads.v23.enums.VanityPharmaTextEnum.VanityPharmaText|keyof typeof google.ads.googleads.v23.enums.VanityPharmaTextEnum.VanityPharmaText|null);
                        }

                        /** Represents a VanityPharma. */
                        class VanityPharma implements IVanityPharma {

                            /**
                             * Constructs a new VanityPharma.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IVanityPharma);

                            /** VanityPharma vanity_pharma_display_url_mode. */
                            public vanity_pharma_display_url_mode: (google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode|keyof typeof google.ads.googleads.v23.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode);

                            /** VanityPharma vanity_pharma_text. */
                            public vanity_pharma_text: (google.ads.googleads.v23.enums.VanityPharmaTextEnum.VanityPharmaText|keyof typeof google.ads.googleads.v23.enums.VanityPharmaTextEnum.VanityPharmaText);

                            /**
                             * Creates a new VanityPharma instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns VanityPharma instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IVanityPharma): google.ads.googleads.v23.resources.Campaign.VanityPharma;

                            /**
                             * Encodes the specified VanityPharma message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VanityPharma.verify|verify} messages.
                             * @param message VanityPharma message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IVanityPharma, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified VanityPharma message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VanityPharma.verify|verify} messages.
                             * @param message VanityPharma message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IVanityPharma, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a VanityPharma message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns VanityPharma
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.VanityPharma;

                            /**
                             * Decodes a VanityPharma message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns VanityPharma
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.VanityPharma;

                            /**
                             * Verifies a VanityPharma message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a VanityPharma message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns VanityPharma
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.VanityPharma;

                            /**
                             * Creates a plain object from a VanityPharma message. Also converts values to other types if specified.
                             * @param message VanityPharma
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.VanityPharma, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this VanityPharma to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for VanityPharma
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SelectiveOptimization. */
                        interface ISelectiveOptimization {

                            /** SelectiveOptimization conversion_actions */
                            conversion_actions?: (string[]|null);
                        }

                        /** Represents a SelectiveOptimization. */
                        class SelectiveOptimization implements ISelectiveOptimization {

                            /**
                             * Constructs a new SelectiveOptimization.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.ISelectiveOptimization);

                            /** SelectiveOptimization conversion_actions. */
                            public conversion_actions: string[];

                            /**
                             * Creates a new SelectiveOptimization instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SelectiveOptimization instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.ISelectiveOptimization): google.ads.googleads.v23.resources.Campaign.SelectiveOptimization;

                            /**
                             * Encodes the specified SelectiveOptimization message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.SelectiveOptimization.verify|verify} messages.
                             * @param message SelectiveOptimization message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.ISelectiveOptimization, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SelectiveOptimization message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.SelectiveOptimization.verify|verify} messages.
                             * @param message SelectiveOptimization message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.ISelectiveOptimization, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SelectiveOptimization message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SelectiveOptimization
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.SelectiveOptimization;

                            /**
                             * Decodes a SelectiveOptimization message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SelectiveOptimization
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.SelectiveOptimization;

                            /**
                             * Verifies a SelectiveOptimization message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SelectiveOptimization message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SelectiveOptimization
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.SelectiveOptimization;

                            /**
                             * Creates a plain object from a SelectiveOptimization message. Also converts values to other types if specified.
                             * @param message SelectiveOptimization
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.SelectiveOptimization, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SelectiveOptimization to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SelectiveOptimization
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an OptimizationGoalSetting. */
                        interface IOptimizationGoalSetting {

                            /** OptimizationGoalSetting optimization_goal_types */
                            optimization_goal_types?: (google.ads.googleads.v23.enums.OptimizationGoalTypeEnum.OptimizationGoalType[]|null);
                        }

                        /** Represents an OptimizationGoalSetting. */
                        class OptimizationGoalSetting implements IOptimizationGoalSetting {

                            /**
                             * Constructs a new OptimizationGoalSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IOptimizationGoalSetting);

                            /** OptimizationGoalSetting optimization_goal_types. */
                            public optimization_goal_types: google.ads.googleads.v23.enums.OptimizationGoalTypeEnum.OptimizationGoalType[];

                            /**
                             * Creates a new OptimizationGoalSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns OptimizationGoalSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IOptimizationGoalSetting): google.ads.googleads.v23.resources.Campaign.OptimizationGoalSetting;

                            /**
                             * Encodes the specified OptimizationGoalSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.OptimizationGoalSetting.verify|verify} messages.
                             * @param message OptimizationGoalSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IOptimizationGoalSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified OptimizationGoalSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.OptimizationGoalSetting.verify|verify} messages.
                             * @param message OptimizationGoalSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IOptimizationGoalSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an OptimizationGoalSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns OptimizationGoalSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.OptimizationGoalSetting;

                            /**
                             * Decodes an OptimizationGoalSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns OptimizationGoalSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.OptimizationGoalSetting;

                            /**
                             * Verifies an OptimizationGoalSetting message.
                             * @param message Plain 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 OptimizationGoalSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns OptimizationGoalSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.OptimizationGoalSetting;

                            /**
                             * Creates a plain object from an OptimizationGoalSetting message. Also converts values to other types if specified.
                             * @param message OptimizationGoalSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.OptimizationGoalSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this OptimizationGoalSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for OptimizationGoalSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AudienceSetting. */
                        interface IAudienceSetting {

                            /** AudienceSetting use_audience_grouped */
                            use_audience_grouped?: (boolean|null);
                        }

                        /** Represents an AudienceSetting. */
                        class AudienceSetting implements IAudienceSetting {

                            /**
                             * Constructs a new AudienceSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IAudienceSetting);

                            /** AudienceSetting use_audience_grouped. */
                            public use_audience_grouped?: (boolean|null);

                            /**
                             * Creates a new AudienceSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AudienceSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IAudienceSetting): google.ads.googleads.v23.resources.Campaign.AudienceSetting;

                            /**
                             * Encodes the specified AudienceSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AudienceSetting.verify|verify} messages.
                             * @param message AudienceSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IAudienceSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AudienceSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AudienceSetting.verify|verify} messages.
                             * @param message AudienceSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IAudienceSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AudienceSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AudienceSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.AudienceSetting;

                            /**
                             * Decodes an AudienceSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AudienceSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.AudienceSetting;

                            /**
                             * Verifies an AudienceSetting message.
                             * @param message Plain 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 AudienceSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AudienceSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.AudienceSetting;

                            /**
                             * Creates a plain object from an AudienceSetting message. Also converts values to other types if specified.
                             * @param message AudienceSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.AudienceSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AudienceSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AudienceSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a LocalServicesCampaignSettings. */
                        interface ILocalServicesCampaignSettings {

                            /** LocalServicesCampaignSettings category_bids */
                            category_bids?: (google.ads.googleads.v23.resources.Campaign.ICategoryBid[]|null);
                        }

                        /** Represents a LocalServicesCampaignSettings. */
                        class LocalServicesCampaignSettings implements ILocalServicesCampaignSettings {

                            /**
                             * Constructs a new LocalServicesCampaignSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.ILocalServicesCampaignSettings);

                            /** LocalServicesCampaignSettings category_bids. */
                            public category_bids: google.ads.googleads.v23.resources.Campaign.ICategoryBid[];

                            /**
                             * Creates a new LocalServicesCampaignSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LocalServicesCampaignSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.ILocalServicesCampaignSettings): google.ads.googleads.v23.resources.Campaign.LocalServicesCampaignSettings;

                            /**
                             * Encodes the specified LocalServicesCampaignSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.LocalServicesCampaignSettings.verify|verify} messages.
                             * @param message LocalServicesCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.ILocalServicesCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LocalServicesCampaignSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.LocalServicesCampaignSettings.verify|verify} messages.
                             * @param message LocalServicesCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.ILocalServicesCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LocalServicesCampaignSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LocalServicesCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.LocalServicesCampaignSettings;

                            /**
                             * Decodes a LocalServicesCampaignSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LocalServicesCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.LocalServicesCampaignSettings;

                            /**
                             * Verifies a LocalServicesCampaignSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LocalServicesCampaignSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LocalServicesCampaignSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.LocalServicesCampaignSettings;

                            /**
                             * Creates a plain object from a LocalServicesCampaignSettings message. Also converts values to other types if specified.
                             * @param message LocalServicesCampaignSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.LocalServicesCampaignSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LocalServicesCampaignSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LocalServicesCampaignSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CategoryBid. */
                        interface ICategoryBid {

                            /** CategoryBid category_id */
                            category_id?: (string|null);

                            /** CategoryBid manual_cpa_bid_micros */
                            manual_cpa_bid_micros?: (number|null);

                            /** CategoryBid target_cpa_bid_micros */
                            target_cpa_bid_micros?: (number|null);
                        }

                        /** Represents a CategoryBid. */
                        class CategoryBid implements ICategoryBid {

                            /**
                             * Constructs a new CategoryBid.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.ICategoryBid);

                            /** CategoryBid category_id. */
                            public category_id?: (string|null);

                            /** CategoryBid manual_cpa_bid_micros. */
                            public manual_cpa_bid_micros?: (number|null);

                            /** CategoryBid target_cpa_bid_micros. */
                            public target_cpa_bid_micros?: (number|null);

                            /**
                             * Creates a new CategoryBid instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CategoryBid instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.ICategoryBid): google.ads.googleads.v23.resources.Campaign.CategoryBid;

                            /**
                             * Encodes the specified CategoryBid message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.CategoryBid.verify|verify} messages.
                             * @param message CategoryBid message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.ICategoryBid, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CategoryBid message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.CategoryBid.verify|verify} messages.
                             * @param message CategoryBid message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.ICategoryBid, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CategoryBid message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CategoryBid
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.CategoryBid;

                            /**
                             * Decodes a CategoryBid message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CategoryBid
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.CategoryBid;

                            /**
                             * Verifies a CategoryBid message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CategoryBid message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CategoryBid
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.CategoryBid;

                            /**
                             * Creates a plain object from a CategoryBid message. Also converts values to other types if specified.
                             * @param message CategoryBid
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.CategoryBid, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CategoryBid to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CategoryBid
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TravelCampaignSettings. */
                        interface ITravelCampaignSettings {

                            /** TravelCampaignSettings travel_account_id */
                            travel_account_id?: (number|null);
                        }

                        /** Represents a TravelCampaignSettings. */
                        class TravelCampaignSettings implements ITravelCampaignSettings {

                            /**
                             * Constructs a new TravelCampaignSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.ITravelCampaignSettings);

                            /** TravelCampaignSettings travel_account_id. */
                            public travel_account_id?: (number|null);

                            /**
                             * Creates a new TravelCampaignSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TravelCampaignSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.ITravelCampaignSettings): google.ads.googleads.v23.resources.Campaign.TravelCampaignSettings;

                            /**
                             * Encodes the specified TravelCampaignSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.TravelCampaignSettings.verify|verify} messages.
                             * @param message TravelCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.ITravelCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TravelCampaignSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.TravelCampaignSettings.verify|verify} messages.
                             * @param message TravelCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.ITravelCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TravelCampaignSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TravelCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.TravelCampaignSettings;

                            /**
                             * Decodes a TravelCampaignSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TravelCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.TravelCampaignSettings;

                            /**
                             * Verifies a TravelCampaignSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TravelCampaignSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TravelCampaignSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.TravelCampaignSettings;

                            /**
                             * Creates a plain object from a TravelCampaignSettings message. Also converts values to other types if specified.
                             * @param message TravelCampaignSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.TravelCampaignSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TravelCampaignSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TravelCampaignSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a DemandGenCampaignSettings. */
                        interface IDemandGenCampaignSettings {

                            /** DemandGenCampaignSettings upgraded_targeting */
                            upgraded_targeting?: (boolean|null);
                        }

                        /** Represents a DemandGenCampaignSettings. */
                        class DemandGenCampaignSettings implements IDemandGenCampaignSettings {

                            /**
                             * Constructs a new DemandGenCampaignSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IDemandGenCampaignSettings);

                            /** DemandGenCampaignSettings upgraded_targeting. */
                            public upgraded_targeting?: (boolean|null);

                            /**
                             * Creates a new DemandGenCampaignSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DemandGenCampaignSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IDemandGenCampaignSettings): google.ads.googleads.v23.resources.Campaign.DemandGenCampaignSettings;

                            /**
                             * Encodes the specified DemandGenCampaignSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.DemandGenCampaignSettings.verify|verify} messages.
                             * @param message DemandGenCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IDemandGenCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DemandGenCampaignSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.DemandGenCampaignSettings.verify|verify} messages.
                             * @param message DemandGenCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IDemandGenCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DemandGenCampaignSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DemandGenCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.DemandGenCampaignSettings;

                            /**
                             * Decodes a DemandGenCampaignSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DemandGenCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.DemandGenCampaignSettings;

                            /**
                             * Verifies a DemandGenCampaignSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DemandGenCampaignSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DemandGenCampaignSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.DemandGenCampaignSettings;

                            /**
                             * Creates a plain object from a DemandGenCampaignSettings message. Also converts values to other types if specified.
                             * @param message DemandGenCampaignSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.DemandGenCampaignSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DemandGenCampaignSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DemandGenCampaignSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a VideoCampaignSettings. */
                        interface IVideoCampaignSettings {

                            /** VideoCampaignSettings video_ad_sequence */
                            video_ad_sequence?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequence|null);

                            /** VideoCampaignSettings video_ad_inventory_control */
                            video_ad_inventory_control?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdInventoryControl|null);

                            /** VideoCampaignSettings video_ad_format_control */
                            video_ad_format_control?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdFormatControl|null);
                        }

                        /** Represents a VideoCampaignSettings. */
                        class VideoCampaignSettings implements IVideoCampaignSettings {

                            /**
                             * Constructs a new VideoCampaignSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IVideoCampaignSettings);

                            /** VideoCampaignSettings video_ad_sequence. */
                            public video_ad_sequence?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequence|null);

                            /** VideoCampaignSettings video_ad_inventory_control. */
                            public video_ad_inventory_control?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdInventoryControl|null);

                            /** VideoCampaignSettings video_ad_format_control. */
                            public video_ad_format_control?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdFormatControl|null);

                            /** VideoCampaignSettings fluidity_control. */
                            public fluidity_control?: ("video_ad_inventory_control"|"video_ad_format_control");

                            /**
                             * Creates a new VideoCampaignSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns VideoCampaignSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IVideoCampaignSettings): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings;

                            /**
                             * Encodes the specified VideoCampaignSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.verify|verify} messages.
                             * @param message VideoCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IVideoCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified VideoCampaignSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.verify|verify} messages.
                             * @param message VideoCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IVideoCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a VideoCampaignSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns VideoCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings;

                            /**
                             * Decodes a VideoCampaignSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns VideoCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings;

                            /**
                             * Verifies a VideoCampaignSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a VideoCampaignSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns VideoCampaignSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings;

                            /**
                             * Creates a plain object from a VideoCampaignSettings message. Also converts values to other types if specified.
                             * @param message VideoCampaignSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this VideoCampaignSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for VideoCampaignSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace VideoCampaignSettings {

                            /** Properties of a VideoAdInventoryControl. */
                            interface IVideoAdInventoryControl {

                                /** VideoAdInventoryControl allow_in_stream */
                                allow_in_stream?: (boolean|null);

                                /** VideoAdInventoryControl allow_in_feed */
                                allow_in_feed?: (boolean|null);

                                /** VideoAdInventoryControl allow_shorts */
                                allow_shorts?: (boolean|null);

                                /** VideoAdInventoryControl allow_non_skippable_in_stream */
                                allow_non_skippable_in_stream?: (boolean|null);
                            }

                            /** Represents a VideoAdInventoryControl. */
                            class VideoAdInventoryControl implements IVideoAdInventoryControl {

                                /**
                                 * Constructs a new VideoAdInventoryControl.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdInventoryControl);

                                /** VideoAdInventoryControl allow_in_stream. */
                                public allow_in_stream?: (boolean|null);

                                /** VideoAdInventoryControl allow_in_feed. */
                                public allow_in_feed?: (boolean|null);

                                /** VideoAdInventoryControl allow_shorts. */
                                public allow_shorts?: (boolean|null);

                                /** VideoAdInventoryControl allow_non_skippable_in_stream. */
                                public allow_non_skippable_in_stream?: (boolean|null);

                                /**
                                 * Creates a new VideoAdInventoryControl instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns VideoAdInventoryControl instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdInventoryControl): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdInventoryControl;

                                /**
                                 * Encodes the specified VideoAdInventoryControl message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdInventoryControl.verify|verify} messages.
                                 * @param message VideoAdInventoryControl message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdInventoryControl, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified VideoAdInventoryControl message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdInventoryControl.verify|verify} messages.
                                 * @param message VideoAdInventoryControl message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdInventoryControl, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a VideoAdInventoryControl message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns VideoAdInventoryControl
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdInventoryControl;

                                /**
                                 * Decodes a VideoAdInventoryControl message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns VideoAdInventoryControl
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdInventoryControl;

                                /**
                                 * Verifies a VideoAdInventoryControl message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a VideoAdInventoryControl message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns VideoAdInventoryControl
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdInventoryControl;

                                /**
                                 * Creates a plain object from a VideoAdInventoryControl message. Also converts values to other types if specified.
                                 * @param message VideoAdInventoryControl
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdInventoryControl, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this VideoAdInventoryControl to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for VideoAdInventoryControl
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a VideoAdFormatControl. */
                            interface IVideoAdFormatControl {

                                /** VideoAdFormatControl format_restriction */
                                format_restriction?: (google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum.VideoAdFormatRestriction|keyof typeof google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum.VideoAdFormatRestriction|null);

                                /** VideoAdFormatControl non_skippable_in_stream_restrictions */
                                non_skippable_in_stream_restrictions?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.INonSkippableInStreamRestrictions|null);
                            }

                            /** Represents a VideoAdFormatControl. */
                            class VideoAdFormatControl implements IVideoAdFormatControl {

                                /**
                                 * Constructs a new VideoAdFormatControl.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdFormatControl);

                                /** VideoAdFormatControl format_restriction. */
                                public format_restriction: (google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum.VideoAdFormatRestriction|keyof typeof google.ads.googleads.v23.enums.VideoAdFormatRestrictionEnum.VideoAdFormatRestriction);

                                /** VideoAdFormatControl non_skippable_in_stream_restrictions. */
                                public non_skippable_in_stream_restrictions?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.INonSkippableInStreamRestrictions|null);

                                /**
                                 * Creates a new VideoAdFormatControl instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns VideoAdFormatControl instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdFormatControl): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdFormatControl;

                                /**
                                 * Encodes the specified VideoAdFormatControl message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdFormatControl.verify|verify} messages.
                                 * @param message VideoAdFormatControl message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdFormatControl, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified VideoAdFormatControl message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdFormatControl.verify|verify} messages.
                                 * @param message VideoAdFormatControl message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdFormatControl, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a VideoAdFormatControl message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns VideoAdFormatControl
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdFormatControl;

                                /**
                                 * Decodes a VideoAdFormatControl message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns VideoAdFormatControl
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdFormatControl;

                                /**
                                 * Verifies a VideoAdFormatControl message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a VideoAdFormatControl message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns VideoAdFormatControl
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdFormatControl;

                                /**
                                 * Creates a plain object from a VideoAdFormatControl message. Also converts values to other types if specified.
                                 * @param message VideoAdFormatControl
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdFormatControl, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this VideoAdFormatControl to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for VideoAdFormatControl
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a NonSkippableInStreamRestrictions. */
                            interface INonSkippableInStreamRestrictions {

                                /** NonSkippableInStreamRestrictions min_duration */
                                min_duration?: (google.ads.googleads.v23.enums.NonSkippableMinDurationEnum.NonSkippableMinDuration|keyof typeof google.ads.googleads.v23.enums.NonSkippableMinDurationEnum.NonSkippableMinDuration|null);

                                /** NonSkippableInStreamRestrictions max_duration */
                                max_duration?: (google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum.NonSkippableMaxDuration|keyof typeof google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum.NonSkippableMaxDuration|null);
                            }

                            /** Represents a NonSkippableInStreamRestrictions. */
                            class NonSkippableInStreamRestrictions implements INonSkippableInStreamRestrictions {

                                /**
                                 * Constructs a new NonSkippableInStreamRestrictions.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.INonSkippableInStreamRestrictions);

                                /** NonSkippableInStreamRestrictions min_duration. */
                                public min_duration: (google.ads.googleads.v23.enums.NonSkippableMinDurationEnum.NonSkippableMinDuration|keyof typeof google.ads.googleads.v23.enums.NonSkippableMinDurationEnum.NonSkippableMinDuration);

                                /** NonSkippableInStreamRestrictions max_duration. */
                                public max_duration: (google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum.NonSkippableMaxDuration|keyof typeof google.ads.googleads.v23.enums.NonSkippableMaxDurationEnum.NonSkippableMaxDuration);

                                /**
                                 * Creates a new NonSkippableInStreamRestrictions instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns NonSkippableInStreamRestrictions instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.INonSkippableInStreamRestrictions): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.NonSkippableInStreamRestrictions;

                                /**
                                 * Encodes the specified NonSkippableInStreamRestrictions message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.NonSkippableInStreamRestrictions.verify|verify} messages.
                                 * @param message NonSkippableInStreamRestrictions message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.INonSkippableInStreamRestrictions, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified NonSkippableInStreamRestrictions message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.NonSkippableInStreamRestrictions.verify|verify} messages.
                                 * @param message NonSkippableInStreamRestrictions message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.INonSkippableInStreamRestrictions, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a NonSkippableInStreamRestrictions message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns NonSkippableInStreamRestrictions
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.NonSkippableInStreamRestrictions;

                                /**
                                 * Decodes a NonSkippableInStreamRestrictions message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns NonSkippableInStreamRestrictions
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.NonSkippableInStreamRestrictions;

                                /**
                                 * Verifies a NonSkippableInStreamRestrictions message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a NonSkippableInStreamRestrictions message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns NonSkippableInStreamRestrictions
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.NonSkippableInStreamRestrictions;

                                /**
                                 * Creates a plain object from a NonSkippableInStreamRestrictions message. Also converts values to other types if specified.
                                 * @param message NonSkippableInStreamRestrictions
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.NonSkippableInStreamRestrictions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this NonSkippableInStreamRestrictions to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for NonSkippableInStreamRestrictions
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a VideoAdSequence. */
                            interface IVideoAdSequence {

                                /** VideoAdSequence steps */
                                steps?: (google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequenceStep[]|null);

                                /** VideoAdSequence minimum_duration */
                                minimum_duration?: (google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum.VideoAdSequenceMinimumDuration|keyof typeof google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum.VideoAdSequenceMinimumDuration|null);
                            }

                            /** Represents a VideoAdSequence. */
                            class VideoAdSequence implements IVideoAdSequence {

                                /**
                                 * Constructs a new VideoAdSequence.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequence);

                                /** VideoAdSequence steps. */
                                public steps: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequenceStep[];

                                /** VideoAdSequence minimum_duration. */
                                public minimum_duration: (google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum.VideoAdSequenceMinimumDuration|keyof typeof google.ads.googleads.v23.enums.VideoAdSequenceMinimumDurationEnum.VideoAdSequenceMinimumDuration);

                                /**
                                 * Creates a new VideoAdSequence instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns VideoAdSequence instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequence): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequence;

                                /**
                                 * Encodes the specified VideoAdSequence message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequence.verify|verify} messages.
                                 * @param message VideoAdSequence message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequence, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified VideoAdSequence message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequence.verify|verify} messages.
                                 * @param message VideoAdSequence message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequence, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a VideoAdSequence message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns VideoAdSequence
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequence;

                                /**
                                 * Decodes a VideoAdSequence message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns VideoAdSequence
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequence;

                                /**
                                 * Verifies a VideoAdSequence message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a VideoAdSequence message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns VideoAdSequence
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequence;

                                /**
                                 * Creates a plain object from a VideoAdSequence message. Also converts values to other types if specified.
                                 * @param message VideoAdSequence
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequence, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this VideoAdSequence to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for VideoAdSequence
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a VideoAdSequenceStep. */
                            interface IVideoAdSequenceStep {

                                /** VideoAdSequenceStep video_ad_sequence_step_id */
                                video_ad_sequence_step_id?: (number|null);

                                /** VideoAdSequenceStep asset_id */
                                asset_id?: (number|null);

                                /** VideoAdSequenceStep ad_group_type */
                                ad_group_type?: (google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|null);

                                /** VideoAdSequenceStep previous_step_id */
                                previous_step_id?: (number|null);

                                /** VideoAdSequenceStep previous_step_interaction_type */
                                previous_step_interaction_type?: (google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum.VideoAdSequenceInteractionType|keyof typeof google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum.VideoAdSequenceInteractionType|null);
                            }

                            /** Represents a VideoAdSequenceStep. */
                            class VideoAdSequenceStep implements IVideoAdSequenceStep {

                                /**
                                 * Constructs a new VideoAdSequenceStep.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequenceStep);

                                /** VideoAdSequenceStep video_ad_sequence_step_id. */
                                public video_ad_sequence_step_id: number;

                                /** VideoAdSequenceStep asset_id. */
                                public asset_id: number;

                                /** VideoAdSequenceStep ad_group_type. */
                                public ad_group_type: (google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType);

                                /** VideoAdSequenceStep previous_step_id. */
                                public previous_step_id: number;

                                /** VideoAdSequenceStep previous_step_interaction_type. */
                                public previous_step_interaction_type: (google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum.VideoAdSequenceInteractionType|keyof typeof google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum.VideoAdSequenceInteractionType);

                                /**
                                 * Creates a new VideoAdSequenceStep instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns VideoAdSequenceStep instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequenceStep): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequenceStep;

                                /**
                                 * Encodes the specified VideoAdSequenceStep message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequenceStep.verify|verify} messages.
                                 * @param message VideoAdSequenceStep message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequenceStep, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified VideoAdSequenceStep message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequenceStep.verify|verify} messages.
                                 * @param message VideoAdSequenceStep message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.IVideoAdSequenceStep, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a VideoAdSequenceStep message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns VideoAdSequenceStep
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequenceStep;

                                /**
                                 * Decodes a VideoAdSequenceStep message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns VideoAdSequenceStep
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequenceStep;

                                /**
                                 * Verifies a VideoAdSequenceStep message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a VideoAdSequenceStep message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns VideoAdSequenceStep
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequenceStep;

                                /**
                                 * Creates a plain object from a VideoAdSequenceStep message. Also converts values to other types if specified.
                                 * @param message VideoAdSequenceStep
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Campaign.VideoCampaignSettings.VideoAdSequenceStep, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this VideoAdSequenceStep to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for VideoAdSequenceStep
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of a PmaxCampaignSettings. */
                        interface IPmaxCampaignSettings {

                            /** PmaxCampaignSettings brand_targeting_overrides */
                            brand_targeting_overrides?: (google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.IBrandTargetingOverrides|null);
                        }

                        /** Represents a PmaxCampaignSettings. */
                        class PmaxCampaignSettings implements IPmaxCampaignSettings {

                            /**
                             * Constructs a new PmaxCampaignSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IPmaxCampaignSettings);

                            /** PmaxCampaignSettings brand_targeting_overrides. */
                            public brand_targeting_overrides?: (google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.IBrandTargetingOverrides|null);

                            /**
                             * Creates a new PmaxCampaignSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PmaxCampaignSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IPmaxCampaignSettings): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings;

                            /**
                             * Encodes the specified PmaxCampaignSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.verify|verify} messages.
                             * @param message PmaxCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IPmaxCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PmaxCampaignSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.verify|verify} messages.
                             * @param message PmaxCampaignSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IPmaxCampaignSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PmaxCampaignSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PmaxCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings;

                            /**
                             * Decodes a PmaxCampaignSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PmaxCampaignSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings;

                            /**
                             * Verifies a PmaxCampaignSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PmaxCampaignSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PmaxCampaignSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings;

                            /**
                             * Creates a plain object from a PmaxCampaignSettings message. Also converts values to other types if specified.
                             * @param message PmaxCampaignSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PmaxCampaignSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PmaxCampaignSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace PmaxCampaignSettings {

                            /** Properties of a BrandTargetingOverrides. */
                            interface IBrandTargetingOverrides {

                                /** BrandTargetingOverrides ignore_exclusions_for_shopping_ads */
                                ignore_exclusions_for_shopping_ads?: (boolean|null);
                            }

                            /** Represents a BrandTargetingOverrides. */
                            class BrandTargetingOverrides implements IBrandTargetingOverrides {

                                /**
                                 * Constructs a new BrandTargetingOverrides.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.IBrandTargetingOverrides);

                                /** BrandTargetingOverrides ignore_exclusions_for_shopping_ads. */
                                public ignore_exclusions_for_shopping_ads?: (boolean|null);

                                /**
                                 * Creates a new BrandTargetingOverrides instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns BrandTargetingOverrides instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.IBrandTargetingOverrides): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.BrandTargetingOverrides;

                                /**
                                 * Encodes the specified BrandTargetingOverrides message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.BrandTargetingOverrides.verify|verify} messages.
                                 * @param message BrandTargetingOverrides message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.IBrandTargetingOverrides, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified BrandTargetingOverrides message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.BrandTargetingOverrides.verify|verify} messages.
                                 * @param message BrandTargetingOverrides message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.IBrandTargetingOverrides, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a BrandTargetingOverrides message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns BrandTargetingOverrides
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.BrandTargetingOverrides;

                                /**
                                 * Decodes a BrandTargetingOverrides message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns BrandTargetingOverrides
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.BrandTargetingOverrides;

                                /**
                                 * Verifies a BrandTargetingOverrides message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a BrandTargetingOverrides message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns BrandTargetingOverrides
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.BrandTargetingOverrides;

                                /**
                                 * Creates a plain object from a BrandTargetingOverrides message. Also converts values to other types if specified.
                                 * @param message BrandTargetingOverrides
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Campaign.PmaxCampaignSettings.BrandTargetingOverrides, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this BrandTargetingOverrides to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for BrandTargetingOverrides
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of an AssetAutomationSetting. */
                        interface IAssetAutomationSetting {

                            /** AssetAutomationSetting asset_automation_type */
                            asset_automation_type?: (google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|keyof typeof google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|null);

                            /** AssetAutomationSetting asset_automation_status */
                            asset_automation_status?: (google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|keyof typeof google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|null);
                        }

                        /** Represents an AssetAutomationSetting. */
                        class AssetAutomationSetting implements IAssetAutomationSetting {

                            /**
                             * Constructs a new AssetAutomationSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IAssetAutomationSetting);

                            /** AssetAutomationSetting asset_automation_type. */
                            public asset_automation_type?: (google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|keyof typeof google.ads.googleads.v23.enums.AssetAutomationTypeEnum.AssetAutomationType|null);

                            /** AssetAutomationSetting asset_automation_status. */
                            public asset_automation_status?: (google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|keyof typeof google.ads.googleads.v23.enums.AssetAutomationStatusEnum.AssetAutomationStatus|null);

                            /**
                             * Creates a new AssetAutomationSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AssetAutomationSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IAssetAutomationSetting): google.ads.googleads.v23.resources.Campaign.AssetAutomationSetting;

                            /**
                             * Encodes the specified AssetAutomationSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AssetAutomationSetting.verify|verify} messages.
                             * @param message AssetAutomationSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IAssetAutomationSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AssetAutomationSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AssetAutomationSetting.verify|verify} messages.
                             * @param message AssetAutomationSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IAssetAutomationSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AssetAutomationSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AssetAutomationSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.AssetAutomationSetting;

                            /**
                             * Decodes an AssetAutomationSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AssetAutomationSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.AssetAutomationSetting;

                            /**
                             * Verifies an AssetAutomationSetting message.
                             * @param message Plain 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 AssetAutomationSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AssetAutomationSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.AssetAutomationSetting;

                            /**
                             * Creates a plain object from an AssetAutomationSetting message. Also converts values to other types if specified.
                             * @param message AssetAutomationSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.AssetAutomationSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AssetAutomationSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AssetAutomationSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a BrandGuidelines. */
                        interface IBrandGuidelines {

                            /** BrandGuidelines main_color */
                            main_color?: (string|null);

                            /** BrandGuidelines accent_color */
                            accent_color?: (string|null);

                            /** BrandGuidelines predefined_font_family */
                            predefined_font_family?: (string|null);
                        }

                        /** Represents a BrandGuidelines. */
                        class BrandGuidelines implements IBrandGuidelines {

                            /**
                             * Constructs a new BrandGuidelines.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IBrandGuidelines);

                            /** BrandGuidelines main_color. */
                            public main_color: string;

                            /** BrandGuidelines accent_color. */
                            public accent_color: string;

                            /** BrandGuidelines predefined_font_family. */
                            public predefined_font_family: string;

                            /**
                             * Creates a new BrandGuidelines instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns BrandGuidelines instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IBrandGuidelines): google.ads.googleads.v23.resources.Campaign.BrandGuidelines;

                            /**
                             * Encodes the specified BrandGuidelines message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.BrandGuidelines.verify|verify} messages.
                             * @param message BrandGuidelines message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IBrandGuidelines, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BrandGuidelines message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.BrandGuidelines.verify|verify} messages.
                             * @param message BrandGuidelines message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IBrandGuidelines, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BrandGuidelines message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns BrandGuidelines
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.BrandGuidelines;

                            /**
                             * Decodes a BrandGuidelines message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns BrandGuidelines
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.BrandGuidelines;

                            /**
                             * Verifies a BrandGuidelines message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BrandGuidelines message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns BrandGuidelines
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.BrandGuidelines;

                            /**
                             * Creates a plain object from a BrandGuidelines message. Also converts values to other types if specified.
                             * @param message BrandGuidelines
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.BrandGuidelines, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BrandGuidelines to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for BrandGuidelines
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AiMaxSetting. */
                        interface IAiMaxSetting {

                            /** AiMaxSetting enable_ai_max */
                            enable_ai_max?: (boolean|null);

                            /** AiMaxSetting bundling_required */
                            bundling_required?: (google.ads.googleads.v23.resources.Campaign.AiMaxSetting.AiMaxBundlingRequired|keyof typeof google.ads.googleads.v23.resources.Campaign.AiMaxSetting.AiMaxBundlingRequired|null);
                        }

                        /** Represents an AiMaxSetting. */
                        class AiMaxSetting implements IAiMaxSetting {

                            /**
                             * Constructs a new AiMaxSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Campaign.IAiMaxSetting);

                            /** AiMaxSetting enable_ai_max. */
                            public enable_ai_max?: (boolean|null);

                            /** AiMaxSetting bundling_required. */
                            public bundling_required?: (google.ads.googleads.v23.resources.Campaign.AiMaxSetting.AiMaxBundlingRequired|keyof typeof google.ads.googleads.v23.resources.Campaign.AiMaxSetting.AiMaxBundlingRequired|null);

                            /**
                             * Creates a new AiMaxSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AiMaxSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Campaign.IAiMaxSetting): google.ads.googleads.v23.resources.Campaign.AiMaxSetting;

                            /**
                             * Encodes the specified AiMaxSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AiMaxSetting.verify|verify} messages.
                             * @param message AiMaxSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Campaign.IAiMaxSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AiMaxSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Campaign.AiMaxSetting.verify|verify} messages.
                             * @param message AiMaxSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Campaign.IAiMaxSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AiMaxSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AiMaxSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Campaign.AiMaxSetting;

                            /**
                             * Decodes an AiMaxSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AiMaxSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Campaign.AiMaxSetting;

                            /**
                             * Verifies an AiMaxSetting message.
                             * @param message Plain 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 AiMaxSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AiMaxSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Campaign.AiMaxSetting;

                            /**
                             * Creates a plain object from an AiMaxSetting message. Also converts values to other types if specified.
                             * @param message AiMaxSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Campaign.AiMaxSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AiMaxSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AiMaxSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace AiMaxSetting {

                            /** AiMaxBundlingRequired enum. */
                            enum AiMaxBundlingRequired {
                                UNSPECIFIED = 0,
                                UNKNOWN = 1,
                                NOT_REQUIRED = 2,
                                REQUIRED = 3
                            }
                        }
                    }

                    /** Properties of a CampaignAggregateAssetView. */
                    interface ICampaignAggregateAssetView {

                        /** CampaignAggregateAssetView resource_name */
                        resource_name?: (string|null);

                        /** CampaignAggregateAssetView campaign */
                        campaign?: (string|null);

                        /** CampaignAggregateAssetView asset */
                        asset?: (string|null);

                        /** CampaignAggregateAssetView asset_source */
                        asset_source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** CampaignAggregateAssetView field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents a CampaignAggregateAssetView. */
                    class CampaignAggregateAssetView implements ICampaignAggregateAssetView {

                        /**
                         * Constructs a new CampaignAggregateAssetView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignAggregateAssetView);

                        /** CampaignAggregateAssetView resource_name. */
                        public resource_name: string;

                        /** CampaignAggregateAssetView campaign. */
                        public campaign?: (string|null);

                        /** CampaignAggregateAssetView asset. */
                        public asset?: (string|null);

                        /** CampaignAggregateAssetView asset_source. */
                        public asset_source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** CampaignAggregateAssetView field_type. */
                        public field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /**
                         * Creates a new CampaignAggregateAssetView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignAggregateAssetView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignAggregateAssetView): google.ads.googleads.v23.resources.CampaignAggregateAssetView;

                        /**
                         * Encodes the specified CampaignAggregateAssetView message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAggregateAssetView.verify|verify} messages.
                         * @param message CampaignAggregateAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignAggregateAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAggregateAssetView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAggregateAssetView.verify|verify} messages.
                         * @param message CampaignAggregateAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignAggregateAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAggregateAssetView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignAggregateAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignAggregateAssetView;

                        /**
                         * Decodes a CampaignAggregateAssetView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignAggregateAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignAggregateAssetView;

                        /**
                         * Verifies a CampaignAggregateAssetView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAggregateAssetView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignAggregateAssetView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignAggregateAssetView;

                        /**
                         * Creates a plain object from a CampaignAggregateAssetView message. Also converts values to other types if specified.
                         * @param message CampaignAggregateAssetView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignAggregateAssetView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAggregateAssetView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignAggregateAssetView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignAsset. */
                    interface ICampaignAsset {

                        /** CampaignAsset resource_name */
                        resource_name?: (string|null);

                        /** CampaignAsset campaign */
                        campaign?: (string|null);

                        /** CampaignAsset asset */
                        asset?: (string|null);

                        /** CampaignAsset field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** CampaignAsset source */
                        source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** CampaignAsset status */
                        status?: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|null);

                        /** CampaignAsset primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|null);

                        /** CampaignAsset primary_status_details */
                        primary_status_details?: (google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[]|null);

                        /** CampaignAsset primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[]|null);
                    }

                    /** Represents a CampaignAsset. */
                    class CampaignAsset implements ICampaignAsset {

                        /**
                         * Constructs a new CampaignAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignAsset);

                        /** CampaignAsset resource_name. */
                        public resource_name: string;

                        /** CampaignAsset campaign. */
                        public campaign?: (string|null);

                        /** CampaignAsset asset. */
                        public asset?: (string|null);

                        /** CampaignAsset field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** CampaignAsset source. */
                        public source: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource);

                        /** CampaignAsset status. */
                        public status: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus);

                        /** CampaignAsset primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus);

                        /** CampaignAsset primary_status_details. */
                        public primary_status_details: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[];

                        /** CampaignAsset primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[];

                        /**
                         * Creates a new CampaignAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignAsset): google.ads.googleads.v23.resources.CampaignAsset;

                        /**
                         * Encodes the specified CampaignAsset message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAsset.verify|verify} messages.
                         * @param message CampaignAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAsset.verify|verify} messages.
                         * @param message CampaignAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAsset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignAsset;

                        /**
                         * Decodes a CampaignAsset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignAsset;

                        /**
                         * Verifies a CampaignAsset message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAsset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignAsset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignAsset;

                        /**
                         * Creates a plain object from a CampaignAsset message. Also converts values to other types if specified.
                         * @param message CampaignAsset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignAsset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignAsset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignAssetSet. */
                    interface ICampaignAssetSet {

                        /** CampaignAssetSet resource_name */
                        resource_name?: (string|null);

                        /** CampaignAssetSet campaign */
                        campaign?: (string|null);

                        /** CampaignAssetSet asset_set */
                        asset_set?: (string|null);

                        /** CampaignAssetSet status */
                        status?: (google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|null);
                    }

                    /** Represents a CampaignAssetSet. */
                    class CampaignAssetSet implements ICampaignAssetSet {

                        /**
                         * Constructs a new CampaignAssetSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignAssetSet);

                        /** CampaignAssetSet resource_name. */
                        public resource_name: string;

                        /** CampaignAssetSet campaign. */
                        public campaign: string;

                        /** CampaignAssetSet asset_set. */
                        public asset_set: string;

                        /** CampaignAssetSet status. */
                        public status: (google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus);

                        /**
                         * Creates a new CampaignAssetSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignAssetSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignAssetSet): google.ads.googleads.v23.resources.CampaignAssetSet;

                        /**
                         * Encodes the specified CampaignAssetSet message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAssetSet.verify|verify} messages.
                         * @param message CampaignAssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAssetSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAssetSet.verify|verify} messages.
                         * @param message CampaignAssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAssetSet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignAssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignAssetSet;

                        /**
                         * Decodes a CampaignAssetSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignAssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignAssetSet;

                        /**
                         * Verifies a CampaignAssetSet message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAssetSet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignAssetSet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignAssetSet;

                        /**
                         * Creates a plain object from a CampaignAssetSet message. Also converts values to other types if specified.
                         * @param message CampaignAssetSet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignAssetSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAssetSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignAssetSet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignAudienceView. */
                    interface ICampaignAudienceView {

                        /** CampaignAudienceView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a CampaignAudienceView. */
                    class CampaignAudienceView implements ICampaignAudienceView {

                        /**
                         * Constructs a new CampaignAudienceView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignAudienceView);

                        /** CampaignAudienceView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new CampaignAudienceView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignAudienceView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignAudienceView): google.ads.googleads.v23.resources.CampaignAudienceView;

                        /**
                         * Encodes the specified CampaignAudienceView message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAudienceView.verify|verify} messages.
                         * @param message CampaignAudienceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignAudienceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAudienceView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignAudienceView.verify|verify} messages.
                         * @param message CampaignAudienceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignAudienceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAudienceView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignAudienceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignAudienceView;

                        /**
                         * Decodes a CampaignAudienceView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignAudienceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignAudienceView;

                        /**
                         * Verifies a CampaignAudienceView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAudienceView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignAudienceView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignAudienceView;

                        /**
                         * Creates a plain object from a CampaignAudienceView message. Also converts values to other types if specified.
                         * @param message CampaignAudienceView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignAudienceView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAudienceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignAudienceView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignBidModifier. */
                    interface ICampaignBidModifier {

                        /** CampaignBidModifier resource_name */
                        resource_name?: (string|null);

                        /** CampaignBidModifier campaign */
                        campaign?: (string|null);

                        /** CampaignBidModifier criterion_id */
                        criterion_id?: (number|null);

                        /** CampaignBidModifier bid_modifier */
                        bid_modifier?: (number|null);

                        /** CampaignBidModifier interaction_type */
                        interaction_type?: (google.ads.googleads.v23.common.IInteractionTypeInfo|null);
                    }

                    /** Represents a CampaignBidModifier. */
                    class CampaignBidModifier implements ICampaignBidModifier {

                        /**
                         * Constructs a new CampaignBidModifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignBidModifier);

                        /** CampaignBidModifier resource_name. */
                        public resource_name: string;

                        /** CampaignBidModifier campaign. */
                        public campaign?: (string|null);

                        /** CampaignBidModifier criterion_id. */
                        public criterion_id?: (number|null);

                        /** CampaignBidModifier bid_modifier. */
                        public bid_modifier?: (number|null);

                        /** CampaignBidModifier interaction_type. */
                        public interaction_type?: (google.ads.googleads.v23.common.IInteractionTypeInfo|null);

                        /** CampaignBidModifier criterion. */
                        public criterion?: "interaction_type";

                        /**
                         * Creates a new CampaignBidModifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignBidModifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignBidModifier): google.ads.googleads.v23.resources.CampaignBidModifier;

                        /**
                         * Encodes the specified CampaignBidModifier message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignBidModifier.verify|verify} messages.
                         * @param message CampaignBidModifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBidModifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignBidModifier.verify|verify} messages.
                         * @param message CampaignBidModifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBidModifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignBidModifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignBidModifier;

                        /**
                         * Decodes a CampaignBidModifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignBidModifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignBidModifier;

                        /**
                         * Verifies a CampaignBidModifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBidModifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignBidModifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignBidModifier;

                        /**
                         * Creates a plain object from a CampaignBidModifier message. Also converts values to other types if specified.
                         * @param message CampaignBidModifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignBidModifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBidModifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignBidModifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignBudget. */
                    interface ICampaignBudget {

                        /** CampaignBudget resource_name */
                        resource_name?: (string|null);

                        /** CampaignBudget id */
                        id?: (number|null);

                        /** CampaignBudget name */
                        name?: (string|null);

                        /** CampaignBudget amount_micros */
                        amount_micros?: (number|null);

                        /** CampaignBudget total_amount_micros */
                        total_amount_micros?: (number|null);

                        /** CampaignBudget status */
                        status?: (google.ads.googleads.v23.enums.BudgetStatusEnum.BudgetStatus|keyof typeof google.ads.googleads.v23.enums.BudgetStatusEnum.BudgetStatus|null);

                        /** CampaignBudget delivery_method */
                        delivery_method?: (google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod|keyof typeof google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod|null);

                        /** CampaignBudget explicitly_shared */
                        explicitly_shared?: (boolean|null);

                        /** CampaignBudget reference_count */
                        reference_count?: (number|null);

                        /** CampaignBudget has_recommended_budget */
                        has_recommended_budget?: (boolean|null);

                        /** CampaignBudget recommended_budget_amount_micros */
                        recommended_budget_amount_micros?: (number|null);

                        /** CampaignBudget period */
                        period?: (google.ads.googleads.v23.enums.BudgetPeriodEnum.BudgetPeriod|keyof typeof google.ads.googleads.v23.enums.BudgetPeriodEnum.BudgetPeriod|null);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_clicks */
                        recommended_budget_estimated_change_weekly_clicks?: (number|null);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_cost_micros */
                        recommended_budget_estimated_change_weekly_cost_micros?: (number|null);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_interactions */
                        recommended_budget_estimated_change_weekly_interactions?: (number|null);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_views */
                        recommended_budget_estimated_change_weekly_views?: (number|null);

                        /** CampaignBudget type */
                        type?: (google.ads.googleads.v23.enums.BudgetTypeEnum.BudgetType|keyof typeof google.ads.googleads.v23.enums.BudgetTypeEnum.BudgetType|null);

                        /** CampaignBudget aligned_bidding_strategy_id */
                        aligned_bidding_strategy_id?: (number|null);
                    }

                    /** Represents a CampaignBudget. */
                    class CampaignBudget implements ICampaignBudget {

                        /**
                         * Constructs a new CampaignBudget.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignBudget);

                        /** CampaignBudget resource_name. */
                        public resource_name: string;

                        /** CampaignBudget id. */
                        public id?: (number|null);

                        /** CampaignBudget name. */
                        public name?: (string|null);

                        /** CampaignBudget amount_micros. */
                        public amount_micros?: (number|null);

                        /** CampaignBudget total_amount_micros. */
                        public total_amount_micros?: (number|null);

                        /** CampaignBudget status. */
                        public status: (google.ads.googleads.v23.enums.BudgetStatusEnum.BudgetStatus|keyof typeof google.ads.googleads.v23.enums.BudgetStatusEnum.BudgetStatus);

                        /** CampaignBudget delivery_method. */
                        public delivery_method: (google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod|keyof typeof google.ads.googleads.v23.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod);

                        /** CampaignBudget explicitly_shared. */
                        public explicitly_shared?: (boolean|null);

                        /** CampaignBudget reference_count. */
                        public reference_count?: (number|null);

                        /** CampaignBudget has_recommended_budget. */
                        public has_recommended_budget?: (boolean|null);

                        /** CampaignBudget recommended_budget_amount_micros. */
                        public recommended_budget_amount_micros?: (number|null);

                        /** CampaignBudget period. */
                        public period: (google.ads.googleads.v23.enums.BudgetPeriodEnum.BudgetPeriod|keyof typeof google.ads.googleads.v23.enums.BudgetPeriodEnum.BudgetPeriod);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_clicks. */
                        public recommended_budget_estimated_change_weekly_clicks?: (number|null);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_cost_micros. */
                        public recommended_budget_estimated_change_weekly_cost_micros?: (number|null);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_interactions. */
                        public recommended_budget_estimated_change_weekly_interactions?: (number|null);

                        /** CampaignBudget recommended_budget_estimated_change_weekly_views. */
                        public recommended_budget_estimated_change_weekly_views?: (number|null);

                        /** CampaignBudget type. */
                        public type: (google.ads.googleads.v23.enums.BudgetTypeEnum.BudgetType|keyof typeof google.ads.googleads.v23.enums.BudgetTypeEnum.BudgetType);

                        /** CampaignBudget aligned_bidding_strategy_id. */
                        public aligned_bidding_strategy_id: number;

                        /**
                         * Creates a new CampaignBudget instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignBudget instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignBudget): google.ads.googleads.v23.resources.CampaignBudget;

                        /**
                         * Encodes the specified CampaignBudget message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignBudget.verify|verify} messages.
                         * @param message CampaignBudget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBudget message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignBudget.verify|verify} messages.
                         * @param message CampaignBudget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBudget message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignBudget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignBudget;

                        /**
                         * Decodes a CampaignBudget message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignBudget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignBudget;

                        /**
                         * Verifies a CampaignBudget message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBudget message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignBudget
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignBudget;

                        /**
                         * Creates a plain object from a CampaignBudget message. Also converts values to other types if specified.
                         * @param message CampaignBudget
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignBudget, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBudget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignBudget
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignConversionGoal. */
                    interface ICampaignConversionGoal {

                        /** CampaignConversionGoal resource_name */
                        resource_name?: (string|null);

                        /** CampaignConversionGoal campaign */
                        campaign?: (string|null);

                        /** CampaignConversionGoal category */
                        category?: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|null);

                        /** CampaignConversionGoal origin */
                        origin?: (google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|keyof typeof google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|null);

                        /** CampaignConversionGoal biddable */
                        biddable?: (boolean|null);
                    }

                    /** Represents a CampaignConversionGoal. */
                    class CampaignConversionGoal implements ICampaignConversionGoal {

                        /**
                         * Constructs a new CampaignConversionGoal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignConversionGoal);

                        /** CampaignConversionGoal resource_name. */
                        public resource_name: string;

                        /** CampaignConversionGoal campaign. */
                        public campaign: string;

                        /** CampaignConversionGoal category. */
                        public category: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory);

                        /** CampaignConversionGoal origin. */
                        public origin: (google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|keyof typeof google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin);

                        /** CampaignConversionGoal biddable. */
                        public biddable: boolean;

                        /**
                         * Creates a new CampaignConversionGoal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignConversionGoal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignConversionGoal): google.ads.googleads.v23.resources.CampaignConversionGoal;

                        /**
                         * Encodes the specified CampaignConversionGoal message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignConversionGoal.verify|verify} messages.
                         * @param message CampaignConversionGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignConversionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignConversionGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignConversionGoal.verify|verify} messages.
                         * @param message CampaignConversionGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignConversionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignConversionGoal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignConversionGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignConversionGoal;

                        /**
                         * Decodes a CampaignConversionGoal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignConversionGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignConversionGoal;

                        /**
                         * Verifies a CampaignConversionGoal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignConversionGoal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignConversionGoal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignConversionGoal;

                        /**
                         * Creates a plain object from a CampaignConversionGoal message. Also converts values to other types if specified.
                         * @param message CampaignConversionGoal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignConversionGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignConversionGoal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignConversionGoal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignCriterion. */
                    interface ICampaignCriterion {

                        /** CampaignCriterion resource_name */
                        resource_name?: (string|null);

                        /** CampaignCriterion campaign */
                        campaign?: (string|null);

                        /** CampaignCriterion criterion_id */
                        criterion_id?: (number|null);

                        /** CampaignCriterion display_name */
                        display_name?: (string|null);

                        /** CampaignCriterion bid_modifier */
                        bid_modifier?: (number|null);

                        /** CampaignCriterion negative */
                        negative?: (boolean|null);

                        /** CampaignCriterion type */
                        type?: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|null);

                        /** CampaignCriterion status */
                        status?: (google.ads.googleads.v23.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus|keyof typeof google.ads.googleads.v23.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus|null);

                        /** CampaignCriterion keyword */
                        keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** CampaignCriterion placement */
                        placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** CampaignCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** CampaignCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** CampaignCriterion location */
                        location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** CampaignCriterion device */
                        device?: (google.ads.googleads.v23.common.IDeviceInfo|null);

                        /** CampaignCriterion ad_schedule */
                        ad_schedule?: (google.ads.googleads.v23.common.IAdScheduleInfo|null);

                        /** CampaignCriterion age_range */
                        age_range?: (google.ads.googleads.v23.common.IAgeRangeInfo|null);

                        /** CampaignCriterion gender */
                        gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** CampaignCriterion income_range */
                        income_range?: (google.ads.googleads.v23.common.IIncomeRangeInfo|null);

                        /** CampaignCriterion parental_status */
                        parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** CampaignCriterion user_list */
                        user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** CampaignCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** CampaignCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** CampaignCriterion proximity */
                        proximity?: (google.ads.googleads.v23.common.IProximityInfo|null);

                        /** CampaignCriterion topic */
                        topic?: (google.ads.googleads.v23.common.ITopicInfo|null);

                        /** CampaignCriterion listing_scope */
                        listing_scope?: (google.ads.googleads.v23.common.IListingScopeInfo|null);

                        /** CampaignCriterion language */
                        language?: (google.ads.googleads.v23.common.ILanguageInfo|null);

                        /** CampaignCriterion ip_block */
                        ip_block?: (google.ads.googleads.v23.common.IIpBlockInfo|null);

                        /** CampaignCriterion content_label */
                        content_label?: (google.ads.googleads.v23.common.IContentLabelInfo|null);

                        /** CampaignCriterion carrier */
                        carrier?: (google.ads.googleads.v23.common.ICarrierInfo|null);

                        /** CampaignCriterion user_interest */
                        user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** CampaignCriterion webpage */
                        webpage?: (google.ads.googleads.v23.common.IWebpageInfo|null);

                        /** CampaignCriterion operating_system_version */
                        operating_system_version?: (google.ads.googleads.v23.common.IOperatingSystemVersionInfo|null);

                        /** CampaignCriterion mobile_device */
                        mobile_device?: (google.ads.googleads.v23.common.IMobileDeviceInfo|null);

                        /** CampaignCriterion location_group */
                        location_group?: (google.ads.googleads.v23.common.ILocationGroupInfo|null);

                        /** CampaignCriterion custom_affinity */
                        custom_affinity?: (google.ads.googleads.v23.common.ICustomAffinityInfo|null);

                        /** CampaignCriterion custom_audience */
                        custom_audience?: (google.ads.googleads.v23.common.ICustomAudienceInfo|null);

                        /** CampaignCriterion combined_audience */
                        combined_audience?: (google.ads.googleads.v23.common.ICombinedAudienceInfo|null);

                        /** CampaignCriterion keyword_theme */
                        keyword_theme?: (google.ads.googleads.v23.common.IKeywordThemeInfo|null);

                        /** CampaignCriterion local_service_id */
                        local_service_id?: (google.ads.googleads.v23.common.ILocalServiceIdInfo|null);

                        /** CampaignCriterion brand_list */
                        brand_list?: (google.ads.googleads.v23.common.IBrandListInfo|null);

                        /** CampaignCriterion life_event */
                        life_event?: (google.ads.googleads.v23.common.ILifeEventInfo|null);

                        /** CampaignCriterion webpage_list */
                        webpage_list?: (google.ads.googleads.v23.common.IWebpageListInfo|null);

                        /** CampaignCriterion video_lineup */
                        video_lineup?: (google.ads.googleads.v23.common.IVideoLineupInfo|null);

                        /** CampaignCriterion extended_demographic */
                        extended_demographic?: (google.ads.googleads.v23.common.IExtendedDemographicInfo|null);
                    }

                    /** Represents a CampaignCriterion. */
                    class CampaignCriterion implements ICampaignCriterion {

                        /**
                         * Constructs a new CampaignCriterion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignCriterion);

                        /** CampaignCriterion resource_name. */
                        public resource_name: string;

                        /** CampaignCriterion campaign. */
                        public campaign?: (string|null);

                        /** CampaignCriterion criterion_id. */
                        public criterion_id?: (number|null);

                        /** CampaignCriterion display_name. */
                        public display_name: string;

                        /** CampaignCriterion bid_modifier. */
                        public bid_modifier?: (number|null);

                        /** CampaignCriterion negative. */
                        public negative?: (boolean|null);

                        /** CampaignCriterion type. */
                        public type: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType);

                        /** CampaignCriterion status. */
                        public status: (google.ads.googleads.v23.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus|keyof typeof google.ads.googleads.v23.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus);

                        /** CampaignCriterion keyword. */
                        public keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** CampaignCriterion placement. */
                        public placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** CampaignCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** CampaignCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** CampaignCriterion location. */
                        public location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** CampaignCriterion device. */
                        public device?: (google.ads.googleads.v23.common.IDeviceInfo|null);

                        /** CampaignCriterion ad_schedule. */
                        public ad_schedule?: (google.ads.googleads.v23.common.IAdScheduleInfo|null);

                        /** CampaignCriterion age_range. */
                        public age_range?: (google.ads.googleads.v23.common.IAgeRangeInfo|null);

                        /** CampaignCriterion gender. */
                        public gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** CampaignCriterion income_range. */
                        public income_range?: (google.ads.googleads.v23.common.IIncomeRangeInfo|null);

                        /** CampaignCriterion parental_status. */
                        public parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** CampaignCriterion user_list. */
                        public user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** CampaignCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** CampaignCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** CampaignCriterion proximity. */
                        public proximity?: (google.ads.googleads.v23.common.IProximityInfo|null);

                        /** CampaignCriterion topic. */
                        public topic?: (google.ads.googleads.v23.common.ITopicInfo|null);

                        /** CampaignCriterion listing_scope. */
                        public listing_scope?: (google.ads.googleads.v23.common.IListingScopeInfo|null);

                        /** CampaignCriterion language. */
                        public language?: (google.ads.googleads.v23.common.ILanguageInfo|null);

                        /** CampaignCriterion ip_block. */
                        public ip_block?: (google.ads.googleads.v23.common.IIpBlockInfo|null);

                        /** CampaignCriterion content_label. */
                        public content_label?: (google.ads.googleads.v23.common.IContentLabelInfo|null);

                        /** CampaignCriterion carrier. */
                        public carrier?: (google.ads.googleads.v23.common.ICarrierInfo|null);

                        /** CampaignCriterion user_interest. */
                        public user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** CampaignCriterion webpage. */
                        public webpage?: (google.ads.googleads.v23.common.IWebpageInfo|null);

                        /** CampaignCriterion operating_system_version. */
                        public operating_system_version?: (google.ads.googleads.v23.common.IOperatingSystemVersionInfo|null);

                        /** CampaignCriterion mobile_device. */
                        public mobile_device?: (google.ads.googleads.v23.common.IMobileDeviceInfo|null);

                        /** CampaignCriterion location_group. */
                        public location_group?: (google.ads.googleads.v23.common.ILocationGroupInfo|null);

                        /** CampaignCriterion custom_affinity. */
                        public custom_affinity?: (google.ads.googleads.v23.common.ICustomAffinityInfo|null);

                        /** CampaignCriterion custom_audience. */
                        public custom_audience?: (google.ads.googleads.v23.common.ICustomAudienceInfo|null);

                        /** CampaignCriterion combined_audience. */
                        public combined_audience?: (google.ads.googleads.v23.common.ICombinedAudienceInfo|null);

                        /** CampaignCriterion keyword_theme. */
                        public keyword_theme?: (google.ads.googleads.v23.common.IKeywordThemeInfo|null);

                        /** CampaignCriterion local_service_id. */
                        public local_service_id?: (google.ads.googleads.v23.common.ILocalServiceIdInfo|null);

                        /** CampaignCriterion brand_list. */
                        public brand_list?: (google.ads.googleads.v23.common.IBrandListInfo|null);

                        /** CampaignCriterion life_event. */
                        public life_event?: (google.ads.googleads.v23.common.ILifeEventInfo|null);

                        /** CampaignCriterion webpage_list. */
                        public webpage_list?: (google.ads.googleads.v23.common.IWebpageListInfo|null);

                        /** CampaignCriterion video_lineup. */
                        public video_lineup?: (google.ads.googleads.v23.common.IVideoLineupInfo|null);

                        /** CampaignCriterion extended_demographic. */
                        public extended_demographic?: (google.ads.googleads.v23.common.IExtendedDemographicInfo|null);

                        /** CampaignCriterion criterion. */
                        public criterion?: ("keyword"|"placement"|"mobile_app_category"|"mobile_application"|"location"|"device"|"ad_schedule"|"age_range"|"gender"|"income_range"|"parental_status"|"user_list"|"youtube_video"|"youtube_channel"|"proximity"|"topic"|"listing_scope"|"language"|"ip_block"|"content_label"|"carrier"|"user_interest"|"webpage"|"operating_system_version"|"mobile_device"|"location_group"|"custom_affinity"|"custom_audience"|"combined_audience"|"keyword_theme"|"local_service_id"|"brand_list"|"life_event"|"webpage_list"|"video_lineup"|"extended_demographic");

                        /**
                         * Creates a new CampaignCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignCriterion): google.ads.googleads.v23.resources.CampaignCriterion;

                        /**
                         * Encodes the specified CampaignCriterion message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignCriterion.verify|verify} messages.
                         * @param message CampaignCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignCriterion.verify|verify} messages.
                         * @param message CampaignCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignCriterion;

                        /**
                         * Decodes a CampaignCriterion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignCriterion;

                        /**
                         * Verifies a CampaignCriterion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignCriterion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignCriterion;

                        /**
                         * Creates a plain object from a CampaignCriterion message. Also converts values to other types if specified.
                         * @param message CampaignCriterion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignCriterion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignCriterion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignCustomizer. */
                    interface ICampaignCustomizer {

                        /** CampaignCustomizer resource_name */
                        resource_name?: (string|null);

                        /** CampaignCustomizer campaign */
                        campaign?: (string|null);

                        /** CampaignCustomizer customizer_attribute */
                        customizer_attribute?: (string|null);

                        /** CampaignCustomizer status */
                        status?: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|null);

                        /** CampaignCustomizer value */
                        value?: (google.ads.googleads.v23.common.ICustomizerValue|null);
                    }

                    /** Represents a CampaignCustomizer. */
                    class CampaignCustomizer implements ICampaignCustomizer {

                        /**
                         * Constructs a new CampaignCustomizer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignCustomizer);

                        /** CampaignCustomizer resource_name. */
                        public resource_name: string;

                        /** CampaignCustomizer campaign. */
                        public campaign: string;

                        /** CampaignCustomizer customizer_attribute. */
                        public customizer_attribute: string;

                        /** CampaignCustomizer status. */
                        public status: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus);

                        /** CampaignCustomizer value. */
                        public value?: (google.ads.googleads.v23.common.ICustomizerValue|null);

                        /**
                         * Creates a new CampaignCustomizer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCustomizer instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignCustomizer): google.ads.googleads.v23.resources.CampaignCustomizer;

                        /**
                         * Encodes the specified CampaignCustomizer message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignCustomizer.verify|verify} messages.
                         * @param message CampaignCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCustomizer message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignCustomizer.verify|verify} messages.
                         * @param message CampaignCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCustomizer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignCustomizer;

                        /**
                         * Decodes a CampaignCustomizer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignCustomizer;

                        /**
                         * Verifies a CampaignCustomizer message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCustomizer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignCustomizer
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignCustomizer;

                        /**
                         * Creates a plain object from a CampaignCustomizer message. Also converts values to other types if specified.
                         * @param message CampaignCustomizer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignCustomizer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCustomizer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignCustomizer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignDraft. */
                    interface ICampaignDraft {

                        /** CampaignDraft resource_name */
                        resource_name?: (string|null);

                        /** CampaignDraft draft_id */
                        draft_id?: (number|null);

                        /** CampaignDraft base_campaign */
                        base_campaign?: (string|null);

                        /** CampaignDraft name */
                        name?: (string|null);

                        /** CampaignDraft draft_campaign */
                        draft_campaign?: (string|null);

                        /** CampaignDraft status */
                        status?: (google.ads.googleads.v23.enums.CampaignDraftStatusEnum.CampaignDraftStatus|keyof typeof google.ads.googleads.v23.enums.CampaignDraftStatusEnum.CampaignDraftStatus|null);

                        /** CampaignDraft has_experiment_running */
                        has_experiment_running?: (boolean|null);

                        /** CampaignDraft long_running_operation */
                        long_running_operation?: (string|null);
                    }

                    /** Represents a CampaignDraft. */
                    class CampaignDraft implements ICampaignDraft {

                        /**
                         * Constructs a new CampaignDraft.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignDraft);

                        /** CampaignDraft resource_name. */
                        public resource_name: string;

                        /** CampaignDraft draft_id. */
                        public draft_id?: (number|null);

                        /** CampaignDraft base_campaign. */
                        public base_campaign?: (string|null);

                        /** CampaignDraft name. */
                        public name?: (string|null);

                        /** CampaignDraft draft_campaign. */
                        public draft_campaign?: (string|null);

                        /** CampaignDraft status. */
                        public status: (google.ads.googleads.v23.enums.CampaignDraftStatusEnum.CampaignDraftStatus|keyof typeof google.ads.googleads.v23.enums.CampaignDraftStatusEnum.CampaignDraftStatus);

                        /** CampaignDraft has_experiment_running. */
                        public has_experiment_running?: (boolean|null);

                        /** CampaignDraft long_running_operation. */
                        public long_running_operation?: (string|null);

                        /**
                         * Creates a new CampaignDraft instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignDraft instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignDraft): google.ads.googleads.v23.resources.CampaignDraft;

                        /**
                         * Encodes the specified CampaignDraft message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignDraft.verify|verify} messages.
                         * @param message CampaignDraft message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignDraft, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraft message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignDraft.verify|verify} messages.
                         * @param message CampaignDraft message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignDraft, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraft message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignDraft
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignDraft;

                        /**
                         * Decodes a CampaignDraft message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignDraft
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignDraft;

                        /**
                         * Verifies a CampaignDraft message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraft message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignDraft
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignDraft;

                        /**
                         * Creates a plain object from a CampaignDraft message. Also converts values to other types if specified.
                         * @param message CampaignDraft
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignDraft, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraft to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignDraft
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignGoalConfig. */
                    interface ICampaignGoalConfig {

                        /** CampaignGoalConfig resource_name */
                        resource_name?: (string|null);

                        /** CampaignGoalConfig campaign */
                        campaign?: (string|null);

                        /** CampaignGoalConfig goal */
                        goal?: (string|null);

                        /** CampaignGoalConfig goal_type */
                        goal_type?: (google.ads.googleads.v23.enums.GoalTypeEnum.GoalType|keyof typeof google.ads.googleads.v23.enums.GoalTypeEnum.GoalType|null);

                        /** CampaignGoalConfig campaign_retention_settings */
                        campaign_retention_settings?: (google.ads.googleads.v23.common.CampaignGoalSettings.ICampaignRetentionGoalSettings|null);
                    }

                    /** Represents a CampaignGoalConfig. */
                    class CampaignGoalConfig implements ICampaignGoalConfig {

                        /**
                         * Constructs a new CampaignGoalConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignGoalConfig);

                        /** CampaignGoalConfig resource_name. */
                        public resource_name: string;

                        /** CampaignGoalConfig campaign. */
                        public campaign: string;

                        /** CampaignGoalConfig goal. */
                        public goal: string;

                        /** CampaignGoalConfig goal_type. */
                        public goal_type: (google.ads.googleads.v23.enums.GoalTypeEnum.GoalType|keyof typeof google.ads.googleads.v23.enums.GoalTypeEnum.GoalType);

                        /** CampaignGoalConfig campaign_retention_settings. */
                        public campaign_retention_settings?: (google.ads.googleads.v23.common.CampaignGoalSettings.ICampaignRetentionGoalSettings|null);

                        /** CampaignGoalConfig campaign_goal_config_settings. */
                        public campaign_goal_config_settings?: "campaign_retention_settings";

                        /**
                         * Creates a new CampaignGoalConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignGoalConfig instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignGoalConfig): google.ads.googleads.v23.resources.CampaignGoalConfig;

                        /**
                         * Encodes the specified CampaignGoalConfig message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignGoalConfig.verify|verify} messages.
                         * @param message CampaignGoalConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignGoalConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignGoalConfig message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignGoalConfig.verify|verify} messages.
                         * @param message CampaignGoalConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignGoalConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignGoalConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignGoalConfig
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignGoalConfig;

                        /**
                         * Decodes a CampaignGoalConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignGoalConfig
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignGoalConfig;

                        /**
                         * Verifies a CampaignGoalConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignGoalConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignGoalConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignGoalConfig;

                        /**
                         * Creates a plain object from a CampaignGoalConfig message. Also converts values to other types if specified.
                         * @param message CampaignGoalConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignGoalConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignGoalConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignGoalConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignGroup. */
                    interface ICampaignGroup {

                        /** CampaignGroup resource_name */
                        resource_name?: (string|null);

                        /** CampaignGroup id */
                        id?: (number|null);

                        /** CampaignGroup name */
                        name?: (string|null);

                        /** CampaignGroup status */
                        status?: (google.ads.googleads.v23.enums.CampaignGroupStatusEnum.CampaignGroupStatus|keyof typeof google.ads.googleads.v23.enums.CampaignGroupStatusEnum.CampaignGroupStatus|null);
                    }

                    /** Represents a CampaignGroup. */
                    class CampaignGroup implements ICampaignGroup {

                        /**
                         * Constructs a new CampaignGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignGroup);

                        /** CampaignGroup resource_name. */
                        public resource_name: string;

                        /** CampaignGroup id. */
                        public id: number;

                        /** CampaignGroup name. */
                        public name: string;

                        /** CampaignGroup status. */
                        public status: (google.ads.googleads.v23.enums.CampaignGroupStatusEnum.CampaignGroupStatus|keyof typeof google.ads.googleads.v23.enums.CampaignGroupStatusEnum.CampaignGroupStatus);

                        /**
                         * Creates a new CampaignGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignGroup): google.ads.googleads.v23.resources.CampaignGroup;

                        /**
                         * Encodes the specified CampaignGroup message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignGroup.verify|verify} messages.
                         * @param message CampaignGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignGroup.verify|verify} messages.
                         * @param message CampaignGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignGroup;

                        /**
                         * Decodes a CampaignGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignGroup;

                        /**
                         * Verifies a CampaignGroup message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignGroup;

                        /**
                         * Creates a plain object from a CampaignGroup message. Also converts values to other types if specified.
                         * @param message CampaignGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignLabel. */
                    interface ICampaignLabel {

                        /** CampaignLabel resource_name */
                        resource_name?: (string|null);

                        /** CampaignLabel campaign */
                        campaign?: (string|null);

                        /** CampaignLabel label */
                        label?: (string|null);
                    }

                    /** Represents a CampaignLabel. */
                    class CampaignLabel implements ICampaignLabel {

                        /**
                         * Constructs a new CampaignLabel.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignLabel);

                        /** CampaignLabel resource_name. */
                        public resource_name: string;

                        /** CampaignLabel campaign. */
                        public campaign?: (string|null);

                        /** CampaignLabel label. */
                        public label?: (string|null);

                        /**
                         * Creates a new CampaignLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignLabel): google.ads.googleads.v23.resources.CampaignLabel;

                        /**
                         * Encodes the specified CampaignLabel message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignLabel.verify|verify} messages.
                         * @param message CampaignLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignLabel.verify|verify} messages.
                         * @param message CampaignLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignLabel message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignLabel;

                        /**
                         * Decodes a CampaignLabel message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignLabel;

                        /**
                         * Verifies a CampaignLabel message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignLabel message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignLabel
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignLabel;

                        /**
                         * Creates a plain object from a CampaignLabel message. Also converts values to other types if specified.
                         * @param message CampaignLabel
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignLabel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignLabel
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignLifecycleGoal. */
                    interface ICampaignLifecycleGoal {

                        /** CampaignLifecycleGoal resource_name */
                        resource_name?: (string|null);

                        /** CampaignLifecycleGoal campaign */
                        campaign?: (string|null);

                        /** CampaignLifecycleGoal customer_acquisition_goal_settings */
                        customer_acquisition_goal_settings?: (google.ads.googleads.v23.resources.ICustomerAcquisitionGoalSettings|null);
                    }

                    /** Represents a CampaignLifecycleGoal. */
                    class CampaignLifecycleGoal implements ICampaignLifecycleGoal {

                        /**
                         * Constructs a new CampaignLifecycleGoal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignLifecycleGoal);

                        /** CampaignLifecycleGoal resource_name. */
                        public resource_name: string;

                        /** CampaignLifecycleGoal campaign. */
                        public campaign: string;

                        /** CampaignLifecycleGoal customer_acquisition_goal_settings. */
                        public customer_acquisition_goal_settings?: (google.ads.googleads.v23.resources.ICustomerAcquisitionGoalSettings|null);

                        /**
                         * Creates a new CampaignLifecycleGoal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignLifecycleGoal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignLifecycleGoal): google.ads.googleads.v23.resources.CampaignLifecycleGoal;

                        /**
                         * Encodes the specified CampaignLifecycleGoal message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignLifecycleGoal.verify|verify} messages.
                         * @param message CampaignLifecycleGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignLifecycleGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignLifecycleGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignLifecycleGoal.verify|verify} messages.
                         * @param message CampaignLifecycleGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignLifecycleGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignLifecycleGoal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignLifecycleGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignLifecycleGoal;

                        /**
                         * Decodes a CampaignLifecycleGoal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignLifecycleGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignLifecycleGoal;

                        /**
                         * Verifies a CampaignLifecycleGoal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignLifecycleGoal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignLifecycleGoal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignLifecycleGoal;

                        /**
                         * Creates a plain object from a CampaignLifecycleGoal message. Also converts values to other types if specified.
                         * @param message CampaignLifecycleGoal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignLifecycleGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignLifecycleGoal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignLifecycleGoal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerAcquisitionGoalSettings. */
                    interface ICustomerAcquisitionGoalSettings {

                        /** CustomerAcquisitionGoalSettings optimization_mode */
                        optimization_mode?: (google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum.CustomerAcquisitionOptimizationMode|keyof typeof google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum.CustomerAcquisitionOptimizationMode|null);

                        /** CustomerAcquisitionGoalSettings value_settings */
                        value_settings?: (google.ads.googleads.v23.common.ILifecycleGoalValueSettings|null);
                    }

                    /** Represents a CustomerAcquisitionGoalSettings. */
                    class CustomerAcquisitionGoalSettings implements ICustomerAcquisitionGoalSettings {

                        /**
                         * Constructs a new CustomerAcquisitionGoalSettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerAcquisitionGoalSettings);

                        /** CustomerAcquisitionGoalSettings optimization_mode. */
                        public optimization_mode: (google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum.CustomerAcquisitionOptimizationMode|keyof typeof google.ads.googleads.v23.enums.CustomerAcquisitionOptimizationModeEnum.CustomerAcquisitionOptimizationMode);

                        /** CustomerAcquisitionGoalSettings value_settings. */
                        public value_settings?: (google.ads.googleads.v23.common.ILifecycleGoalValueSettings|null);

                        /**
                         * Creates a new CustomerAcquisitionGoalSettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAcquisitionGoalSettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerAcquisitionGoalSettings): google.ads.googleads.v23.resources.CustomerAcquisitionGoalSettings;

                        /**
                         * Encodes the specified CustomerAcquisitionGoalSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAcquisitionGoalSettings.verify|verify} messages.
                         * @param message CustomerAcquisitionGoalSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerAcquisitionGoalSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAcquisitionGoalSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAcquisitionGoalSettings.verify|verify} messages.
                         * @param message CustomerAcquisitionGoalSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerAcquisitionGoalSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAcquisitionGoalSettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerAcquisitionGoalSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerAcquisitionGoalSettings;

                        /**
                         * Decodes a CustomerAcquisitionGoalSettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerAcquisitionGoalSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerAcquisitionGoalSettings;

                        /**
                         * Verifies a CustomerAcquisitionGoalSettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAcquisitionGoalSettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerAcquisitionGoalSettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerAcquisitionGoalSettings;

                        /**
                         * Creates a plain object from a CustomerAcquisitionGoalSettings message. Also converts values to other types if specified.
                         * @param message CustomerAcquisitionGoalSettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerAcquisitionGoalSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAcquisitionGoalSettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerAcquisitionGoalSettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignSearchTermInsight. */
                    interface ICampaignSearchTermInsight {

                        /** CampaignSearchTermInsight resource_name */
                        resource_name?: (string|null);

                        /** CampaignSearchTermInsight category_label */
                        category_label?: (string|null);

                        /** CampaignSearchTermInsight id */
                        id?: (number|null);

                        /** CampaignSearchTermInsight campaign_id */
                        campaign_id?: (number|null);
                    }

                    /** Represents a CampaignSearchTermInsight. */
                    class CampaignSearchTermInsight implements ICampaignSearchTermInsight {

                        /**
                         * Constructs a new CampaignSearchTermInsight.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignSearchTermInsight);

                        /** CampaignSearchTermInsight resource_name. */
                        public resource_name: string;

                        /** CampaignSearchTermInsight category_label. */
                        public category_label?: (string|null);

                        /** CampaignSearchTermInsight id. */
                        public id?: (number|null);

                        /** CampaignSearchTermInsight campaign_id. */
                        public campaign_id?: (number|null);

                        /**
                         * Creates a new CampaignSearchTermInsight instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSearchTermInsight instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignSearchTermInsight): google.ads.googleads.v23.resources.CampaignSearchTermInsight;

                        /**
                         * Encodes the specified CampaignSearchTermInsight message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSearchTermInsight.verify|verify} messages.
                         * @param message CampaignSearchTermInsight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignSearchTermInsight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSearchTermInsight message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSearchTermInsight.verify|verify} messages.
                         * @param message CampaignSearchTermInsight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignSearchTermInsight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSearchTermInsight message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignSearchTermInsight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignSearchTermInsight;

                        /**
                         * Decodes a CampaignSearchTermInsight message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignSearchTermInsight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignSearchTermInsight;

                        /**
                         * Verifies a CampaignSearchTermInsight message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSearchTermInsight message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignSearchTermInsight
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignSearchTermInsight;

                        /**
                         * Creates a plain object from a CampaignSearchTermInsight message. Also converts values to other types if specified.
                         * @param message CampaignSearchTermInsight
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignSearchTermInsight, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSearchTermInsight to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignSearchTermInsight
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignSearchTermView. */
                    interface ICampaignSearchTermView {

                        /** CampaignSearchTermView resource_name */
                        resource_name?: (string|null);

                        /** CampaignSearchTermView search_term */
                        search_term?: (string|null);

                        /** CampaignSearchTermView campaign */
                        campaign?: (string|null);
                    }

                    /** Represents a CampaignSearchTermView. */
                    class CampaignSearchTermView implements ICampaignSearchTermView {

                        /**
                         * Constructs a new CampaignSearchTermView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignSearchTermView);

                        /** CampaignSearchTermView resource_name. */
                        public resource_name: string;

                        /** CampaignSearchTermView search_term. */
                        public search_term?: (string|null);

                        /** CampaignSearchTermView campaign. */
                        public campaign?: (string|null);

                        /**
                         * Creates a new CampaignSearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignSearchTermView): google.ads.googleads.v23.resources.CampaignSearchTermView;

                        /**
                         * Encodes the specified CampaignSearchTermView message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSearchTermView.verify|verify} messages.
                         * @param message CampaignSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSearchTermView.verify|verify} messages.
                         * @param message CampaignSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSearchTermView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignSearchTermView;

                        /**
                         * Decodes a CampaignSearchTermView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignSearchTermView;

                        /**
                         * Verifies a CampaignSearchTermView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignSearchTermView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignSearchTermView;

                        /**
                         * Creates a plain object from a CampaignSearchTermView message. Also converts values to other types if specified.
                         * @param message CampaignSearchTermView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignSearchTermView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignSearchTermView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignSharedSet. */
                    interface ICampaignSharedSet {

                        /** CampaignSharedSet resource_name */
                        resource_name?: (string|null);

                        /** CampaignSharedSet campaign */
                        campaign?: (string|null);

                        /** CampaignSharedSet shared_set */
                        shared_set?: (string|null);

                        /** CampaignSharedSet status */
                        status?: (google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus|keyof typeof google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus|null);
                    }

                    /** Represents a CampaignSharedSet. */
                    class CampaignSharedSet implements ICampaignSharedSet {

                        /**
                         * Constructs a new CampaignSharedSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignSharedSet);

                        /** CampaignSharedSet resource_name. */
                        public resource_name: string;

                        /** CampaignSharedSet campaign. */
                        public campaign?: (string|null);

                        /** CampaignSharedSet shared_set. */
                        public shared_set?: (string|null);

                        /** CampaignSharedSet status. */
                        public status: (google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus|keyof typeof google.ads.googleads.v23.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus);

                        /**
                         * Creates a new CampaignSharedSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSharedSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignSharedSet): google.ads.googleads.v23.resources.CampaignSharedSet;

                        /**
                         * Encodes the specified CampaignSharedSet message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSharedSet.verify|verify} messages.
                         * @param message CampaignSharedSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignSharedSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSharedSet.verify|verify} messages.
                         * @param message CampaignSharedSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignSharedSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignSharedSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignSharedSet;

                        /**
                         * Decodes a CampaignSharedSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignSharedSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignSharedSet;

                        /**
                         * Verifies a CampaignSharedSet message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignSharedSet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignSharedSet;

                        /**
                         * Creates a plain object from a CampaignSharedSet message. Also converts values to other types if specified.
                         * @param message CampaignSharedSet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignSharedSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignSharedSet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignSimulation. */
                    interface ICampaignSimulation {

                        /** CampaignSimulation resource_name */
                        resource_name?: (string|null);

                        /** CampaignSimulation campaign_id */
                        campaign_id?: (number|null);

                        /** CampaignSimulation type */
                        type?: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|null);

                        /** CampaignSimulation modification_method */
                        modification_method?: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|null);

                        /** CampaignSimulation start_date */
                        start_date?: (string|null);

                        /** CampaignSimulation end_date */
                        end_date?: (string|null);

                        /** CampaignSimulation cpc_bid_point_list */
                        cpc_bid_point_list?: (google.ads.googleads.v23.common.ICpcBidSimulationPointList|null);

                        /** CampaignSimulation target_cpa_point_list */
                        target_cpa_point_list?: (google.ads.googleads.v23.common.ITargetCpaSimulationPointList|null);

                        /** CampaignSimulation target_roas_point_list */
                        target_roas_point_list?: (google.ads.googleads.v23.common.ITargetRoasSimulationPointList|null);

                        /** CampaignSimulation target_impression_share_point_list */
                        target_impression_share_point_list?: (google.ads.googleads.v23.common.ITargetImpressionShareSimulationPointList|null);

                        /** CampaignSimulation budget_point_list */
                        budget_point_list?: (google.ads.googleads.v23.common.IBudgetSimulationPointList|null);
                    }

                    /** Represents a CampaignSimulation. */
                    class CampaignSimulation implements ICampaignSimulation {

                        /**
                         * Constructs a new CampaignSimulation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICampaignSimulation);

                        /** CampaignSimulation resource_name. */
                        public resource_name: string;

                        /** CampaignSimulation campaign_id. */
                        public campaign_id: number;

                        /** CampaignSimulation type. */
                        public type: (google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v23.enums.SimulationTypeEnum.SimulationType);

                        /** CampaignSimulation modification_method. */
                        public modification_method: (google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v23.enums.SimulationModificationMethodEnum.SimulationModificationMethod);

                        /** CampaignSimulation start_date. */
                        public start_date: string;

                        /** CampaignSimulation end_date. */
                        public end_date: string;

                        /** CampaignSimulation cpc_bid_point_list. */
                        public cpc_bid_point_list?: (google.ads.googleads.v23.common.ICpcBidSimulationPointList|null);

                        /** CampaignSimulation target_cpa_point_list. */
                        public target_cpa_point_list?: (google.ads.googleads.v23.common.ITargetCpaSimulationPointList|null);

                        /** CampaignSimulation target_roas_point_list. */
                        public target_roas_point_list?: (google.ads.googleads.v23.common.ITargetRoasSimulationPointList|null);

                        /** CampaignSimulation target_impression_share_point_list. */
                        public target_impression_share_point_list?: (google.ads.googleads.v23.common.ITargetImpressionShareSimulationPointList|null);

                        /** CampaignSimulation budget_point_list. */
                        public budget_point_list?: (google.ads.googleads.v23.common.IBudgetSimulationPointList|null);

                        /** CampaignSimulation point_list. */
                        public point_list?: ("cpc_bid_point_list"|"target_cpa_point_list"|"target_roas_point_list"|"target_impression_share_point_list"|"budget_point_list");

                        /**
                         * Creates a new CampaignSimulation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSimulation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICampaignSimulation): google.ads.googleads.v23.resources.CampaignSimulation;

                        /**
                         * Encodes the specified CampaignSimulation message. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSimulation.verify|verify} messages.
                         * @param message CampaignSimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICampaignSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CampaignSimulation.verify|verify} messages.
                         * @param message CampaignSimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICampaignSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSimulation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CampaignSimulation;

                        /**
                         * Decodes a CampaignSimulation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CampaignSimulation;

                        /**
                         * Verifies a CampaignSimulation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSimulation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignSimulation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CampaignSimulation;

                        /**
                         * Creates a plain object from a CampaignSimulation message. Also converts values to other types if specified.
                         * @param message CampaignSimulation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CampaignSimulation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignSimulation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CarrierConstant. */
                    interface ICarrierConstant {

                        /** CarrierConstant resource_name */
                        resource_name?: (string|null);

                        /** CarrierConstant id */
                        id?: (number|null);

                        /** CarrierConstant name */
                        name?: (string|null);

                        /** CarrierConstant country_code */
                        country_code?: (string|null);
                    }

                    /** Represents a CarrierConstant. */
                    class CarrierConstant implements ICarrierConstant {

                        /**
                         * Constructs a new CarrierConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICarrierConstant);

                        /** CarrierConstant resource_name. */
                        public resource_name: string;

                        /** CarrierConstant id. */
                        public id?: (number|null);

                        /** CarrierConstant name. */
                        public name?: (string|null);

                        /** CarrierConstant country_code. */
                        public country_code?: (string|null);

                        /**
                         * Creates a new CarrierConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CarrierConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICarrierConstant): google.ads.googleads.v23.resources.CarrierConstant;

                        /**
                         * Encodes the specified CarrierConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.CarrierConstant.verify|verify} messages.
                         * @param message CarrierConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICarrierConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CarrierConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CarrierConstant.verify|verify} messages.
                         * @param message CarrierConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICarrierConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CarrierConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CarrierConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CarrierConstant;

                        /**
                         * Decodes a CarrierConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CarrierConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CarrierConstant;

                        /**
                         * Verifies a CarrierConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CarrierConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CarrierConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CarrierConstant;

                        /**
                         * Creates a plain object from a CarrierConstant message. Also converts values to other types if specified.
                         * @param message CarrierConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CarrierConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CarrierConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CarrierConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ChangeEvent. */
                    interface IChangeEvent {

                        /** ChangeEvent resource_name */
                        resource_name?: (string|null);

                        /** ChangeEvent change_date_time */
                        change_date_time?: (string|null);

                        /** ChangeEvent change_resource_type */
                        change_resource_type?: (google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType|keyof typeof google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType|null);

                        /** ChangeEvent change_resource_name */
                        change_resource_name?: (string|null);

                        /** ChangeEvent client_type */
                        client_type?: (google.ads.googleads.v23.enums.ChangeClientTypeEnum.ChangeClientType|keyof typeof google.ads.googleads.v23.enums.ChangeClientTypeEnum.ChangeClientType|null);

                        /** ChangeEvent user_email */
                        user_email?: (string|null);

                        /** ChangeEvent old_resource */
                        old_resource?: (google.ads.googleads.v23.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent new_resource */
                        new_resource?: (google.ads.googleads.v23.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent resource_change_operation */
                        resource_change_operation?: (google.ads.googleads.v23.enums.ResourceChangeOperationEnum.ResourceChangeOperation|keyof typeof google.ads.googleads.v23.enums.ResourceChangeOperationEnum.ResourceChangeOperation|null);

                        /** ChangeEvent changed_fields */
                        changed_fields?: (google.protobuf.IFieldMask|null);

                        /** ChangeEvent campaign */
                        campaign?: (string|null);

                        /** ChangeEvent ad_group */
                        ad_group?: (string|null);

                        /** ChangeEvent asset */
                        asset?: (string|null);
                    }

                    /** Represents a ChangeEvent. */
                    class ChangeEvent implements IChangeEvent {

                        /**
                         * Constructs a new ChangeEvent.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IChangeEvent);

                        /** ChangeEvent resource_name. */
                        public resource_name: string;

                        /** ChangeEvent change_date_time. */
                        public change_date_time: string;

                        /** ChangeEvent change_resource_type. */
                        public change_resource_type: (google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType|keyof typeof google.ads.googleads.v23.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType);

                        /** ChangeEvent change_resource_name. */
                        public change_resource_name: string;

                        /** ChangeEvent client_type. */
                        public client_type: (google.ads.googleads.v23.enums.ChangeClientTypeEnum.ChangeClientType|keyof typeof google.ads.googleads.v23.enums.ChangeClientTypeEnum.ChangeClientType);

                        /** ChangeEvent user_email. */
                        public user_email: string;

                        /** ChangeEvent old_resource. */
                        public old_resource?: (google.ads.googleads.v23.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent new_resource. */
                        public new_resource?: (google.ads.googleads.v23.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent resource_change_operation. */
                        public resource_change_operation: (google.ads.googleads.v23.enums.ResourceChangeOperationEnum.ResourceChangeOperation|keyof typeof google.ads.googleads.v23.enums.ResourceChangeOperationEnum.ResourceChangeOperation);

                        /** ChangeEvent changed_fields. */
                        public changed_fields?: (google.protobuf.IFieldMask|null);

                        /** ChangeEvent campaign. */
                        public campaign: string;

                        /** ChangeEvent ad_group. */
                        public ad_group: string;

                        /** ChangeEvent asset. */
                        public asset: string;

                        /**
                         * Creates a new ChangeEvent instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeEvent instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IChangeEvent): google.ads.googleads.v23.resources.ChangeEvent;

                        /**
                         * Encodes the specified ChangeEvent message. Does not implicitly {@link google.ads.googleads.v23.resources.ChangeEvent.verify|verify} messages.
                         * @param message ChangeEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IChangeEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeEvent message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ChangeEvent.verify|verify} messages.
                         * @param message ChangeEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IChangeEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeEvent message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeEvent
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ChangeEvent;

                        /**
                         * Decodes a ChangeEvent message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeEvent
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ChangeEvent;

                        /**
                         * Verifies a ChangeEvent message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeEvent message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeEvent
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ChangeEvent;

                        /**
                         * Creates a plain object from a ChangeEvent message. Also converts values to other types if specified.
                         * @param message ChangeEvent
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ChangeEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeEvent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeEvent
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChangeEvent {

                        /** Properties of a ChangedResource. */
                        interface IChangedResource {

                            /** ChangedResource ad */
                            ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** ChangedResource ad_group */
                            ad_group?: (google.ads.googleads.v23.resources.IAdGroup|null);

                            /** ChangedResource ad_group_criterion */
                            ad_group_criterion?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                            /** ChangedResource campaign */
                            campaign?: (google.ads.googleads.v23.resources.ICampaign|null);

                            /** ChangedResource campaign_budget */
                            campaign_budget?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                            /** ChangedResource ad_group_bid_modifier */
                            ad_group_bid_modifier?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                            /** ChangedResource campaign_criterion */
                            campaign_criterion?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                            /** ChangedResource ad_group_ad */
                            ad_group_ad?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                            /** ChangedResource asset */
                            asset?: (google.ads.googleads.v23.resources.IAsset|null);

                            /** ChangedResource customer_asset */
                            customer_asset?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                            /** ChangedResource campaign_asset */
                            campaign_asset?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                            /** ChangedResource ad_group_asset */
                            ad_group_asset?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                            /** ChangedResource asset_set */
                            asset_set?: (google.ads.googleads.v23.resources.IAssetSet|null);

                            /** ChangedResource asset_set_asset */
                            asset_set_asset?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);

                            /** ChangedResource campaign_asset_set */
                            campaign_asset_set?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);
                        }

                        /** Represents a ChangedResource. */
                        class ChangedResource implements IChangedResource {

                            /**
                             * Constructs a new ChangedResource.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ChangeEvent.IChangedResource);

                            /** ChangedResource ad. */
                            public ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** ChangedResource ad_group. */
                            public ad_group?: (google.ads.googleads.v23.resources.IAdGroup|null);

                            /** ChangedResource ad_group_criterion. */
                            public ad_group_criterion?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                            /** ChangedResource campaign. */
                            public campaign?: (google.ads.googleads.v23.resources.ICampaign|null);

                            /** ChangedResource campaign_budget. */
                            public campaign_budget?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                            /** ChangedResource ad_group_bid_modifier. */
                            public ad_group_bid_modifier?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                            /** ChangedResource campaign_criterion. */
                            public campaign_criterion?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                            /** ChangedResource ad_group_ad. */
                            public ad_group_ad?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                            /** ChangedResource asset. */
                            public asset?: (google.ads.googleads.v23.resources.IAsset|null);

                            /** ChangedResource customer_asset. */
                            public customer_asset?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                            /** ChangedResource campaign_asset. */
                            public campaign_asset?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                            /** ChangedResource ad_group_asset. */
                            public ad_group_asset?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                            /** ChangedResource asset_set. */
                            public asset_set?: (google.ads.googleads.v23.resources.IAssetSet|null);

                            /** ChangedResource asset_set_asset. */
                            public asset_set_asset?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);

                            /** ChangedResource campaign_asset_set. */
                            public campaign_asset_set?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);

                            /**
                             * Creates a new ChangedResource instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ChangedResource instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ChangeEvent.IChangedResource): google.ads.googleads.v23.resources.ChangeEvent.ChangedResource;

                            /**
                             * Encodes the specified ChangedResource message. Does not implicitly {@link google.ads.googleads.v23.resources.ChangeEvent.ChangedResource.verify|verify} messages.
                             * @param message ChangedResource message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ChangeEvent.IChangedResource, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ChangedResource message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ChangeEvent.ChangedResource.verify|verify} messages.
                             * @param message ChangedResource message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ChangeEvent.IChangedResource, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ChangedResource message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ChangedResource
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ChangeEvent.ChangedResource;

                            /**
                             * Decodes a ChangedResource message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ChangedResource
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ChangeEvent.ChangedResource;

                            /**
                             * Verifies a ChangedResource message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ChangedResource message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ChangedResource
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ChangeEvent.ChangedResource;

                            /**
                             * Creates a plain object from a ChangedResource message. Also converts values to other types if specified.
                             * @param message ChangedResource
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ChangeEvent.ChangedResource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ChangedResource to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ChangedResource
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a CustomerAsset. */
                    interface ICustomerAsset {

                        /** CustomerAsset resource_name */
                        resource_name?: (string|null);

                        /** CustomerAsset asset */
                        asset?: (string|null);

                        /** CustomerAsset field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** CustomerAsset source */
                        source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** CustomerAsset status */
                        status?: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|null);

                        /** CustomerAsset primary_status */
                        primary_status?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|null);

                        /** CustomerAsset primary_status_details */
                        primary_status_details?: (google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[]|null);

                        /** CustomerAsset primary_status_reasons */
                        primary_status_reasons?: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[]|null);
                    }

                    /** Represents a CustomerAsset. */
                    class CustomerAsset implements ICustomerAsset {

                        /**
                         * Constructs a new CustomerAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerAsset);

                        /** CustomerAsset resource_name. */
                        public resource_name: string;

                        /** CustomerAsset asset. */
                        public asset: string;

                        /** CustomerAsset field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** CustomerAsset source. */
                        public source: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource);

                        /** CustomerAsset status. */
                        public status: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus);

                        /** CustomerAsset primary_status. */
                        public primary_status: (google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkPrimaryStatusEnum.AssetLinkPrimaryStatus);

                        /** CustomerAsset primary_status_details. */
                        public primary_status_details: google.ads.googleads.v23.common.IAssetLinkPrimaryStatusDetails[];

                        /** CustomerAsset primary_status_reasons. */
                        public primary_status_reasons: google.ads.googleads.v23.enums.AssetLinkPrimaryStatusReasonEnum.AssetLinkPrimaryStatusReason[];

                        /**
                         * Creates a new CustomerAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerAsset): google.ads.googleads.v23.resources.CustomerAsset;

                        /**
                         * Encodes the specified CustomerAsset message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAsset.verify|verify} messages.
                         * @param message CustomerAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAsset.verify|verify} messages.
                         * @param message CustomerAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAsset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerAsset;

                        /**
                         * Decodes a CustomerAsset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerAsset;

                        /**
                         * Verifies a CustomerAsset message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAsset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerAsset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerAsset;

                        /**
                         * Creates a plain object from a CustomerAsset message. Also converts values to other types if specified.
                         * @param message CustomerAsset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerAsset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerAsset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ChangeStatus. */
                    interface IChangeStatus {

                        /** ChangeStatus resource_name */
                        resource_name?: (string|null);

                        /** ChangeStatus last_change_date_time */
                        last_change_date_time?: (string|null);

                        /** ChangeStatus resource_type */
                        resource_type?: (google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum.ChangeStatusResourceType|keyof typeof google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum.ChangeStatusResourceType|null);

                        /** ChangeStatus campaign */
                        campaign?: (string|null);

                        /** ChangeStatus ad_group */
                        ad_group?: (string|null);

                        /** ChangeStatus resource_status */
                        resource_status?: (google.ads.googleads.v23.enums.ChangeStatusOperationEnum.ChangeStatusOperation|keyof typeof google.ads.googleads.v23.enums.ChangeStatusOperationEnum.ChangeStatusOperation|null);

                        /** ChangeStatus ad_group_ad */
                        ad_group_ad?: (string|null);

                        /** ChangeStatus ad_group_criterion */
                        ad_group_criterion?: (string|null);

                        /** ChangeStatus campaign_criterion */
                        campaign_criterion?: (string|null);

                        /** ChangeStatus ad_group_bid_modifier */
                        ad_group_bid_modifier?: (string|null);

                        /** ChangeStatus shared_set */
                        shared_set?: (string|null);

                        /** ChangeStatus campaign_shared_set */
                        campaign_shared_set?: (string|null);

                        /** ChangeStatus asset */
                        asset?: (string|null);

                        /** ChangeStatus customer_asset */
                        customer_asset?: (string|null);

                        /** ChangeStatus campaign_asset */
                        campaign_asset?: (string|null);

                        /** ChangeStatus ad_group_asset */
                        ad_group_asset?: (string|null);

                        /** ChangeStatus combined_audience */
                        combined_audience?: (string|null);

                        /** ChangeStatus asset_group */
                        asset_group?: (string|null);

                        /** ChangeStatus asset_set */
                        asset_set?: (string|null);

                        /** ChangeStatus campaign_budget */
                        campaign_budget?: (string|null);

                        /** ChangeStatus campaign_asset_set */
                        campaign_asset_set?: (string|null);
                    }

                    /** Represents a ChangeStatus. */
                    class ChangeStatus implements IChangeStatus {

                        /**
                         * Constructs a new ChangeStatus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IChangeStatus);

                        /** ChangeStatus resource_name. */
                        public resource_name: string;

                        /** ChangeStatus last_change_date_time. */
                        public last_change_date_time?: (string|null);

                        /** ChangeStatus resource_type. */
                        public resource_type: (google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum.ChangeStatusResourceType|keyof typeof google.ads.googleads.v23.enums.ChangeStatusResourceTypeEnum.ChangeStatusResourceType);

                        /** ChangeStatus campaign. */
                        public campaign?: (string|null);

                        /** ChangeStatus ad_group. */
                        public ad_group?: (string|null);

                        /** ChangeStatus resource_status. */
                        public resource_status: (google.ads.googleads.v23.enums.ChangeStatusOperationEnum.ChangeStatusOperation|keyof typeof google.ads.googleads.v23.enums.ChangeStatusOperationEnum.ChangeStatusOperation);

                        /** ChangeStatus ad_group_ad. */
                        public ad_group_ad?: (string|null);

                        /** ChangeStatus ad_group_criterion. */
                        public ad_group_criterion?: (string|null);

                        /** ChangeStatus campaign_criterion. */
                        public campaign_criterion?: (string|null);

                        /** ChangeStatus ad_group_bid_modifier. */
                        public ad_group_bid_modifier?: (string|null);

                        /** ChangeStatus shared_set. */
                        public shared_set: string;

                        /** ChangeStatus campaign_shared_set. */
                        public campaign_shared_set: string;

                        /** ChangeStatus asset. */
                        public asset: string;

                        /** ChangeStatus customer_asset. */
                        public customer_asset: string;

                        /** ChangeStatus campaign_asset. */
                        public campaign_asset: string;

                        /** ChangeStatus ad_group_asset. */
                        public ad_group_asset: string;

                        /** ChangeStatus combined_audience. */
                        public combined_audience: string;

                        /** ChangeStatus asset_group. */
                        public asset_group: string;

                        /** ChangeStatus asset_set. */
                        public asset_set: string;

                        /** ChangeStatus campaign_budget. */
                        public campaign_budget: string;

                        /** ChangeStatus campaign_asset_set. */
                        public campaign_asset_set: string;

                        /**
                         * Creates a new ChangeStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeStatus instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IChangeStatus): google.ads.googleads.v23.resources.ChangeStatus;

                        /**
                         * Encodes the specified ChangeStatus message. Does not implicitly {@link google.ads.googleads.v23.resources.ChangeStatus.verify|verify} messages.
                         * @param message ChangeStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IChangeStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatus message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ChangeStatus.verify|verify} messages.
                         * @param message ChangeStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IChangeStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChangeStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ChangeStatus;

                        /**
                         * Decodes a ChangeStatus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChangeStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ChangeStatus;

                        /**
                         * Verifies a ChangeStatus message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChangeStatus
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ChangeStatus;

                        /**
                         * Creates a plain object from a ChangeStatus message. Also converts values to other types if specified.
                         * @param message ChangeStatus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ChangeStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChangeStatus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ChannelAggregateAssetView. */
                    interface IChannelAggregateAssetView {

                        /** ChannelAggregateAssetView resource_name */
                        resource_name?: (string|null);

                        /** ChannelAggregateAssetView advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** ChannelAggregateAssetView asset */
                        asset?: (string|null);

                        /** ChannelAggregateAssetView asset_source */
                        asset_source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** ChannelAggregateAssetView field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents a ChannelAggregateAssetView. */
                    class ChannelAggregateAssetView implements IChannelAggregateAssetView {

                        /**
                         * Constructs a new ChannelAggregateAssetView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IChannelAggregateAssetView);

                        /** ChannelAggregateAssetView resource_name. */
                        public resource_name: string;

                        /** ChannelAggregateAssetView advertising_channel_type. */
                        public advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** ChannelAggregateAssetView asset. */
                        public asset?: (string|null);

                        /** ChannelAggregateAssetView asset_source. */
                        public asset_source?: (google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|keyof typeof google.ads.googleads.v23.enums.AssetSourceEnum.AssetSource|null);

                        /** ChannelAggregateAssetView field_type. */
                        public field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /**
                         * Creates a new ChannelAggregateAssetView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChannelAggregateAssetView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IChannelAggregateAssetView): google.ads.googleads.v23.resources.ChannelAggregateAssetView;

                        /**
                         * Encodes the specified ChannelAggregateAssetView message. Does not implicitly {@link google.ads.googleads.v23.resources.ChannelAggregateAssetView.verify|verify} messages.
                         * @param message ChannelAggregateAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IChannelAggregateAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChannelAggregateAssetView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ChannelAggregateAssetView.verify|verify} messages.
                         * @param message ChannelAggregateAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IChannelAggregateAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChannelAggregateAssetView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChannelAggregateAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ChannelAggregateAssetView;

                        /**
                         * Decodes a ChannelAggregateAssetView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChannelAggregateAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ChannelAggregateAssetView;

                        /**
                         * Verifies a ChannelAggregateAssetView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChannelAggregateAssetView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChannelAggregateAssetView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ChannelAggregateAssetView;

                        /**
                         * Creates a plain object from a ChannelAggregateAssetView message. Also converts values to other types if specified.
                         * @param message ChannelAggregateAssetView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ChannelAggregateAssetView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChannelAggregateAssetView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChannelAggregateAssetView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ClickView. */
                    interface IClickView {

                        /** ClickView resource_name */
                        resource_name?: (string|null);

                        /** ClickView gclid */
                        gclid?: (string|null);

                        /** ClickView area_of_interest */
                        area_of_interest?: (google.ads.googleads.v23.common.IClickLocation|null);

                        /** ClickView location_of_presence */
                        location_of_presence?: (google.ads.googleads.v23.common.IClickLocation|null);

                        /** ClickView page_number */
                        page_number?: (number|null);

                        /** ClickView ad_group_ad */
                        ad_group_ad?: (string|null);

                        /** ClickView campaign_location_target */
                        campaign_location_target?: (string|null);

                        /** ClickView user_list */
                        user_list?: (string|null);

                        /** ClickView keyword */
                        keyword?: (string|null);

                        /** ClickView keyword_info */
                        keyword_info?: (google.ads.googleads.v23.common.IKeywordInfo|null);
                    }

                    /** Represents a ClickView. */
                    class ClickView implements IClickView {

                        /**
                         * Constructs a new ClickView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IClickView);

                        /** ClickView resource_name. */
                        public resource_name: string;

                        /** ClickView gclid. */
                        public gclid?: (string|null);

                        /** ClickView area_of_interest. */
                        public area_of_interest?: (google.ads.googleads.v23.common.IClickLocation|null);

                        /** ClickView location_of_presence. */
                        public location_of_presence?: (google.ads.googleads.v23.common.IClickLocation|null);

                        /** ClickView page_number. */
                        public page_number?: (number|null);

                        /** ClickView ad_group_ad. */
                        public ad_group_ad?: (string|null);

                        /** ClickView campaign_location_target. */
                        public campaign_location_target?: (string|null);

                        /** ClickView user_list. */
                        public user_list?: (string|null);

                        /** ClickView keyword. */
                        public keyword: string;

                        /** ClickView keyword_info. */
                        public keyword_info?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /**
                         * Creates a new ClickView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IClickView): google.ads.googleads.v23.resources.ClickView;

                        /**
                         * Encodes the specified ClickView message. Does not implicitly {@link google.ads.googleads.v23.resources.ClickView.verify|verify} messages.
                         * @param message ClickView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IClickView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ClickView.verify|verify} messages.
                         * @param message ClickView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IClickView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ClickView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ClickView;

                        /**
                         * Decodes a ClickView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ClickView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ClickView;

                        /**
                         * Verifies a ClickView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ClickView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ClickView;

                        /**
                         * Creates a plain object from a ClickView message. Also converts values to other types if specified.
                         * @param message ClickView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ClickView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ClickView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CombinedAudience. */
                    interface ICombinedAudience {

                        /** CombinedAudience resource_name */
                        resource_name?: (string|null);

                        /** CombinedAudience id */
                        id?: (number|null);

                        /** CombinedAudience status */
                        status?: (google.ads.googleads.v23.enums.CombinedAudienceStatusEnum.CombinedAudienceStatus|keyof typeof google.ads.googleads.v23.enums.CombinedAudienceStatusEnum.CombinedAudienceStatus|null);

                        /** CombinedAudience name */
                        name?: (string|null);

                        /** CombinedAudience description */
                        description?: (string|null);
                    }

                    /** Represents a CombinedAudience. */
                    class CombinedAudience implements ICombinedAudience {

                        /**
                         * Constructs a new CombinedAudience.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICombinedAudience);

                        /** CombinedAudience resource_name. */
                        public resource_name: string;

                        /** CombinedAudience id. */
                        public id: number;

                        /** CombinedAudience status. */
                        public status: (google.ads.googleads.v23.enums.CombinedAudienceStatusEnum.CombinedAudienceStatus|keyof typeof google.ads.googleads.v23.enums.CombinedAudienceStatusEnum.CombinedAudienceStatus);

                        /** CombinedAudience name. */
                        public name: string;

                        /** CombinedAudience description. */
                        public description: string;

                        /**
                         * Creates a new CombinedAudience instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CombinedAudience instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICombinedAudience): google.ads.googleads.v23.resources.CombinedAudience;

                        /**
                         * Encodes the specified CombinedAudience message. Does not implicitly {@link google.ads.googleads.v23.resources.CombinedAudience.verify|verify} messages.
                         * @param message CombinedAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICombinedAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CombinedAudience message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CombinedAudience.verify|verify} messages.
                         * @param message CombinedAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICombinedAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CombinedAudience message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CombinedAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CombinedAudience;

                        /**
                         * Decodes a CombinedAudience message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CombinedAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CombinedAudience;

                        /**
                         * Verifies a CombinedAudience message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CombinedAudience message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CombinedAudience
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CombinedAudience;

                        /**
                         * Creates a plain object from a CombinedAudience message. Also converts values to other types if specified.
                         * @param message CombinedAudience
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CombinedAudience, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CombinedAudience to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CombinedAudience
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ContentCriterionView. */
                    interface IContentCriterionView {

                        /** ContentCriterionView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a ContentCriterionView. */
                    class ContentCriterionView implements IContentCriterionView {

                        /**
                         * Constructs a new ContentCriterionView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IContentCriterionView);

                        /** ContentCriterionView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ContentCriterionView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ContentCriterionView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IContentCriterionView): google.ads.googleads.v23.resources.ContentCriterionView;

                        /**
                         * Encodes the specified ContentCriterionView message. Does not implicitly {@link google.ads.googleads.v23.resources.ContentCriterionView.verify|verify} messages.
                         * @param message ContentCriterionView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IContentCriterionView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContentCriterionView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ContentCriterionView.verify|verify} messages.
                         * @param message ContentCriterionView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IContentCriterionView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContentCriterionView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ContentCriterionView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ContentCriterionView;

                        /**
                         * Decodes a ContentCriterionView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ContentCriterionView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ContentCriterionView;

                        /**
                         * Verifies a ContentCriterionView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContentCriterionView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ContentCriterionView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ContentCriterionView;

                        /**
                         * Creates a plain object from a ContentCriterionView message. Also converts values to other types if specified.
                         * @param message ContentCriterionView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ContentCriterionView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContentCriterionView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ContentCriterionView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionAction. */
                    interface IConversionAction {

                        /** ConversionAction resource_name */
                        resource_name?: (string|null);

                        /** ConversionAction id */
                        id?: (number|null);

                        /** ConversionAction name */
                        name?: (string|null);

                        /** ConversionAction status */
                        status?: (google.ads.googleads.v23.enums.ConversionActionStatusEnum.ConversionActionStatus|keyof typeof google.ads.googleads.v23.enums.ConversionActionStatusEnum.ConversionActionStatus|null);

                        /** ConversionAction type */
                        type?: (google.ads.googleads.v23.enums.ConversionActionTypeEnum.ConversionActionType|keyof typeof google.ads.googleads.v23.enums.ConversionActionTypeEnum.ConversionActionType|null);

                        /** ConversionAction origin */
                        origin?: (google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|keyof typeof google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|null);

                        /** ConversionAction primary_for_goal */
                        primary_for_goal?: (boolean|null);

                        /** ConversionAction category */
                        category?: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|null);

                        /** ConversionAction owner_customer */
                        owner_customer?: (string|null);

                        /** ConversionAction include_in_conversions_metric */
                        include_in_conversions_metric?: (boolean|null);

                        /** ConversionAction click_through_lookback_window_days */
                        click_through_lookback_window_days?: (number|null);

                        /** ConversionAction view_through_lookback_window_days */
                        view_through_lookback_window_days?: (number|null);

                        /** ConversionAction value_settings */
                        value_settings?: (google.ads.googleads.v23.resources.ConversionAction.IValueSettings|null);

                        /** ConversionAction counting_type */
                        counting_type?: (google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType|keyof typeof google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType|null);

                        /** ConversionAction attribution_model_settings */
                        attribution_model_settings?: (google.ads.googleads.v23.resources.ConversionAction.IAttributionModelSettings|null);

                        /** ConversionAction tag_snippets */
                        tag_snippets?: (google.ads.googleads.v23.common.ITagSnippet[]|null);

                        /** ConversionAction phone_call_duration_seconds */
                        phone_call_duration_seconds?: (number|null);

                        /** ConversionAction app_id */
                        app_id?: (string|null);

                        /** ConversionAction mobile_app_vendor */
                        mobile_app_vendor?: (google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|null);

                        /** ConversionAction firebase_settings */
                        firebase_settings?: (google.ads.googleads.v23.resources.ConversionAction.IFirebaseSettings|null);

                        /** ConversionAction third_party_app_analytics_settings */
                        third_party_app_analytics_settings?: (google.ads.googleads.v23.resources.ConversionAction.IThirdPartyAppAnalyticsSettings|null);

                        /** ConversionAction google_analytics_4_settings */
                        google_analytics_4_settings?: (google.ads.googleads.v23.resources.ConversionAction.IGoogleAnalytics4Settings|null);
                    }

                    /** Represents a ConversionAction. */
                    class ConversionAction implements IConversionAction {

                        /**
                         * Constructs a new ConversionAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IConversionAction);

                        /** ConversionAction resource_name. */
                        public resource_name: string;

                        /** ConversionAction id. */
                        public id?: (number|null);

                        /** ConversionAction name. */
                        public name?: (string|null);

                        /** ConversionAction status. */
                        public status: (google.ads.googleads.v23.enums.ConversionActionStatusEnum.ConversionActionStatus|keyof typeof google.ads.googleads.v23.enums.ConversionActionStatusEnum.ConversionActionStatus);

                        /** ConversionAction type. */
                        public type: (google.ads.googleads.v23.enums.ConversionActionTypeEnum.ConversionActionType|keyof typeof google.ads.googleads.v23.enums.ConversionActionTypeEnum.ConversionActionType);

                        /** ConversionAction origin. */
                        public origin: (google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|keyof typeof google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin);

                        /** ConversionAction primary_for_goal. */
                        public primary_for_goal?: (boolean|null);

                        /** ConversionAction category. */
                        public category: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory);

                        /** ConversionAction owner_customer. */
                        public owner_customer?: (string|null);

                        /** ConversionAction include_in_conversions_metric. */
                        public include_in_conversions_metric?: (boolean|null);

                        /** ConversionAction click_through_lookback_window_days. */
                        public click_through_lookback_window_days?: (number|null);

                        /** ConversionAction view_through_lookback_window_days. */
                        public view_through_lookback_window_days?: (number|null);

                        /** ConversionAction value_settings. */
                        public value_settings?: (google.ads.googleads.v23.resources.ConversionAction.IValueSettings|null);

                        /** ConversionAction counting_type. */
                        public counting_type: (google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType|keyof typeof google.ads.googleads.v23.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType);

                        /** ConversionAction attribution_model_settings. */
                        public attribution_model_settings?: (google.ads.googleads.v23.resources.ConversionAction.IAttributionModelSettings|null);

                        /** ConversionAction tag_snippets. */
                        public tag_snippets: google.ads.googleads.v23.common.ITagSnippet[];

                        /** ConversionAction phone_call_duration_seconds. */
                        public phone_call_duration_seconds?: (number|null);

                        /** ConversionAction app_id. */
                        public app_id?: (string|null);

                        /** ConversionAction mobile_app_vendor. */
                        public mobile_app_vendor: (google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v23.enums.MobileAppVendorEnum.MobileAppVendor);

                        /** ConversionAction firebase_settings. */
                        public firebase_settings?: (google.ads.googleads.v23.resources.ConversionAction.IFirebaseSettings|null);

                        /** ConversionAction third_party_app_analytics_settings. */
                        public third_party_app_analytics_settings?: (google.ads.googleads.v23.resources.ConversionAction.IThirdPartyAppAnalyticsSettings|null);

                        /** ConversionAction google_analytics_4_settings. */
                        public google_analytics_4_settings?: (google.ads.googleads.v23.resources.ConversionAction.IGoogleAnalytics4Settings|null);

                        /**
                         * Creates a new ConversionAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAction instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IConversionAction): google.ads.googleads.v23.resources.ConversionAction;

                        /**
                         * Encodes the specified ConversionAction message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.verify|verify} messages.
                         * @param message ConversionAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IConversionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAction message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.verify|verify} messages.
                         * @param message ConversionAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IConversionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionAction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionAction;

                        /**
                         * Decodes a ConversionAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionAction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionAction;

                        /**
                         * Verifies a ConversionAction message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionAction;

                        /**
                         * Creates a plain object from a ConversionAction message. Also converts values to other types if specified.
                         * @param message ConversionAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ConversionAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionAction {

                        /** Properties of an AttributionModelSettings. */
                        interface IAttributionModelSettings {

                            /** AttributionModelSettings attribution_model */
                            attribution_model?: (google.ads.googleads.v23.enums.AttributionModelEnum.AttributionModel|keyof typeof google.ads.googleads.v23.enums.AttributionModelEnum.AttributionModel|null);

                            /** AttributionModelSettings data_driven_model_status */
                            data_driven_model_status?: (google.ads.googleads.v23.enums.DataDrivenModelStatusEnum.DataDrivenModelStatus|keyof typeof google.ads.googleads.v23.enums.DataDrivenModelStatusEnum.DataDrivenModelStatus|null);
                        }

                        /** Represents an AttributionModelSettings. */
                        class AttributionModelSettings implements IAttributionModelSettings {

                            /**
                             * Constructs a new AttributionModelSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionAction.IAttributionModelSettings);

                            /** AttributionModelSettings attribution_model. */
                            public attribution_model: (google.ads.googleads.v23.enums.AttributionModelEnum.AttributionModel|keyof typeof google.ads.googleads.v23.enums.AttributionModelEnum.AttributionModel);

                            /** AttributionModelSettings data_driven_model_status. */
                            public data_driven_model_status: (google.ads.googleads.v23.enums.DataDrivenModelStatusEnum.DataDrivenModelStatus|keyof typeof google.ads.googleads.v23.enums.DataDrivenModelStatusEnum.DataDrivenModelStatus);

                            /**
                             * Creates a new AttributionModelSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AttributionModelSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionAction.IAttributionModelSettings): google.ads.googleads.v23.resources.ConversionAction.AttributionModelSettings;

                            /**
                             * Encodes the specified AttributionModelSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.AttributionModelSettings.verify|verify} messages.
                             * @param message AttributionModelSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionAction.IAttributionModelSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AttributionModelSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.AttributionModelSettings.verify|verify} messages.
                             * @param message AttributionModelSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionAction.IAttributionModelSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AttributionModelSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AttributionModelSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionAction.AttributionModelSettings;

                            /**
                             * Decodes an AttributionModelSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AttributionModelSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionAction.AttributionModelSettings;

                            /**
                             * Verifies an AttributionModelSettings message.
                             * @param message Plain 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 AttributionModelSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AttributionModelSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionAction.AttributionModelSettings;

                            /**
                             * Creates a plain object from an AttributionModelSettings message. Also converts values to other types if specified.
                             * @param message AttributionModelSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionAction.AttributionModelSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AttributionModelSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AttributionModelSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueSettings. */
                        interface IValueSettings {

                            /** ValueSettings default_value */
                            default_value?: (number|null);

                            /** ValueSettings default_currency_code */
                            default_currency_code?: (string|null);

                            /** ValueSettings always_use_default_value */
                            always_use_default_value?: (boolean|null);
                        }

                        /** Represents a ValueSettings. */
                        class ValueSettings implements IValueSettings {

                            /**
                             * Constructs a new ValueSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionAction.IValueSettings);

                            /** ValueSettings default_value. */
                            public default_value?: (number|null);

                            /** ValueSettings default_currency_code. */
                            public default_currency_code?: (string|null);

                            /** ValueSettings always_use_default_value. */
                            public always_use_default_value?: (boolean|null);

                            /**
                             * Creates a new ValueSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionAction.IValueSettings): google.ads.googleads.v23.resources.ConversionAction.ValueSettings;

                            /**
                             * Encodes the specified ValueSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.ValueSettings.verify|verify} messages.
                             * @param message ValueSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionAction.IValueSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.ValueSettings.verify|verify} messages.
                             * @param message ValueSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionAction.IValueSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionAction.ValueSettings;

                            /**
                             * Decodes a ValueSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionAction.ValueSettings;

                            /**
                             * Verifies a ValueSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionAction.ValueSettings;

                            /**
                             * Creates a plain object from a ValueSettings message. Also converts values to other types if specified.
                             * @param message ValueSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionAction.ValueSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ThirdPartyAppAnalyticsSettings. */
                        interface IThirdPartyAppAnalyticsSettings {

                            /** ThirdPartyAppAnalyticsSettings event_name */
                            event_name?: (string|null);

                            /** ThirdPartyAppAnalyticsSettings provider_name */
                            provider_name?: (string|null);
                        }

                        /** Represents a ThirdPartyAppAnalyticsSettings. */
                        class ThirdPartyAppAnalyticsSettings implements IThirdPartyAppAnalyticsSettings {

                            /**
                             * Constructs a new ThirdPartyAppAnalyticsSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionAction.IThirdPartyAppAnalyticsSettings);

                            /** ThirdPartyAppAnalyticsSettings event_name. */
                            public event_name?: (string|null);

                            /** ThirdPartyAppAnalyticsSettings provider_name. */
                            public provider_name: string;

                            /**
                             * Creates a new ThirdPartyAppAnalyticsSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ThirdPartyAppAnalyticsSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionAction.IThirdPartyAppAnalyticsSettings): google.ads.googleads.v23.resources.ConversionAction.ThirdPartyAppAnalyticsSettings;

                            /**
                             * Encodes the specified ThirdPartyAppAnalyticsSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.ThirdPartyAppAnalyticsSettings.verify|verify} messages.
                             * @param message ThirdPartyAppAnalyticsSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionAction.IThirdPartyAppAnalyticsSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ThirdPartyAppAnalyticsSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.ThirdPartyAppAnalyticsSettings.verify|verify} messages.
                             * @param message ThirdPartyAppAnalyticsSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionAction.IThirdPartyAppAnalyticsSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ThirdPartyAppAnalyticsSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ThirdPartyAppAnalyticsSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionAction.ThirdPartyAppAnalyticsSettings;

                            /**
                             * Decodes a ThirdPartyAppAnalyticsSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ThirdPartyAppAnalyticsSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionAction.ThirdPartyAppAnalyticsSettings;

                            /**
                             * Verifies a ThirdPartyAppAnalyticsSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ThirdPartyAppAnalyticsSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ThirdPartyAppAnalyticsSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionAction.ThirdPartyAppAnalyticsSettings;

                            /**
                             * Creates a plain object from a ThirdPartyAppAnalyticsSettings message. Also converts values to other types if specified.
                             * @param message ThirdPartyAppAnalyticsSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionAction.ThirdPartyAppAnalyticsSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ThirdPartyAppAnalyticsSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ThirdPartyAppAnalyticsSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a FirebaseSettings. */
                        interface IFirebaseSettings {

                            /** FirebaseSettings event_name */
                            event_name?: (string|null);

                            /** FirebaseSettings project_id */
                            project_id?: (string|null);

                            /** FirebaseSettings property_id */
                            property_id?: (number|null);

                            /** FirebaseSettings property_name */
                            property_name?: (string|null);
                        }

                        /** Represents a FirebaseSettings. */
                        class FirebaseSettings implements IFirebaseSettings {

                            /**
                             * Constructs a new FirebaseSettings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionAction.IFirebaseSettings);

                            /** FirebaseSettings event_name. */
                            public event_name?: (string|null);

                            /** FirebaseSettings project_id. */
                            public project_id?: (string|null);

                            /** FirebaseSettings property_id. */
                            public property_id: number;

                            /** FirebaseSettings property_name. */
                            public property_name: string;

                            /**
                             * Creates a new FirebaseSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FirebaseSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionAction.IFirebaseSettings): google.ads.googleads.v23.resources.ConversionAction.FirebaseSettings;

                            /**
                             * Encodes the specified FirebaseSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.FirebaseSettings.verify|verify} messages.
                             * @param message FirebaseSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionAction.IFirebaseSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FirebaseSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.FirebaseSettings.verify|verify} messages.
                             * @param message FirebaseSettings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionAction.IFirebaseSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FirebaseSettings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FirebaseSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionAction.FirebaseSettings;

                            /**
                             * Decodes a FirebaseSettings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FirebaseSettings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionAction.FirebaseSettings;

                            /**
                             * Verifies a FirebaseSettings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FirebaseSettings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FirebaseSettings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionAction.FirebaseSettings;

                            /**
                             * Creates a plain object from a FirebaseSettings message. Also converts values to other types if specified.
                             * @param message FirebaseSettings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionAction.FirebaseSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FirebaseSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FirebaseSettings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a GoogleAnalytics4Settings. */
                        interface IGoogleAnalytics4Settings {

                            /** GoogleAnalytics4Settings event_name */
                            event_name?: (string|null);

                            /** GoogleAnalytics4Settings property_name */
                            property_name?: (string|null);

                            /** GoogleAnalytics4Settings property_id */
                            property_id?: (number|null);
                        }

                        /** Represents a GoogleAnalytics4Settings. */
                        class GoogleAnalytics4Settings implements IGoogleAnalytics4Settings {

                            /**
                             * Constructs a new GoogleAnalytics4Settings.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionAction.IGoogleAnalytics4Settings);

                            /** GoogleAnalytics4Settings event_name. */
                            public event_name: string;

                            /** GoogleAnalytics4Settings property_name. */
                            public property_name: string;

                            /** GoogleAnalytics4Settings property_id. */
                            public property_id: number;

                            /**
                             * Creates a new GoogleAnalytics4Settings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns GoogleAnalytics4Settings instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionAction.IGoogleAnalytics4Settings): google.ads.googleads.v23.resources.ConversionAction.GoogleAnalytics4Settings;

                            /**
                             * Encodes the specified GoogleAnalytics4Settings message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.GoogleAnalytics4Settings.verify|verify} messages.
                             * @param message GoogleAnalytics4Settings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionAction.IGoogleAnalytics4Settings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified GoogleAnalytics4Settings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionAction.GoogleAnalytics4Settings.verify|verify} messages.
                             * @param message GoogleAnalytics4Settings message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionAction.IGoogleAnalytics4Settings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a GoogleAnalytics4Settings message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns GoogleAnalytics4Settings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionAction.GoogleAnalytics4Settings;

                            /**
                             * Decodes a GoogleAnalytics4Settings message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns GoogleAnalytics4Settings
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionAction.GoogleAnalytics4Settings;

                            /**
                             * Verifies a GoogleAnalytics4Settings message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a GoogleAnalytics4Settings message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns GoogleAnalytics4Settings
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionAction.GoogleAnalytics4Settings;

                            /**
                             * Creates a plain object from a GoogleAnalytics4Settings message. Also converts values to other types if specified.
                             * @param message GoogleAnalytics4Settings
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionAction.GoogleAnalytics4Settings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this GoogleAnalytics4Settings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for GoogleAnalytics4Settings
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a ConversionCustomVariable. */
                    interface IConversionCustomVariable {

                        /** ConversionCustomVariable resource_name */
                        resource_name?: (string|null);

                        /** ConversionCustomVariable id */
                        id?: (number|null);

                        /** ConversionCustomVariable name */
                        name?: (string|null);

                        /** ConversionCustomVariable tag */
                        tag?: (string|null);

                        /** ConversionCustomVariable status */
                        status?: (google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum.ConversionCustomVariableStatus|keyof typeof google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum.ConversionCustomVariableStatus|null);

                        /** ConversionCustomVariable owner_customer */
                        owner_customer?: (string|null);
                    }

                    /** Represents a ConversionCustomVariable. */
                    class ConversionCustomVariable implements IConversionCustomVariable {

                        /**
                         * Constructs a new ConversionCustomVariable.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IConversionCustomVariable);

                        /** ConversionCustomVariable resource_name. */
                        public resource_name: string;

                        /** ConversionCustomVariable id. */
                        public id: number;

                        /** ConversionCustomVariable name. */
                        public name: string;

                        /** ConversionCustomVariable tag. */
                        public tag: string;

                        /** ConversionCustomVariable status. */
                        public status: (google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum.ConversionCustomVariableStatus|keyof typeof google.ads.googleads.v23.enums.ConversionCustomVariableStatusEnum.ConversionCustomVariableStatus);

                        /** ConversionCustomVariable owner_customer. */
                        public owner_customer: string;

                        /**
                         * Creates a new ConversionCustomVariable instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionCustomVariable instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IConversionCustomVariable): google.ads.googleads.v23.resources.ConversionCustomVariable;

                        /**
                         * Encodes the specified ConversionCustomVariable message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionCustomVariable.verify|verify} messages.
                         * @param message ConversionCustomVariable message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IConversionCustomVariable, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariable message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionCustomVariable.verify|verify} messages.
                         * @param message ConversionCustomVariable message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IConversionCustomVariable, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariable message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionCustomVariable
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionCustomVariable;

                        /**
                         * Decodes a ConversionCustomVariable message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionCustomVariable
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionCustomVariable;

                        /**
                         * Verifies a ConversionCustomVariable message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariable message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionCustomVariable
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionCustomVariable;

                        /**
                         * Creates a plain object from a ConversionCustomVariable message. Also converts values to other types if specified.
                         * @param message ConversionCustomVariable
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ConversionCustomVariable, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariable to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionCustomVariable
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionGoalCampaignConfig. */
                    interface IConversionGoalCampaignConfig {

                        /** ConversionGoalCampaignConfig resource_name */
                        resource_name?: (string|null);

                        /** ConversionGoalCampaignConfig campaign */
                        campaign?: (string|null);

                        /** ConversionGoalCampaignConfig goal_config_level */
                        goal_config_level?: (google.ads.googleads.v23.enums.GoalConfigLevelEnum.GoalConfigLevel|keyof typeof google.ads.googleads.v23.enums.GoalConfigLevelEnum.GoalConfigLevel|null);

                        /** ConversionGoalCampaignConfig custom_conversion_goal */
                        custom_conversion_goal?: (string|null);
                    }

                    /** Represents a ConversionGoalCampaignConfig. */
                    class ConversionGoalCampaignConfig implements IConversionGoalCampaignConfig {

                        /**
                         * Constructs a new ConversionGoalCampaignConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IConversionGoalCampaignConfig);

                        /** ConversionGoalCampaignConfig resource_name. */
                        public resource_name: string;

                        /** ConversionGoalCampaignConfig campaign. */
                        public campaign: string;

                        /** ConversionGoalCampaignConfig goal_config_level. */
                        public goal_config_level: (google.ads.googleads.v23.enums.GoalConfigLevelEnum.GoalConfigLevel|keyof typeof google.ads.googleads.v23.enums.GoalConfigLevelEnum.GoalConfigLevel);

                        /** ConversionGoalCampaignConfig custom_conversion_goal. */
                        public custom_conversion_goal: string;

                        /**
                         * Creates a new ConversionGoalCampaignConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionGoalCampaignConfig instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IConversionGoalCampaignConfig): google.ads.googleads.v23.resources.ConversionGoalCampaignConfig;

                        /**
                         * Encodes the specified ConversionGoalCampaignConfig message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionGoalCampaignConfig.verify|verify} messages.
                         * @param message ConversionGoalCampaignConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IConversionGoalCampaignConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionGoalCampaignConfig message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionGoalCampaignConfig.verify|verify} messages.
                         * @param message ConversionGoalCampaignConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IConversionGoalCampaignConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionGoalCampaignConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionGoalCampaignConfig
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionGoalCampaignConfig;

                        /**
                         * Decodes a ConversionGoalCampaignConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionGoalCampaignConfig
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionGoalCampaignConfig;

                        /**
                         * Verifies a ConversionGoalCampaignConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionGoalCampaignConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionGoalCampaignConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionGoalCampaignConfig;

                        /**
                         * Creates a plain object from a ConversionGoalCampaignConfig message. Also converts values to other types if specified.
                         * @param message ConversionGoalCampaignConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ConversionGoalCampaignConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionGoalCampaignConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionGoalCampaignConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionValueRule. */
                    interface IConversionValueRule {

                        /** ConversionValueRule resource_name */
                        resource_name?: (string|null);

                        /** ConversionValueRule id */
                        id?: (number|null);

                        /** ConversionValueRule action */
                        action?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAction|null);

                        /** ConversionValueRule geo_location_condition */
                        geo_location_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleGeoLocationCondition|null);

                        /** ConversionValueRule device_condition */
                        device_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleDeviceCondition|null);

                        /** ConversionValueRule audience_condition */
                        audience_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAudienceCondition|null);

                        /** ConversionValueRule itinerary_condition */
                        itinerary_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryCondition|null);

                        /** ConversionValueRule owner_customer */
                        owner_customer?: (string|null);

                        /** ConversionValueRule status */
                        status?: (google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus|keyof typeof google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus|null);
                    }

                    /** Represents a ConversionValueRule. */
                    class ConversionValueRule implements IConversionValueRule {

                        /**
                         * Constructs a new ConversionValueRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IConversionValueRule);

                        /** ConversionValueRule resource_name. */
                        public resource_name: string;

                        /** ConversionValueRule id. */
                        public id: number;

                        /** ConversionValueRule action. */
                        public action?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAction|null);

                        /** ConversionValueRule geo_location_condition. */
                        public geo_location_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleGeoLocationCondition|null);

                        /** ConversionValueRule device_condition. */
                        public device_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleDeviceCondition|null);

                        /** ConversionValueRule audience_condition. */
                        public audience_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAudienceCondition|null);

                        /** ConversionValueRule itinerary_condition. */
                        public itinerary_condition?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryCondition|null);

                        /** ConversionValueRule owner_customer. */
                        public owner_customer: string;

                        /** ConversionValueRule status. */
                        public status: (google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus|keyof typeof google.ads.googleads.v23.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus);

                        /**
                         * Creates a new ConversionValueRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRule instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IConversionValueRule): google.ads.googleads.v23.resources.ConversionValueRule;

                        /**
                         * Encodes the specified ConversionValueRule message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.verify|verify} messages.
                         * @param message ConversionValueRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IConversionValueRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRule message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.verify|verify} messages.
                         * @param message ConversionValueRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IConversionValueRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRule
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule;

                        /**
                         * Decodes a ConversionValueRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRule
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule;

                        /**
                         * Verifies a ConversionValueRule message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRule
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule;

                        /**
                         * Creates a plain object from a ConversionValueRule message. Also converts values to other types if specified.
                         * @param message ConversionValueRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversionValueRule {

                        /** Properties of a ValueRuleAction. */
                        interface IValueRuleAction {

                            /** ValueRuleAction operation */
                            operation?: (google.ads.googleads.v23.enums.ValueRuleOperationEnum.ValueRuleOperation|keyof typeof google.ads.googleads.v23.enums.ValueRuleOperationEnum.ValueRuleOperation|null);

                            /** ValueRuleAction value */
                            value?: (number|null);
                        }

                        /** Represents a ValueRuleAction. */
                        class ValueRuleAction implements IValueRuleAction {

                            /**
                             * Constructs a new ValueRuleAction.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAction);

                            /** ValueRuleAction operation. */
                            public operation: (google.ads.googleads.v23.enums.ValueRuleOperationEnum.ValueRuleOperation|keyof typeof google.ads.googleads.v23.enums.ValueRuleOperationEnum.ValueRuleOperation);

                            /** ValueRuleAction value. */
                            public value: number;

                            /**
                             * Creates a new ValueRuleAction instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleAction instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAction): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAction;

                            /**
                             * Encodes the specified ValueRuleAction message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAction.verify|verify} messages.
                             * @param message ValueRuleAction message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleAction message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAction.verify|verify} messages.
                             * @param message ValueRuleAction message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleAction message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleAction
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAction;

                            /**
                             * Decodes a ValueRuleAction message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleAction
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAction;

                            /**
                             * Verifies a ValueRuleAction message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleAction message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleAction
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAction;

                            /**
                             * Creates a plain object from a ValueRuleAction message. Also converts values to other types if specified.
                             * @param message ValueRuleAction
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleAction to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleAction
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueRuleGeoLocationCondition. */
                        interface IValueRuleGeoLocationCondition {

                            /** ValueRuleGeoLocationCondition excluded_geo_target_constants */
                            excluded_geo_target_constants?: (string[]|null);

                            /** ValueRuleGeoLocationCondition excluded_geo_match_type */
                            excluded_geo_match_type?: (google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|null);

                            /** ValueRuleGeoLocationCondition geo_target_constants */
                            geo_target_constants?: (string[]|null);

                            /** ValueRuleGeoLocationCondition geo_match_type */
                            geo_match_type?: (google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|null);
                        }

                        /** Represents a ValueRuleGeoLocationCondition. */
                        class ValueRuleGeoLocationCondition implements IValueRuleGeoLocationCondition {

                            /**
                             * Constructs a new ValueRuleGeoLocationCondition.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleGeoLocationCondition);

                            /** ValueRuleGeoLocationCondition excluded_geo_target_constants. */
                            public excluded_geo_target_constants: string[];

                            /** ValueRuleGeoLocationCondition excluded_geo_match_type. */
                            public excluded_geo_match_type: (google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType);

                            /** ValueRuleGeoLocationCondition geo_target_constants. */
                            public geo_target_constants: string[];

                            /** ValueRuleGeoLocationCondition geo_match_type. */
                            public geo_match_type: (google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v23.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType);

                            /**
                             * Creates a new ValueRuleGeoLocationCondition instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleGeoLocationCondition instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleGeoLocationCondition): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleGeoLocationCondition;

                            /**
                             * Encodes the specified ValueRuleGeoLocationCondition message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleGeoLocationCondition.verify|verify} messages.
                             * @param message ValueRuleGeoLocationCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleGeoLocationCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleGeoLocationCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleGeoLocationCondition.verify|verify} messages.
                             * @param message ValueRuleGeoLocationCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleGeoLocationCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleGeoLocationCondition message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleGeoLocationCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleGeoLocationCondition;

                            /**
                             * Decodes a ValueRuleGeoLocationCondition message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleGeoLocationCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleGeoLocationCondition;

                            /**
                             * Verifies a ValueRuleGeoLocationCondition message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleGeoLocationCondition message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleGeoLocationCondition
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleGeoLocationCondition;

                            /**
                             * Creates a plain object from a ValueRuleGeoLocationCondition message. Also converts values to other types if specified.
                             * @param message ValueRuleGeoLocationCondition
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleGeoLocationCondition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleGeoLocationCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleGeoLocationCondition
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueRuleDeviceCondition. */
                        interface IValueRuleDeviceCondition {

                            /** ValueRuleDeviceCondition device_types */
                            device_types?: (google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum.ValueRuleDeviceType[]|null);
                        }

                        /** Represents a ValueRuleDeviceCondition. */
                        class ValueRuleDeviceCondition implements IValueRuleDeviceCondition {

                            /**
                             * Constructs a new ValueRuleDeviceCondition.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleDeviceCondition);

                            /** ValueRuleDeviceCondition device_types. */
                            public device_types: google.ads.googleads.v23.enums.ValueRuleDeviceTypeEnum.ValueRuleDeviceType[];

                            /**
                             * Creates a new ValueRuleDeviceCondition instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleDeviceCondition instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleDeviceCondition): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleDeviceCondition;

                            /**
                             * Encodes the specified ValueRuleDeviceCondition message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleDeviceCondition.verify|verify} messages.
                             * @param message ValueRuleDeviceCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleDeviceCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleDeviceCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleDeviceCondition.verify|verify} messages.
                             * @param message ValueRuleDeviceCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleDeviceCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleDeviceCondition message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleDeviceCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleDeviceCondition;

                            /**
                             * Decodes a ValueRuleDeviceCondition message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleDeviceCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleDeviceCondition;

                            /**
                             * Verifies a ValueRuleDeviceCondition message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleDeviceCondition message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleDeviceCondition
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleDeviceCondition;

                            /**
                             * Creates a plain object from a ValueRuleDeviceCondition message. Also converts values to other types if specified.
                             * @param message ValueRuleDeviceCondition
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleDeviceCondition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleDeviceCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleDeviceCondition
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueRuleAudienceCondition. */
                        interface IValueRuleAudienceCondition {

                            /** ValueRuleAudienceCondition user_lists */
                            user_lists?: (string[]|null);

                            /** ValueRuleAudienceCondition user_interests */
                            user_interests?: (string[]|null);
                        }

                        /** Represents a ValueRuleAudienceCondition. */
                        class ValueRuleAudienceCondition implements IValueRuleAudienceCondition {

                            /**
                             * Constructs a new ValueRuleAudienceCondition.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAudienceCondition);

                            /** ValueRuleAudienceCondition user_lists. */
                            public user_lists: string[];

                            /** ValueRuleAudienceCondition user_interests. */
                            public user_interests: string[];

                            /**
                             * Creates a new ValueRuleAudienceCondition instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleAudienceCondition instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAudienceCondition): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAudienceCondition;

                            /**
                             * Encodes the specified ValueRuleAudienceCondition message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAudienceCondition.verify|verify} messages.
                             * @param message ValueRuleAudienceCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAudienceCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleAudienceCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAudienceCondition.verify|verify} messages.
                             * @param message ValueRuleAudienceCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleAudienceCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleAudienceCondition message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleAudienceCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAudienceCondition;

                            /**
                             * Decodes a ValueRuleAudienceCondition message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleAudienceCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAudienceCondition;

                            /**
                             * Verifies a ValueRuleAudienceCondition message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleAudienceCondition message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleAudienceCondition
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAudienceCondition;

                            /**
                             * Creates a plain object from a ValueRuleAudienceCondition message. Also converts values to other types if specified.
                             * @param message ValueRuleAudienceCondition
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleAudienceCondition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleAudienceCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleAudienceCondition
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueRuleItineraryCondition. */
                        interface IValueRuleItineraryCondition {

                            /** ValueRuleItineraryCondition advance_booking_window */
                            advance_booking_window?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryAdvanceBookingWindow|null);

                            /** ValueRuleItineraryCondition travel_length */
                            travel_length?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelLength|null);

                            /** ValueRuleItineraryCondition travel_start_day */
                            travel_start_day?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelStartDay|null);
                        }

                        /** Represents a ValueRuleItineraryCondition. */
                        class ValueRuleItineraryCondition implements IValueRuleItineraryCondition {

                            /**
                             * Constructs a new ValueRuleItineraryCondition.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryCondition);

                            /** ValueRuleItineraryCondition advance_booking_window. */
                            public advance_booking_window?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryAdvanceBookingWindow|null);

                            /** ValueRuleItineraryCondition travel_length. */
                            public travel_length?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelLength|null);

                            /** ValueRuleItineraryCondition travel_start_day. */
                            public travel_start_day?: (google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelStartDay|null);

                            /**
                             * Creates a new ValueRuleItineraryCondition instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleItineraryCondition instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryCondition): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryCondition;

                            /**
                             * Encodes the specified ValueRuleItineraryCondition message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryCondition.verify|verify} messages.
                             * @param message ValueRuleItineraryCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleItineraryCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryCondition.verify|verify} messages.
                             * @param message ValueRuleItineraryCondition message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleItineraryCondition message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleItineraryCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryCondition;

                            /**
                             * Decodes a ValueRuleItineraryCondition message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleItineraryCondition
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryCondition;

                            /**
                             * Verifies a ValueRuleItineraryCondition message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleItineraryCondition message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleItineraryCondition
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryCondition;

                            /**
                             * Creates a plain object from a ValueRuleItineraryCondition message. Also converts values to other types if specified.
                             * @param message ValueRuleItineraryCondition
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryCondition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleItineraryCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleItineraryCondition
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueRuleItineraryAdvanceBookingWindow. */
                        interface IValueRuleItineraryAdvanceBookingWindow {

                            /** ValueRuleItineraryAdvanceBookingWindow min_days */
                            min_days?: (number|null);

                            /** ValueRuleItineraryAdvanceBookingWindow max_days */
                            max_days?: (number|null);
                        }

                        /** Represents a ValueRuleItineraryAdvanceBookingWindow. */
                        class ValueRuleItineraryAdvanceBookingWindow implements IValueRuleItineraryAdvanceBookingWindow {

                            /**
                             * Constructs a new ValueRuleItineraryAdvanceBookingWindow.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryAdvanceBookingWindow);

                            /** ValueRuleItineraryAdvanceBookingWindow min_days. */
                            public min_days?: (number|null);

                            /** ValueRuleItineraryAdvanceBookingWindow max_days. */
                            public max_days?: (number|null);

                            /**
                             * Creates a new ValueRuleItineraryAdvanceBookingWindow instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleItineraryAdvanceBookingWindow instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryAdvanceBookingWindow): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryAdvanceBookingWindow;

                            /**
                             * Encodes the specified ValueRuleItineraryAdvanceBookingWindow message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryAdvanceBookingWindow.verify|verify} messages.
                             * @param message ValueRuleItineraryAdvanceBookingWindow message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryAdvanceBookingWindow, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleItineraryAdvanceBookingWindow message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryAdvanceBookingWindow.verify|verify} messages.
                             * @param message ValueRuleItineraryAdvanceBookingWindow message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryAdvanceBookingWindow, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleItineraryAdvanceBookingWindow message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleItineraryAdvanceBookingWindow
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryAdvanceBookingWindow;

                            /**
                             * Decodes a ValueRuleItineraryAdvanceBookingWindow message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleItineraryAdvanceBookingWindow
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryAdvanceBookingWindow;

                            /**
                             * Verifies a ValueRuleItineraryAdvanceBookingWindow message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleItineraryAdvanceBookingWindow message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleItineraryAdvanceBookingWindow
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryAdvanceBookingWindow;

                            /**
                             * Creates a plain object from a ValueRuleItineraryAdvanceBookingWindow message. Also converts values to other types if specified.
                             * @param message ValueRuleItineraryAdvanceBookingWindow
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryAdvanceBookingWindow, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleItineraryAdvanceBookingWindow to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleItineraryAdvanceBookingWindow
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueRuleItineraryTravelLength. */
                        interface IValueRuleItineraryTravelLength {

                            /** ValueRuleItineraryTravelLength min_nights */
                            min_nights?: (number|null);

                            /** ValueRuleItineraryTravelLength max_nights */
                            max_nights?: (number|null);
                        }

                        /** Represents a ValueRuleItineraryTravelLength. */
                        class ValueRuleItineraryTravelLength implements IValueRuleItineraryTravelLength {

                            /**
                             * Constructs a new ValueRuleItineraryTravelLength.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelLength);

                            /** ValueRuleItineraryTravelLength min_nights. */
                            public min_nights: number;

                            /** ValueRuleItineraryTravelLength max_nights. */
                            public max_nights: number;

                            /**
                             * Creates a new ValueRuleItineraryTravelLength instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleItineraryTravelLength instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelLength): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelLength;

                            /**
                             * Encodes the specified ValueRuleItineraryTravelLength message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelLength.verify|verify} messages.
                             * @param message ValueRuleItineraryTravelLength message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelLength, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleItineraryTravelLength message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelLength.verify|verify} messages.
                             * @param message ValueRuleItineraryTravelLength message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelLength, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleItineraryTravelLength message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleItineraryTravelLength
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelLength;

                            /**
                             * Decodes a ValueRuleItineraryTravelLength message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleItineraryTravelLength
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelLength;

                            /**
                             * Verifies a ValueRuleItineraryTravelLength message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleItineraryTravelLength message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleItineraryTravelLength
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelLength;

                            /**
                             * Creates a plain object from a ValueRuleItineraryTravelLength message. Also converts values to other types if specified.
                             * @param message ValueRuleItineraryTravelLength
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelLength, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleItineraryTravelLength to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleItineraryTravelLength
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ValueRuleItineraryTravelStartDay. */
                        interface IValueRuleItineraryTravelStartDay {

                            /** ValueRuleItineraryTravelStartDay monday */
                            monday?: (boolean|null);

                            /** ValueRuleItineraryTravelStartDay tuesday */
                            tuesday?: (boolean|null);

                            /** ValueRuleItineraryTravelStartDay wednesday */
                            wednesday?: (boolean|null);

                            /** ValueRuleItineraryTravelStartDay thursday */
                            thursday?: (boolean|null);

                            /** ValueRuleItineraryTravelStartDay friday */
                            friday?: (boolean|null);

                            /** ValueRuleItineraryTravelStartDay saturday */
                            saturday?: (boolean|null);

                            /** ValueRuleItineraryTravelStartDay sunday */
                            sunday?: (boolean|null);
                        }

                        /** Represents a ValueRuleItineraryTravelStartDay. */
                        class ValueRuleItineraryTravelStartDay implements IValueRuleItineraryTravelStartDay {

                            /**
                             * Constructs a new ValueRuleItineraryTravelStartDay.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelStartDay);

                            /** ValueRuleItineraryTravelStartDay monday. */
                            public monday: boolean;

                            /** ValueRuleItineraryTravelStartDay tuesday. */
                            public tuesday: boolean;

                            /** ValueRuleItineraryTravelStartDay wednesday. */
                            public wednesday: boolean;

                            /** ValueRuleItineraryTravelStartDay thursday. */
                            public thursday: boolean;

                            /** ValueRuleItineraryTravelStartDay friday. */
                            public friday: boolean;

                            /** ValueRuleItineraryTravelStartDay saturday. */
                            public saturday: boolean;

                            /** ValueRuleItineraryTravelStartDay sunday. */
                            public sunday: boolean;

                            /**
                             * Creates a new ValueRuleItineraryTravelStartDay instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueRuleItineraryTravelStartDay instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelStartDay): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelStartDay;

                            /**
                             * Encodes the specified ValueRuleItineraryTravelStartDay message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelStartDay.verify|verify} messages.
                             * @param message ValueRuleItineraryTravelStartDay message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelStartDay, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleItineraryTravelStartDay message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelStartDay.verify|verify} messages.
                             * @param message ValueRuleItineraryTravelStartDay message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ConversionValueRule.IValueRuleItineraryTravelStartDay, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleItineraryTravelStartDay message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ValueRuleItineraryTravelStartDay
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelStartDay;

                            /**
                             * Decodes a ValueRuleItineraryTravelStartDay message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ValueRuleItineraryTravelStartDay
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelStartDay;

                            /**
                             * Verifies a ValueRuleItineraryTravelStartDay message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleItineraryTravelStartDay message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ValueRuleItineraryTravelStartDay
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelStartDay;

                            /**
                             * Creates a plain object from a ValueRuleItineraryTravelStartDay message. Also converts values to other types if specified.
                             * @param message ValueRuleItineraryTravelStartDay
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRule.ValueRuleItineraryTravelStartDay, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleItineraryTravelStartDay to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ValueRuleItineraryTravelStartDay
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a ConversionValueRuleSet. */
                    interface IConversionValueRuleSet {

                        /** ConversionValueRuleSet resource_name */
                        resource_name?: (string|null);

                        /** ConversionValueRuleSet id */
                        id?: (number|null);

                        /** ConversionValueRuleSet conversion_value_rules */
                        conversion_value_rules?: (string[]|null);

                        /** ConversionValueRuleSet dimensions */
                        dimensions?: (google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum.ValueRuleSetDimension[]|null);

                        /** ConversionValueRuleSet owner_customer */
                        owner_customer?: (string|null);

                        /** ConversionValueRuleSet attachment_type */
                        attachment_type?: (google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType|keyof typeof google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType|null);

                        /** ConversionValueRuleSet campaign */
                        campaign?: (string|null);

                        /** ConversionValueRuleSet status */
                        status?: (google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus|keyof typeof google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus|null);

                        /** ConversionValueRuleSet conversion_action_categories */
                        conversion_action_categories?: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory[]|null);
                    }

                    /** Represents a ConversionValueRuleSet. */
                    class ConversionValueRuleSet implements IConversionValueRuleSet {

                        /**
                         * Constructs a new ConversionValueRuleSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IConversionValueRuleSet);

                        /** ConversionValueRuleSet resource_name. */
                        public resource_name: string;

                        /** ConversionValueRuleSet id. */
                        public id: number;

                        /** ConversionValueRuleSet conversion_value_rules. */
                        public conversion_value_rules: string[];

                        /** ConversionValueRuleSet dimensions. */
                        public dimensions: google.ads.googleads.v23.enums.ValueRuleSetDimensionEnum.ValueRuleSetDimension[];

                        /** ConversionValueRuleSet owner_customer. */
                        public owner_customer: string;

                        /** ConversionValueRuleSet attachment_type. */
                        public attachment_type: (google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType|keyof typeof google.ads.googleads.v23.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType);

                        /** ConversionValueRuleSet campaign. */
                        public campaign: string;

                        /** ConversionValueRuleSet status. */
                        public status: (google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus|keyof typeof google.ads.googleads.v23.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus);

                        /** ConversionValueRuleSet conversion_action_categories. */
                        public conversion_action_categories: google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory[];

                        /**
                         * Creates a new ConversionValueRuleSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IConversionValueRuleSet): google.ads.googleads.v23.resources.ConversionValueRuleSet;

                        /**
                         * Encodes the specified ConversionValueRuleSet message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRuleSet.verify|verify} messages.
                         * @param message ConversionValueRuleSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IConversionValueRuleSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionValueRuleSet.verify|verify} messages.
                         * @param message ConversionValueRuleSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IConversionValueRuleSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRuleSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionValueRuleSet;

                        /**
                         * Decodes a ConversionValueRuleSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRuleSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionValueRuleSet;

                        /**
                         * Verifies a ConversionValueRuleSet message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRuleSet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionValueRuleSet;

                        /**
                         * Creates a plain object from a ConversionValueRuleSet message. Also converts values to other types if specified.
                         * @param message ConversionValueRuleSet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ConversionValueRuleSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRuleSet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CurrencyConstant. */
                    interface ICurrencyConstant {

                        /** CurrencyConstant resource_name */
                        resource_name?: (string|null);

                        /** CurrencyConstant code */
                        code?: (string|null);

                        /** CurrencyConstant name */
                        name?: (string|null);

                        /** CurrencyConstant symbol */
                        symbol?: (string|null);

                        /** CurrencyConstant billable_unit_micros */
                        billable_unit_micros?: (number|null);
                    }

                    /** Represents a CurrencyConstant. */
                    class CurrencyConstant implements ICurrencyConstant {

                        /**
                         * Constructs a new CurrencyConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICurrencyConstant);

                        /** CurrencyConstant resource_name. */
                        public resource_name: string;

                        /** CurrencyConstant code. */
                        public code?: (string|null);

                        /** CurrencyConstant name. */
                        public name?: (string|null);

                        /** CurrencyConstant symbol. */
                        public symbol?: (string|null);

                        /** CurrencyConstant billable_unit_micros. */
                        public billable_unit_micros?: (number|null);

                        /**
                         * Creates a new CurrencyConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CurrencyConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICurrencyConstant): google.ads.googleads.v23.resources.CurrencyConstant;

                        /**
                         * Encodes the specified CurrencyConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.CurrencyConstant.verify|verify} messages.
                         * @param message CurrencyConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICurrencyConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CurrencyConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CurrencyConstant.verify|verify} messages.
                         * @param message CurrencyConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICurrencyConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CurrencyConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CurrencyConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CurrencyConstant;

                        /**
                         * Decodes a CurrencyConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CurrencyConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CurrencyConstant;

                        /**
                         * Verifies a CurrencyConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CurrencyConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CurrencyConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CurrencyConstant;

                        /**
                         * Creates a plain object from a CurrencyConstant message. Also converts values to other types if specified.
                         * @param message CurrencyConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CurrencyConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CurrencyConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CurrencyConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomAudience. */
                    interface ICustomAudience {

                        /** CustomAudience resource_name */
                        resource_name?: (string|null);

                        /** CustomAudience id */
                        id?: (number|null);

                        /** CustomAudience status */
                        status?: (google.ads.googleads.v23.enums.CustomAudienceStatusEnum.CustomAudienceStatus|keyof typeof google.ads.googleads.v23.enums.CustomAudienceStatusEnum.CustomAudienceStatus|null);

                        /** CustomAudience name */
                        name?: (string|null);

                        /** CustomAudience type */
                        type?: (google.ads.googleads.v23.enums.CustomAudienceTypeEnum.CustomAudienceType|keyof typeof google.ads.googleads.v23.enums.CustomAudienceTypeEnum.CustomAudienceType|null);

                        /** CustomAudience description */
                        description?: (string|null);

                        /** CustomAudience members */
                        members?: (google.ads.googleads.v23.resources.ICustomAudienceMember[]|null);
                    }

                    /** Represents a CustomAudience. */
                    class CustomAudience implements ICustomAudience {

                        /**
                         * Constructs a new CustomAudience.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomAudience);

                        /** CustomAudience resource_name. */
                        public resource_name: string;

                        /** CustomAudience id. */
                        public id: number;

                        /** CustomAudience status. */
                        public status: (google.ads.googleads.v23.enums.CustomAudienceStatusEnum.CustomAudienceStatus|keyof typeof google.ads.googleads.v23.enums.CustomAudienceStatusEnum.CustomAudienceStatus);

                        /** CustomAudience name. */
                        public name: string;

                        /** CustomAudience type. */
                        public type: (google.ads.googleads.v23.enums.CustomAudienceTypeEnum.CustomAudienceType|keyof typeof google.ads.googleads.v23.enums.CustomAudienceTypeEnum.CustomAudienceType);

                        /** CustomAudience description. */
                        public description: string;

                        /** CustomAudience members. */
                        public members: google.ads.googleads.v23.resources.ICustomAudienceMember[];

                        /**
                         * Creates a new CustomAudience instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudience instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomAudience): google.ads.googleads.v23.resources.CustomAudience;

                        /**
                         * Encodes the specified CustomAudience message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomAudience.verify|verify} messages.
                         * @param message CustomAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudience message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomAudience.verify|verify} messages.
                         * @param message CustomAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudience message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomAudience;

                        /**
                         * Decodes a CustomAudience message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomAudience;

                        /**
                         * Verifies a CustomAudience message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudience message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudience
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomAudience;

                        /**
                         * Creates a plain object from a CustomAudience message. Also converts values to other types if specified.
                         * @param message CustomAudience
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomAudience, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudience to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudience
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomAudienceMember. */
                    interface ICustomAudienceMember {

                        /** CustomAudienceMember member_type */
                        member_type?: (google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum.CustomAudienceMemberType|keyof typeof google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum.CustomAudienceMemberType|null);

                        /** CustomAudienceMember keyword */
                        keyword?: (string|null);

                        /** CustomAudienceMember url */
                        url?: (string|null);

                        /** CustomAudienceMember place_category */
                        place_category?: (number|null);

                        /** CustomAudienceMember app */
                        app?: (string|null);
                    }

                    /** Represents a CustomAudienceMember. */
                    class CustomAudienceMember implements ICustomAudienceMember {

                        /**
                         * Constructs a new CustomAudienceMember.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomAudienceMember);

                        /** CustomAudienceMember member_type. */
                        public member_type: (google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum.CustomAudienceMemberType|keyof typeof google.ads.googleads.v23.enums.CustomAudienceMemberTypeEnum.CustomAudienceMemberType);

                        /** CustomAudienceMember keyword. */
                        public keyword?: (string|null);

                        /** CustomAudienceMember url. */
                        public url?: (string|null);

                        /** CustomAudienceMember place_category. */
                        public place_category?: (number|null);

                        /** CustomAudienceMember app. */
                        public app?: (string|null);

                        /** CustomAudienceMember value. */
                        public value?: ("keyword"|"url"|"place_category"|"app");

                        /**
                         * Creates a new CustomAudienceMember instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceMember instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomAudienceMember): google.ads.googleads.v23.resources.CustomAudienceMember;

                        /**
                         * Encodes the specified CustomAudienceMember message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomAudienceMember.verify|verify} messages.
                         * @param message CustomAudienceMember message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomAudienceMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceMember message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomAudienceMember.verify|verify} messages.
                         * @param message CustomAudienceMember message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomAudienceMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceMember message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceMember
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomAudienceMember;

                        /**
                         * Decodes a CustomAudienceMember message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceMember
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomAudienceMember;

                        /**
                         * Verifies a CustomAudienceMember message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceMember message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceMember
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomAudienceMember;

                        /**
                         * Creates a plain object from a CustomAudienceMember message. Also converts values to other types if specified.
                         * @param message CustomAudienceMember
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomAudienceMember, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceMember to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceMember
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomConversionGoal. */
                    interface ICustomConversionGoal {

                        /** CustomConversionGoal resource_name */
                        resource_name?: (string|null);

                        /** CustomConversionGoal id */
                        id?: (number|null);

                        /** CustomConversionGoal name */
                        name?: (string|null);

                        /** CustomConversionGoal conversion_actions */
                        conversion_actions?: (string[]|null);

                        /** CustomConversionGoal status */
                        status?: (google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum.CustomConversionGoalStatus|keyof typeof google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum.CustomConversionGoalStatus|null);
                    }

                    /** Represents a CustomConversionGoal. */
                    class CustomConversionGoal implements ICustomConversionGoal {

                        /**
                         * Constructs a new CustomConversionGoal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomConversionGoal);

                        /** CustomConversionGoal resource_name. */
                        public resource_name: string;

                        /** CustomConversionGoal id. */
                        public id: number;

                        /** CustomConversionGoal name. */
                        public name: string;

                        /** CustomConversionGoal conversion_actions. */
                        public conversion_actions: string[];

                        /** CustomConversionGoal status. */
                        public status: (google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum.CustomConversionGoalStatus|keyof typeof google.ads.googleads.v23.enums.CustomConversionGoalStatusEnum.CustomConversionGoalStatus);

                        /**
                         * Creates a new CustomConversionGoal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomConversionGoal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomConversionGoal): google.ads.googleads.v23.resources.CustomConversionGoal;

                        /**
                         * Encodes the specified CustomConversionGoal message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomConversionGoal.verify|verify} messages.
                         * @param message CustomConversionGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomConversionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomConversionGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomConversionGoal.verify|verify} messages.
                         * @param message CustomConversionGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomConversionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomConversionGoal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomConversionGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomConversionGoal;

                        /**
                         * Decodes a CustomConversionGoal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomConversionGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomConversionGoal;

                        /**
                         * Verifies a CustomConversionGoal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomConversionGoal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomConversionGoal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomConversionGoal;

                        /**
                         * Creates a plain object from a CustomConversionGoal message. Also converts values to other types if specified.
                         * @param message CustomConversionGoal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomConversionGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomConversionGoal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomConversionGoal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomInterest. */
                    interface ICustomInterest {

                        /** CustomInterest resource_name */
                        resource_name?: (string|null);

                        /** CustomInterest id */
                        id?: (number|null);

                        /** CustomInterest status */
                        status?: (google.ads.googleads.v23.enums.CustomInterestStatusEnum.CustomInterestStatus|keyof typeof google.ads.googleads.v23.enums.CustomInterestStatusEnum.CustomInterestStatus|null);

                        /** CustomInterest name */
                        name?: (string|null);

                        /** CustomInterest type */
                        type?: (google.ads.googleads.v23.enums.CustomInterestTypeEnum.CustomInterestType|keyof typeof google.ads.googleads.v23.enums.CustomInterestTypeEnum.CustomInterestType|null);

                        /** CustomInterest description */
                        description?: (string|null);

                        /** CustomInterest members */
                        members?: (google.ads.googleads.v23.resources.ICustomInterestMember[]|null);
                    }

                    /** Represents a CustomInterest. */
                    class CustomInterest implements ICustomInterest {

                        /**
                         * Constructs a new CustomInterest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomInterest);

                        /** CustomInterest resource_name. */
                        public resource_name: string;

                        /** CustomInterest id. */
                        public id?: (number|null);

                        /** CustomInterest status. */
                        public status: (google.ads.googleads.v23.enums.CustomInterestStatusEnum.CustomInterestStatus|keyof typeof google.ads.googleads.v23.enums.CustomInterestStatusEnum.CustomInterestStatus);

                        /** CustomInterest name. */
                        public name?: (string|null);

                        /** CustomInterest type. */
                        public type: (google.ads.googleads.v23.enums.CustomInterestTypeEnum.CustomInterestType|keyof typeof google.ads.googleads.v23.enums.CustomInterestTypeEnum.CustomInterestType);

                        /** CustomInterest description. */
                        public description?: (string|null);

                        /** CustomInterest members. */
                        public members: google.ads.googleads.v23.resources.ICustomInterestMember[];

                        /**
                         * Creates a new CustomInterest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomInterest): google.ads.googleads.v23.resources.CustomInterest;

                        /**
                         * Encodes the specified CustomInterest message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomInterest.verify|verify} messages.
                         * @param message CustomInterest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomInterest.verify|verify} messages.
                         * @param message CustomInterest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomInterest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomInterest;

                        /**
                         * Decodes a CustomInterest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomInterest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomInterest;

                        /**
                         * Verifies a CustomInterest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomInterest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomInterest;

                        /**
                         * Creates a plain object from a CustomInterest message. Also converts values to other types if specified.
                         * @param message CustomInterest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomInterest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomInterest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomInterestMember. */
                    interface ICustomInterestMember {

                        /** CustomInterestMember member_type */
                        member_type?: (google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType|keyof typeof google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType|null);

                        /** CustomInterestMember parameter */
                        parameter?: (string|null);
                    }

                    /** Represents a CustomInterestMember. */
                    class CustomInterestMember implements ICustomInterestMember {

                        /**
                         * Constructs a new CustomInterestMember.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomInterestMember);

                        /** CustomInterestMember member_type. */
                        public member_type: (google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType|keyof typeof google.ads.googleads.v23.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType);

                        /** CustomInterestMember parameter. */
                        public parameter?: (string|null);

                        /**
                         * Creates a new CustomInterestMember instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterestMember instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomInterestMember): google.ads.googleads.v23.resources.CustomInterestMember;

                        /**
                         * Encodes the specified CustomInterestMember message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomInterestMember.verify|verify} messages.
                         * @param message CustomInterestMember message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomInterestMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestMember message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomInterestMember.verify|verify} messages.
                         * @param message CustomInterestMember message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomInterestMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestMember message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomInterestMember
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomInterestMember;

                        /**
                         * Decodes a CustomInterestMember message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomInterestMember
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomInterestMember;

                        /**
                         * Verifies a CustomInterestMember message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestMember message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomInterestMember
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomInterestMember;

                        /**
                         * Creates a plain object from a CustomInterestMember message. Also converts values to other types if specified.
                         * @param message CustomInterestMember
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomInterestMember, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestMember to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomInterestMember
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Customer. */
                    interface ICustomer {

                        /** Customer resource_name */
                        resource_name?: (string|null);

                        /** Customer id */
                        id?: (number|null);

                        /** Customer descriptive_name */
                        descriptive_name?: (string|null);

                        /** Customer currency_code */
                        currency_code?: (string|null);

                        /** Customer time_zone */
                        time_zone?: (string|null);

                        /** Customer tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** Customer final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** Customer auto_tagging_enabled */
                        auto_tagging_enabled?: (boolean|null);

                        /** Customer has_partners_badge */
                        has_partners_badge?: (boolean|null);

                        /** Customer manager */
                        manager?: (boolean|null);

                        /** Customer test_account */
                        test_account?: (boolean|null);

                        /** Customer call_reporting_setting */
                        call_reporting_setting?: (google.ads.googleads.v23.resources.ICallReportingSetting|null);

                        /** Customer conversion_tracking_setting */
                        conversion_tracking_setting?: (google.ads.googleads.v23.resources.IConversionTrackingSetting|null);

                        /** Customer remarketing_setting */
                        remarketing_setting?: (google.ads.googleads.v23.resources.IRemarketingSetting|null);

                        /** Customer pay_per_conversion_eligibility_failure_reasons */
                        pay_per_conversion_eligibility_failure_reasons?: (google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum.CustomerPayPerConversionEligibilityFailureReason[]|null);

                        /** Customer optimization_score */
                        optimization_score?: (number|null);

                        /** Customer optimization_score_weight */
                        optimization_score_weight?: (number|null);

                        /** Customer status */
                        status?: (google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus|keyof typeof google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus|null);

                        /** Customer location_asset_auto_migration_done */
                        location_asset_auto_migration_done?: (boolean|null);

                        /** Customer image_asset_auto_migration_done */
                        image_asset_auto_migration_done?: (boolean|null);

                        /** Customer location_asset_auto_migration_done_date_time */
                        location_asset_auto_migration_done_date_time?: (string|null);

                        /** Customer image_asset_auto_migration_done_date_time */
                        image_asset_auto_migration_done_date_time?: (string|null);

                        /** Customer customer_agreement_setting */
                        customer_agreement_setting?: (google.ads.googleads.v23.resources.ICustomerAgreementSetting|null);

                        /** Customer local_services_settings */
                        local_services_settings?: (google.ads.googleads.v23.resources.ILocalServicesSettings|null);

                        /** Customer video_brand_safety_suitability */
                        video_brand_safety_suitability?: (google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|keyof typeof google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|null);

                        /** Customer video_customer */
                        video_customer?: (google.ads.googleads.v23.resources.IVideoCustomer|null);
                    }

                    /** Represents a Customer. */
                    class Customer implements ICustomer {

                        /**
                         * Constructs a new Customer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomer);

                        /** Customer resource_name. */
                        public resource_name: string;

                        /** Customer id. */
                        public id?: (number|null);

                        /** Customer descriptive_name. */
                        public descriptive_name?: (string|null);

                        /** Customer currency_code. */
                        public currency_code?: (string|null);

                        /** Customer time_zone. */
                        public time_zone?: (string|null);

                        /** Customer tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** Customer final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** Customer auto_tagging_enabled. */
                        public auto_tagging_enabled?: (boolean|null);

                        /** Customer has_partners_badge. */
                        public has_partners_badge?: (boolean|null);

                        /** Customer manager. */
                        public manager?: (boolean|null);

                        /** Customer test_account. */
                        public test_account?: (boolean|null);

                        /** Customer call_reporting_setting. */
                        public call_reporting_setting?: (google.ads.googleads.v23.resources.ICallReportingSetting|null);

                        /** Customer conversion_tracking_setting. */
                        public conversion_tracking_setting?: (google.ads.googleads.v23.resources.IConversionTrackingSetting|null);

                        /** Customer remarketing_setting. */
                        public remarketing_setting?: (google.ads.googleads.v23.resources.IRemarketingSetting|null);

                        /** Customer pay_per_conversion_eligibility_failure_reasons. */
                        public pay_per_conversion_eligibility_failure_reasons: google.ads.googleads.v23.enums.CustomerPayPerConversionEligibilityFailureReasonEnum.CustomerPayPerConversionEligibilityFailureReason[];

                        /** Customer optimization_score. */
                        public optimization_score?: (number|null);

                        /** Customer optimization_score_weight. */
                        public optimization_score_weight: number;

                        /** Customer status. */
                        public status: (google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus|keyof typeof google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus);

                        /** Customer location_asset_auto_migration_done. */
                        public location_asset_auto_migration_done?: (boolean|null);

                        /** Customer image_asset_auto_migration_done. */
                        public image_asset_auto_migration_done?: (boolean|null);

                        /** Customer location_asset_auto_migration_done_date_time. */
                        public location_asset_auto_migration_done_date_time?: (string|null);

                        /** Customer image_asset_auto_migration_done_date_time. */
                        public image_asset_auto_migration_done_date_time?: (string|null);

                        /** Customer customer_agreement_setting. */
                        public customer_agreement_setting?: (google.ads.googleads.v23.resources.ICustomerAgreementSetting|null);

                        /** Customer local_services_settings. */
                        public local_services_settings?: (google.ads.googleads.v23.resources.ILocalServicesSettings|null);

                        /** Customer video_brand_safety_suitability. */
                        public video_brand_safety_suitability: (google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|keyof typeof google.ads.googleads.v23.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability);

                        /** Customer video_customer. */
                        public video_customer?: (google.ads.googleads.v23.resources.IVideoCustomer|null);

                        /**
                         * Creates a new Customer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Customer instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomer): google.ads.googleads.v23.resources.Customer;

                        /**
                         * Encodes the specified Customer message. Does not implicitly {@link google.ads.googleads.v23.resources.Customer.verify|verify} messages.
                         * @param message Customer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Customer message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Customer.verify|verify} messages.
                         * @param message Customer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Customer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Customer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Customer;

                        /**
                         * Decodes a Customer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Customer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Customer;

                        /**
                         * Verifies a Customer message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Customer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Customer
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Customer;

                        /**
                         * Creates a plain object from a Customer message. Also converts values to other types if specified.
                         * @param message Customer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Customer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Customer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Customer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CallReportingSetting. */
                    interface ICallReportingSetting {

                        /** CallReportingSetting call_reporting_enabled */
                        call_reporting_enabled?: (boolean|null);

                        /** CallReportingSetting call_conversion_reporting_enabled */
                        call_conversion_reporting_enabled?: (boolean|null);

                        /** CallReportingSetting call_conversion_action */
                        call_conversion_action?: (string|null);
                    }

                    /** Represents a CallReportingSetting. */
                    class CallReportingSetting implements ICallReportingSetting {

                        /**
                         * Constructs a new CallReportingSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICallReportingSetting);

                        /** CallReportingSetting call_reporting_enabled. */
                        public call_reporting_enabled?: (boolean|null);

                        /** CallReportingSetting call_conversion_reporting_enabled. */
                        public call_conversion_reporting_enabled?: (boolean|null);

                        /** CallReportingSetting call_conversion_action. */
                        public call_conversion_action?: (string|null);

                        /**
                         * Creates a new CallReportingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallReportingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICallReportingSetting): google.ads.googleads.v23.resources.CallReportingSetting;

                        /**
                         * Encodes the specified CallReportingSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.CallReportingSetting.verify|verify} messages.
                         * @param message CallReportingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICallReportingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallReportingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CallReportingSetting.verify|verify} messages.
                         * @param message CallReportingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICallReportingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallReportingSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallReportingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CallReportingSetting;

                        /**
                         * Decodes a CallReportingSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallReportingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CallReportingSetting;

                        /**
                         * Verifies a CallReportingSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallReportingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallReportingSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CallReportingSetting;

                        /**
                         * Creates a plain object from a CallReportingSetting message. Also converts values to other types if specified.
                         * @param message CallReportingSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CallReportingSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallReportingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallReportingSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionTrackingSetting. */
                    interface IConversionTrackingSetting {

                        /** ConversionTrackingSetting conversion_tracking_id */
                        conversion_tracking_id?: (number|null);

                        /** ConversionTrackingSetting cross_account_conversion_tracking_id */
                        cross_account_conversion_tracking_id?: (number|null);

                        /** ConversionTrackingSetting accepted_customer_data_terms */
                        accepted_customer_data_terms?: (boolean|null);

                        /** ConversionTrackingSetting conversion_tracking_status */
                        conversion_tracking_status?: (google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus|keyof typeof google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus|null);

                        /** ConversionTrackingSetting enhanced_conversions_for_leads_enabled */
                        enhanced_conversions_for_leads_enabled?: (boolean|null);

                        /** ConversionTrackingSetting google_ads_conversion_customer */
                        google_ads_conversion_customer?: (string|null);
                    }

                    /** Represents a ConversionTrackingSetting. */
                    class ConversionTrackingSetting implements IConversionTrackingSetting {

                        /**
                         * Constructs a new ConversionTrackingSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IConversionTrackingSetting);

                        /** ConversionTrackingSetting conversion_tracking_id. */
                        public conversion_tracking_id?: (number|null);

                        /** ConversionTrackingSetting cross_account_conversion_tracking_id. */
                        public cross_account_conversion_tracking_id?: (number|null);

                        /** ConversionTrackingSetting accepted_customer_data_terms. */
                        public accepted_customer_data_terms: boolean;

                        /** ConversionTrackingSetting conversion_tracking_status. */
                        public conversion_tracking_status: (google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus|keyof typeof google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus);

                        /** ConversionTrackingSetting enhanced_conversions_for_leads_enabled. */
                        public enhanced_conversions_for_leads_enabled: boolean;

                        /** ConversionTrackingSetting google_ads_conversion_customer. */
                        public google_ads_conversion_customer: string;

                        /**
                         * Creates a new ConversionTrackingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionTrackingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IConversionTrackingSetting): google.ads.googleads.v23.resources.ConversionTrackingSetting;

                        /**
                         * Encodes the specified ConversionTrackingSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionTrackingSetting.verify|verify} messages.
                         * @param message ConversionTrackingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IConversionTrackingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionTrackingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ConversionTrackingSetting.verify|verify} messages.
                         * @param message ConversionTrackingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IConversionTrackingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionTrackingSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionTrackingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ConversionTrackingSetting;

                        /**
                         * Decodes a ConversionTrackingSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionTrackingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ConversionTrackingSetting;

                        /**
                         * Verifies a ConversionTrackingSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionTrackingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionTrackingSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ConversionTrackingSetting;

                        /**
                         * Creates a plain object from a ConversionTrackingSetting message. Also converts values to other types if specified.
                         * @param message ConversionTrackingSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ConversionTrackingSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionTrackingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionTrackingSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemarketingSetting. */
                    interface IRemarketingSetting {

                        /** RemarketingSetting google_global_site_tag */
                        google_global_site_tag?: (string|null);
                    }

                    /** Represents a RemarketingSetting. */
                    class RemarketingSetting implements IRemarketingSetting {

                        /**
                         * Constructs a new RemarketingSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IRemarketingSetting);

                        /** RemarketingSetting google_global_site_tag. */
                        public google_global_site_tag?: (string|null);

                        /**
                         * Creates a new RemarketingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemarketingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IRemarketingSetting): google.ads.googleads.v23.resources.RemarketingSetting;

                        /**
                         * Encodes the specified RemarketingSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.RemarketingSetting.verify|verify} messages.
                         * @param message RemarketingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IRemarketingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemarketingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.RemarketingSetting.verify|verify} messages.
                         * @param message RemarketingSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IRemarketingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemarketingSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemarketingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.RemarketingSetting;

                        /**
                         * Decodes a RemarketingSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemarketingSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.RemarketingSetting;

                        /**
                         * Verifies a RemarketingSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemarketingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemarketingSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.RemarketingSetting;

                        /**
                         * Creates a plain object from a RemarketingSetting message. Also converts values to other types if specified.
                         * @param message RemarketingSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.RemarketingSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemarketingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemarketingSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerAgreementSetting. */
                    interface ICustomerAgreementSetting {

                        /** CustomerAgreementSetting accepted_lead_form_terms */
                        accepted_lead_form_terms?: (boolean|null);
                    }

                    /** Represents a CustomerAgreementSetting. */
                    class CustomerAgreementSetting implements ICustomerAgreementSetting {

                        /**
                         * Constructs a new CustomerAgreementSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerAgreementSetting);

                        /** CustomerAgreementSetting accepted_lead_form_terms. */
                        public accepted_lead_form_terms: boolean;

                        /**
                         * Creates a new CustomerAgreementSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAgreementSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerAgreementSetting): google.ads.googleads.v23.resources.CustomerAgreementSetting;

                        /**
                         * Encodes the specified CustomerAgreementSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAgreementSetting.verify|verify} messages.
                         * @param message CustomerAgreementSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerAgreementSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAgreementSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAgreementSetting.verify|verify} messages.
                         * @param message CustomerAgreementSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerAgreementSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAgreementSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerAgreementSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerAgreementSetting;

                        /**
                         * Decodes a CustomerAgreementSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerAgreementSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerAgreementSetting;

                        /**
                         * Verifies a CustomerAgreementSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAgreementSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerAgreementSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerAgreementSetting;

                        /**
                         * Creates a plain object from a CustomerAgreementSetting message. Also converts values to other types if specified.
                         * @param message CustomerAgreementSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerAgreementSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAgreementSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerAgreementSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocalServicesSettings. */
                    interface ILocalServicesSettings {

                        /** LocalServicesSettings granular_license_statuses */
                        granular_license_statuses?: (google.ads.googleads.v23.resources.IGranularLicenseStatus[]|null);

                        /** LocalServicesSettings granular_insurance_statuses */
                        granular_insurance_statuses?: (google.ads.googleads.v23.resources.IGranularInsuranceStatus[]|null);
                    }

                    /** Represents a LocalServicesSettings. */
                    class LocalServicesSettings implements ILocalServicesSettings {

                        /**
                         * Constructs a new LocalServicesSettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILocalServicesSettings);

                        /** LocalServicesSettings granular_license_statuses. */
                        public granular_license_statuses: google.ads.googleads.v23.resources.IGranularLicenseStatus[];

                        /** LocalServicesSettings granular_insurance_statuses. */
                        public granular_insurance_statuses: google.ads.googleads.v23.resources.IGranularInsuranceStatus[];

                        /**
                         * Creates a new LocalServicesSettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesSettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILocalServicesSettings): google.ads.googleads.v23.resources.LocalServicesSettings;

                        /**
                         * Encodes the specified LocalServicesSettings message. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesSettings.verify|verify} messages.
                         * @param message LocalServicesSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILocalServicesSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesSettings.verify|verify} messages.
                         * @param message LocalServicesSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILocalServicesSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesSettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LocalServicesSettings;

                        /**
                         * Decodes a LocalServicesSettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LocalServicesSettings;

                        /**
                         * Verifies a LocalServicesSettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesSettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesSettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LocalServicesSettings;

                        /**
                         * Creates a plain object from a LocalServicesSettings message. Also converts values to other types if specified.
                         * @param message LocalServicesSettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LocalServicesSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesSettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesSettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GranularLicenseStatus. */
                    interface IGranularLicenseStatus {

                        /** GranularLicenseStatus geo_criterion_id */
                        geo_criterion_id?: (number|null);

                        /** GranularLicenseStatus category_id */
                        category_id?: (string|null);

                        /** GranularLicenseStatus verification_status */
                        verification_status?: (google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|null);
                    }

                    /** Represents a GranularLicenseStatus. */
                    class GranularLicenseStatus implements IGranularLicenseStatus {

                        /**
                         * Constructs a new GranularLicenseStatus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGranularLicenseStatus);

                        /** GranularLicenseStatus geo_criterion_id. */
                        public geo_criterion_id?: (number|null);

                        /** GranularLicenseStatus category_id. */
                        public category_id?: (string|null);

                        /** GranularLicenseStatus verification_status. */
                        public verification_status?: (google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|null);

                        /**
                         * Creates a new GranularLicenseStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GranularLicenseStatus instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGranularLicenseStatus): google.ads.googleads.v23.resources.GranularLicenseStatus;

                        /**
                         * Encodes the specified GranularLicenseStatus message. Does not implicitly {@link google.ads.googleads.v23.resources.GranularLicenseStatus.verify|verify} messages.
                         * @param message GranularLicenseStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGranularLicenseStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GranularLicenseStatus message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GranularLicenseStatus.verify|verify} messages.
                         * @param message GranularLicenseStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGranularLicenseStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GranularLicenseStatus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GranularLicenseStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GranularLicenseStatus;

                        /**
                         * Decodes a GranularLicenseStatus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GranularLicenseStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GranularLicenseStatus;

                        /**
                         * Verifies a GranularLicenseStatus message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GranularLicenseStatus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GranularLicenseStatus
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GranularLicenseStatus;

                        /**
                         * Creates a plain object from a GranularLicenseStatus message. Also converts values to other types if specified.
                         * @param message GranularLicenseStatus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GranularLicenseStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GranularLicenseStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GranularLicenseStatus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GranularInsuranceStatus. */
                    interface IGranularInsuranceStatus {

                        /** GranularInsuranceStatus geo_criterion_id */
                        geo_criterion_id?: (number|null);

                        /** GranularInsuranceStatus category_id */
                        category_id?: (string|null);

                        /** GranularInsuranceStatus verification_status */
                        verification_status?: (google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|null);
                    }

                    /** Represents a GranularInsuranceStatus. */
                    class GranularInsuranceStatus implements IGranularInsuranceStatus {

                        /**
                         * Constructs a new GranularInsuranceStatus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGranularInsuranceStatus);

                        /** GranularInsuranceStatus geo_criterion_id. */
                        public geo_criterion_id?: (number|null);

                        /** GranularInsuranceStatus category_id. */
                        public category_id?: (string|null);

                        /** GranularInsuranceStatus verification_status. */
                        public verification_status?: (google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationStatusEnum.LocalServicesVerificationStatus|null);

                        /**
                         * Creates a new GranularInsuranceStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GranularInsuranceStatus instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGranularInsuranceStatus): google.ads.googleads.v23.resources.GranularInsuranceStatus;

                        /**
                         * Encodes the specified GranularInsuranceStatus message. Does not implicitly {@link google.ads.googleads.v23.resources.GranularInsuranceStatus.verify|verify} messages.
                         * @param message GranularInsuranceStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGranularInsuranceStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GranularInsuranceStatus message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GranularInsuranceStatus.verify|verify} messages.
                         * @param message GranularInsuranceStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGranularInsuranceStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GranularInsuranceStatus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GranularInsuranceStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GranularInsuranceStatus;

                        /**
                         * Decodes a GranularInsuranceStatus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GranularInsuranceStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GranularInsuranceStatus;

                        /**
                         * Verifies a GranularInsuranceStatus message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GranularInsuranceStatus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GranularInsuranceStatus
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GranularInsuranceStatus;

                        /**
                         * Creates a plain object from a GranularInsuranceStatus message. Also converts values to other types if specified.
                         * @param message GranularInsuranceStatus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GranularInsuranceStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GranularInsuranceStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GranularInsuranceStatus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a VideoCustomer. */
                    interface IVideoCustomer {

                        /** VideoCustomer third_party_integration_partners */
                        third_party_integration_partners?: (google.ads.googleads.v23.common.ICustomerThirdPartyIntegrationPartners|null);
                    }

                    /** Represents a VideoCustomer. */
                    class VideoCustomer implements IVideoCustomer {

                        /**
                         * Constructs a new VideoCustomer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IVideoCustomer);

                        /** VideoCustomer third_party_integration_partners. */
                        public third_party_integration_partners?: (google.ads.googleads.v23.common.ICustomerThirdPartyIntegrationPartners|null);

                        /**
                         * Creates a new VideoCustomer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VideoCustomer instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IVideoCustomer): google.ads.googleads.v23.resources.VideoCustomer;

                        /**
                         * Encodes the specified VideoCustomer message. Does not implicitly {@link google.ads.googleads.v23.resources.VideoCustomer.verify|verify} messages.
                         * @param message VideoCustomer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IVideoCustomer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VideoCustomer message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.VideoCustomer.verify|verify} messages.
                         * @param message VideoCustomer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IVideoCustomer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoCustomer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VideoCustomer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.VideoCustomer;

                        /**
                         * Decodes a VideoCustomer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VideoCustomer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.VideoCustomer;

                        /**
                         * Verifies a VideoCustomer message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VideoCustomer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VideoCustomer
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.VideoCustomer;

                        /**
                         * Creates a plain object from a VideoCustomer message. Also converts values to other types if specified.
                         * @param message VideoCustomer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.VideoCustomer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VideoCustomer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VideoCustomer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerAssetSet. */
                    interface ICustomerAssetSet {

                        /** CustomerAssetSet resource_name */
                        resource_name?: (string|null);

                        /** CustomerAssetSet asset_set */
                        asset_set?: (string|null);

                        /** CustomerAssetSet customer */
                        customer?: (string|null);

                        /** CustomerAssetSet status */
                        status?: (google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|null);
                    }

                    /** Represents a CustomerAssetSet. */
                    class CustomerAssetSet implements ICustomerAssetSet {

                        /**
                         * Constructs a new CustomerAssetSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerAssetSet);

                        /** CustomerAssetSet resource_name. */
                        public resource_name: string;

                        /** CustomerAssetSet asset_set. */
                        public asset_set: string;

                        /** CustomerAssetSet customer. */
                        public customer: string;

                        /** CustomerAssetSet status. */
                        public status: (google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetSetLinkStatusEnum.AssetSetLinkStatus);

                        /**
                         * Creates a new CustomerAssetSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAssetSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerAssetSet): google.ads.googleads.v23.resources.CustomerAssetSet;

                        /**
                         * Encodes the specified CustomerAssetSet message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAssetSet.verify|verify} messages.
                         * @param message CustomerAssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAssetSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerAssetSet.verify|verify} messages.
                         * @param message CustomerAssetSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerAssetSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAssetSet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerAssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerAssetSet;

                        /**
                         * Decodes a CustomerAssetSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerAssetSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerAssetSet;

                        /**
                         * Verifies a CustomerAssetSet message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAssetSet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerAssetSet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerAssetSet;

                        /**
                         * Creates a plain object from a CustomerAssetSet message. Also converts values to other types if specified.
                         * @param message CustomerAssetSet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerAssetSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAssetSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerAssetSet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerClient. */
                    interface ICustomerClient {

                        /** CustomerClient resource_name */
                        resource_name?: (string|null);

                        /** CustomerClient client_customer */
                        client_customer?: (string|null);

                        /** CustomerClient hidden */
                        hidden?: (boolean|null);

                        /** CustomerClient level */
                        level?: (number|null);

                        /** CustomerClient time_zone */
                        time_zone?: (string|null);

                        /** CustomerClient test_account */
                        test_account?: (boolean|null);

                        /** CustomerClient manager */
                        manager?: (boolean|null);

                        /** CustomerClient descriptive_name */
                        descriptive_name?: (string|null);

                        /** CustomerClient currency_code */
                        currency_code?: (string|null);

                        /** CustomerClient id */
                        id?: (number|null);

                        /** CustomerClient applied_labels */
                        applied_labels?: (string[]|null);

                        /** CustomerClient status */
                        status?: (google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus|keyof typeof google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus|null);
                    }

                    /** Represents a CustomerClient. */
                    class CustomerClient implements ICustomerClient {

                        /**
                         * Constructs a new CustomerClient.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerClient);

                        /** CustomerClient resource_name. */
                        public resource_name: string;

                        /** CustomerClient client_customer. */
                        public client_customer?: (string|null);

                        /** CustomerClient hidden. */
                        public hidden?: (boolean|null);

                        /** CustomerClient level. */
                        public level?: (number|null);

                        /** CustomerClient time_zone. */
                        public time_zone?: (string|null);

                        /** CustomerClient test_account. */
                        public test_account?: (boolean|null);

                        /** CustomerClient manager. */
                        public manager?: (boolean|null);

                        /** CustomerClient descriptive_name. */
                        public descriptive_name?: (string|null);

                        /** CustomerClient currency_code. */
                        public currency_code?: (string|null);

                        /** CustomerClient id. */
                        public id?: (number|null);

                        /** CustomerClient applied_labels. */
                        public applied_labels: string[];

                        /** CustomerClient status. */
                        public status: (google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus|keyof typeof google.ads.googleads.v23.enums.CustomerStatusEnum.CustomerStatus);

                        /**
                         * Creates a new CustomerClient instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerClient instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerClient): google.ads.googleads.v23.resources.CustomerClient;

                        /**
                         * Encodes the specified CustomerClient message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerClient.verify|verify} messages.
                         * @param message CustomerClient message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerClient, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClient message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerClient.verify|verify} messages.
                         * @param message CustomerClient message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerClient, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClient message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerClient
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerClient;

                        /**
                         * Decodes a CustomerClient message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerClient
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerClient;

                        /**
                         * Verifies a CustomerClient message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClient message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerClient
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerClient;

                        /**
                         * Creates a plain object from a CustomerClient message. Also converts values to other types if specified.
                         * @param message CustomerClient
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerClient, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClient to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerClient
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerClientLink. */
                    interface ICustomerClientLink {

                        /** CustomerClientLink resource_name */
                        resource_name?: (string|null);

                        /** CustomerClientLink client_customer */
                        client_customer?: (string|null);

                        /** CustomerClientLink manager_link_id */
                        manager_link_id?: (number|null);

                        /** CustomerClientLink status */
                        status?: (google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus|null);

                        /** CustomerClientLink hidden */
                        hidden?: (boolean|null);
                    }

                    /** Represents a CustomerClientLink. */
                    class CustomerClientLink implements ICustomerClientLink {

                        /**
                         * Constructs a new CustomerClientLink.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerClientLink);

                        /** CustomerClientLink resource_name. */
                        public resource_name: string;

                        /** CustomerClientLink client_customer. */
                        public client_customer?: (string|null);

                        /** CustomerClientLink manager_link_id. */
                        public manager_link_id?: (number|null);

                        /** CustomerClientLink status. */
                        public status: (google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus);

                        /** CustomerClientLink hidden. */
                        public hidden?: (boolean|null);

                        /**
                         * Creates a new CustomerClientLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerClientLink instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerClientLink): google.ads.googleads.v23.resources.CustomerClientLink;

                        /**
                         * Encodes the specified CustomerClientLink message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerClientLink.verify|verify} messages.
                         * @param message CustomerClientLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerClientLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClientLink message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerClientLink.verify|verify} messages.
                         * @param message CustomerClientLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerClientLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClientLink message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerClientLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerClientLink;

                        /**
                         * Decodes a CustomerClientLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerClientLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerClientLink;

                        /**
                         * Verifies a CustomerClientLink message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClientLink message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerClientLink
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerClientLink;

                        /**
                         * Creates a plain object from a CustomerClientLink message. Also converts values to other types if specified.
                         * @param message CustomerClientLink
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerClientLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClientLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerClientLink
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerConversionGoal. */
                    interface ICustomerConversionGoal {

                        /** CustomerConversionGoal resource_name */
                        resource_name?: (string|null);

                        /** CustomerConversionGoal category */
                        category?: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|null);

                        /** CustomerConversionGoal origin */
                        origin?: (google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|keyof typeof google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|null);

                        /** CustomerConversionGoal biddable */
                        biddable?: (boolean|null);
                    }

                    /** Represents a CustomerConversionGoal. */
                    class CustomerConversionGoal implements ICustomerConversionGoal {

                        /**
                         * Constructs a new CustomerConversionGoal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerConversionGoal);

                        /** CustomerConversionGoal resource_name. */
                        public resource_name: string;

                        /** CustomerConversionGoal category. */
                        public category: (google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v23.enums.ConversionActionCategoryEnum.ConversionActionCategory);

                        /** CustomerConversionGoal origin. */
                        public origin: (google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin|keyof typeof google.ads.googleads.v23.enums.ConversionOriginEnum.ConversionOrigin);

                        /** CustomerConversionGoal biddable. */
                        public biddable: boolean;

                        /**
                         * Creates a new CustomerConversionGoal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerConversionGoal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerConversionGoal): google.ads.googleads.v23.resources.CustomerConversionGoal;

                        /**
                         * Encodes the specified CustomerConversionGoal message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerConversionGoal.verify|verify} messages.
                         * @param message CustomerConversionGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerConversionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerConversionGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerConversionGoal.verify|verify} messages.
                         * @param message CustomerConversionGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerConversionGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerConversionGoal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerConversionGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerConversionGoal;

                        /**
                         * Decodes a CustomerConversionGoal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerConversionGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerConversionGoal;

                        /**
                         * Verifies a CustomerConversionGoal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerConversionGoal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerConversionGoal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerConversionGoal;

                        /**
                         * Creates a plain object from a CustomerConversionGoal message. Also converts values to other types if specified.
                         * @param message CustomerConversionGoal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerConversionGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerConversionGoal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerConversionGoal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerCustomizer. */
                    interface ICustomerCustomizer {

                        /** CustomerCustomizer resource_name */
                        resource_name?: (string|null);

                        /** CustomerCustomizer customizer_attribute */
                        customizer_attribute?: (string|null);

                        /** CustomerCustomizer status */
                        status?: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|null);

                        /** CustomerCustomizer value */
                        value?: (google.ads.googleads.v23.common.ICustomizerValue|null);
                    }

                    /** Represents a CustomerCustomizer. */
                    class CustomerCustomizer implements ICustomerCustomizer {

                        /**
                         * Constructs a new CustomerCustomizer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerCustomizer);

                        /** CustomerCustomizer resource_name. */
                        public resource_name: string;

                        /** CustomerCustomizer customizer_attribute. */
                        public customizer_attribute: string;

                        /** CustomerCustomizer status. */
                        public status: (google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerValueStatusEnum.CustomizerValueStatus);

                        /** CustomerCustomizer value. */
                        public value?: (google.ads.googleads.v23.common.ICustomizerValue|null);

                        /**
                         * Creates a new CustomerCustomizer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerCustomizer instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerCustomizer): google.ads.googleads.v23.resources.CustomerCustomizer;

                        /**
                         * Encodes the specified CustomerCustomizer message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerCustomizer.verify|verify} messages.
                         * @param message CustomerCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerCustomizer message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerCustomizer.verify|verify} messages.
                         * @param message CustomerCustomizer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerCustomizer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerCustomizer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerCustomizer;

                        /**
                         * Decodes a CustomerCustomizer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerCustomizer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerCustomizer;

                        /**
                         * Verifies a CustomerCustomizer message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerCustomizer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerCustomizer
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerCustomizer;

                        /**
                         * Creates a plain object from a CustomerCustomizer message. Also converts values to other types if specified.
                         * @param message CustomerCustomizer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerCustomizer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerCustomizer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerCustomizer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerLabel. */
                    interface ICustomerLabel {

                        /** CustomerLabel resource_name */
                        resource_name?: (string|null);

                        /** CustomerLabel customer */
                        customer?: (string|null);

                        /** CustomerLabel label */
                        label?: (string|null);
                    }

                    /** Represents a CustomerLabel. */
                    class CustomerLabel implements ICustomerLabel {

                        /**
                         * Constructs a new CustomerLabel.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerLabel);

                        /** CustomerLabel resource_name. */
                        public resource_name: string;

                        /** CustomerLabel customer. */
                        public customer?: (string|null);

                        /** CustomerLabel label. */
                        public label?: (string|null);

                        /**
                         * Creates a new CustomerLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerLabel): google.ads.googleads.v23.resources.CustomerLabel;

                        /**
                         * Encodes the specified CustomerLabel message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerLabel.verify|verify} messages.
                         * @param message CustomerLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerLabel.verify|verify} messages.
                         * @param message CustomerLabel message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLabel message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerLabel;

                        /**
                         * Decodes a CustomerLabel message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerLabel
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerLabel;

                        /**
                         * Verifies a CustomerLabel message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLabel message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerLabel
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerLabel;

                        /**
                         * Creates a plain object from a CustomerLabel message. Also converts values to other types if specified.
                         * @param message CustomerLabel
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerLabel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerLabel
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerLifecycleGoal. */
                    interface ICustomerLifecycleGoal {

                        /** CustomerLifecycleGoal resource_name */
                        resource_name?: (string|null);

                        /** CustomerLifecycleGoal customer_acquisition_goal_value_settings */
                        customer_acquisition_goal_value_settings?: (google.ads.googleads.v23.common.ILifecycleGoalValueSettings|null);

                        /** CustomerLifecycleGoal owner_customer */
                        owner_customer?: (string|null);
                    }

                    /** Represents a CustomerLifecycleGoal. */
                    class CustomerLifecycleGoal implements ICustomerLifecycleGoal {

                        /**
                         * Constructs a new CustomerLifecycleGoal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerLifecycleGoal);

                        /** CustomerLifecycleGoal resource_name. */
                        public resource_name: string;

                        /** CustomerLifecycleGoal customer_acquisition_goal_value_settings. */
                        public customer_acquisition_goal_value_settings?: (google.ads.googleads.v23.common.ILifecycleGoalValueSettings|null);

                        /** CustomerLifecycleGoal owner_customer. */
                        public owner_customer: string;

                        /**
                         * Creates a new CustomerLifecycleGoal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLifecycleGoal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerLifecycleGoal): google.ads.googleads.v23.resources.CustomerLifecycleGoal;

                        /**
                         * Encodes the specified CustomerLifecycleGoal message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerLifecycleGoal.verify|verify} messages.
                         * @param message CustomerLifecycleGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerLifecycleGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLifecycleGoal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerLifecycleGoal.verify|verify} messages.
                         * @param message CustomerLifecycleGoal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerLifecycleGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLifecycleGoal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerLifecycleGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerLifecycleGoal;

                        /**
                         * Decodes a CustomerLifecycleGoal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerLifecycleGoal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerLifecycleGoal;

                        /**
                         * Verifies a CustomerLifecycleGoal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLifecycleGoal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerLifecycleGoal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerLifecycleGoal;

                        /**
                         * Creates a plain object from a CustomerLifecycleGoal message. Also converts values to other types if specified.
                         * @param message CustomerLifecycleGoal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerLifecycleGoal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLifecycleGoal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerLifecycleGoal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerManagerLink. */
                    interface ICustomerManagerLink {

                        /** CustomerManagerLink resource_name */
                        resource_name?: (string|null);

                        /** CustomerManagerLink manager_customer */
                        manager_customer?: (string|null);

                        /** CustomerManagerLink manager_link_id */
                        manager_link_id?: (number|null);

                        /** CustomerManagerLink status */
                        status?: (google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus|null);
                    }

                    /** Represents a CustomerManagerLink. */
                    class CustomerManagerLink implements ICustomerManagerLink {

                        /**
                         * Constructs a new CustomerManagerLink.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerManagerLink);

                        /** CustomerManagerLink resource_name. */
                        public resource_name: string;

                        /** CustomerManagerLink manager_customer. */
                        public manager_customer?: (string|null);

                        /** CustomerManagerLink manager_link_id. */
                        public manager_link_id?: (number|null);

                        /** CustomerManagerLink status. */
                        public status: (google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v23.enums.ManagerLinkStatusEnum.ManagerLinkStatus);

                        /**
                         * Creates a new CustomerManagerLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerManagerLink instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerManagerLink): google.ads.googleads.v23.resources.CustomerManagerLink;

                        /**
                         * Encodes the specified CustomerManagerLink message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerManagerLink.verify|verify} messages.
                         * @param message CustomerManagerLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerManagerLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerManagerLink message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerManagerLink.verify|verify} messages.
                         * @param message CustomerManagerLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerManagerLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerManagerLink message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerManagerLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerManagerLink;

                        /**
                         * Decodes a CustomerManagerLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerManagerLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerManagerLink;

                        /**
                         * Verifies a CustomerManagerLink message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerManagerLink message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerManagerLink
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerManagerLink;

                        /**
                         * Creates a plain object from a CustomerManagerLink message. Also converts values to other types if specified.
                         * @param message CustomerManagerLink
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerManagerLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerManagerLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerManagerLink
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerNegativeCriterion. */
                    interface ICustomerNegativeCriterion {

                        /** CustomerNegativeCriterion resource_name */
                        resource_name?: (string|null);

                        /** CustomerNegativeCriterion id */
                        id?: (number|null);

                        /** CustomerNegativeCriterion type */
                        type?: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|null);

                        /** CustomerNegativeCriterion content_label */
                        content_label?: (google.ads.googleads.v23.common.IContentLabelInfo|null);

                        /** CustomerNegativeCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** CustomerNegativeCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** CustomerNegativeCriterion placement */
                        placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** CustomerNegativeCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** CustomerNegativeCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** CustomerNegativeCriterion negative_keyword_list */
                        negative_keyword_list?: (google.ads.googleads.v23.common.INegativeKeywordListInfo|null);

                        /** CustomerNegativeCriterion ip_block */
                        ip_block?: (google.ads.googleads.v23.common.IIpBlockInfo|null);

                        /** CustomerNegativeCriterion placement_list */
                        placement_list?: (google.ads.googleads.v23.common.IPlacementListInfo|null);
                    }

                    /** Represents a CustomerNegativeCriterion. */
                    class CustomerNegativeCriterion implements ICustomerNegativeCriterion {

                        /**
                         * Constructs a new CustomerNegativeCriterion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerNegativeCriterion);

                        /** CustomerNegativeCriterion resource_name. */
                        public resource_name: string;

                        /** CustomerNegativeCriterion id. */
                        public id?: (number|null);

                        /** CustomerNegativeCriterion type. */
                        public type: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType);

                        /** CustomerNegativeCriterion content_label. */
                        public content_label?: (google.ads.googleads.v23.common.IContentLabelInfo|null);

                        /** CustomerNegativeCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** CustomerNegativeCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** CustomerNegativeCriterion placement. */
                        public placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** CustomerNegativeCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** CustomerNegativeCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** CustomerNegativeCriterion negative_keyword_list. */
                        public negative_keyword_list?: (google.ads.googleads.v23.common.INegativeKeywordListInfo|null);

                        /** CustomerNegativeCriterion ip_block. */
                        public ip_block?: (google.ads.googleads.v23.common.IIpBlockInfo|null);

                        /** CustomerNegativeCriterion placement_list. */
                        public placement_list?: (google.ads.googleads.v23.common.IPlacementListInfo|null);

                        /** CustomerNegativeCriterion criterion. */
                        public criterion?: ("content_label"|"mobile_application"|"mobile_app_category"|"placement"|"youtube_video"|"youtube_channel"|"negative_keyword_list"|"ip_block"|"placement_list");

                        /**
                         * Creates a new CustomerNegativeCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerNegativeCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerNegativeCriterion): google.ads.googleads.v23.resources.CustomerNegativeCriterion;

                        /**
                         * Encodes the specified CustomerNegativeCriterion message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerNegativeCriterion.verify|verify} messages.
                         * @param message CustomerNegativeCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerNegativeCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerNegativeCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerNegativeCriterion.verify|verify} messages.
                         * @param message CustomerNegativeCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerNegativeCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerNegativeCriterion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerNegativeCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerNegativeCriterion;

                        /**
                         * Decodes a CustomerNegativeCriterion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerNegativeCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerNegativeCriterion;

                        /**
                         * Verifies a CustomerNegativeCriterion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerNegativeCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerNegativeCriterion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerNegativeCriterion;

                        /**
                         * Creates a plain object from a CustomerNegativeCriterion message. Also converts values to other types if specified.
                         * @param message CustomerNegativeCriterion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerNegativeCriterion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerNegativeCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerNegativeCriterion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerSearchTermInsight. */
                    interface ICustomerSearchTermInsight {

                        /** CustomerSearchTermInsight resource_name */
                        resource_name?: (string|null);

                        /** CustomerSearchTermInsight category_label */
                        category_label?: (string|null);

                        /** CustomerSearchTermInsight id */
                        id?: (number|null);
                    }

                    /** Represents a CustomerSearchTermInsight. */
                    class CustomerSearchTermInsight implements ICustomerSearchTermInsight {

                        /**
                         * Constructs a new CustomerSearchTermInsight.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerSearchTermInsight);

                        /** CustomerSearchTermInsight resource_name. */
                        public resource_name: string;

                        /** CustomerSearchTermInsight category_label. */
                        public category_label?: (string|null);

                        /** CustomerSearchTermInsight id. */
                        public id?: (number|null);

                        /**
                         * Creates a new CustomerSearchTermInsight instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerSearchTermInsight instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerSearchTermInsight): google.ads.googleads.v23.resources.CustomerSearchTermInsight;

                        /**
                         * Encodes the specified CustomerSearchTermInsight message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSearchTermInsight.verify|verify} messages.
                         * @param message CustomerSearchTermInsight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerSearchTermInsight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerSearchTermInsight message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSearchTermInsight.verify|verify} messages.
                         * @param message CustomerSearchTermInsight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerSearchTermInsight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerSearchTermInsight message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerSearchTermInsight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSearchTermInsight;

                        /**
                         * Decodes a CustomerSearchTermInsight message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerSearchTermInsight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSearchTermInsight;

                        /**
                         * Verifies a CustomerSearchTermInsight message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerSearchTermInsight message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerSearchTermInsight
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSearchTermInsight;

                        /**
                         * Creates a plain object from a CustomerSearchTermInsight message. Also converts values to other types if specified.
                         * @param message CustomerSearchTermInsight
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerSearchTermInsight, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerSearchTermInsight to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerSearchTermInsight
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerSkAdNetworkConversionValueSchema. */
                    interface ICustomerSkAdNetworkConversionValueSchema {

                        /** CustomerSkAdNetworkConversionValueSchema resource_name */
                        resource_name?: (string|null);

                        /** CustomerSkAdNetworkConversionValueSchema schema */
                        schema?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.ISkAdNetworkConversionValueSchema|null);
                    }

                    /** Represents a CustomerSkAdNetworkConversionValueSchema. */
                    class CustomerSkAdNetworkConversionValueSchema implements ICustomerSkAdNetworkConversionValueSchema {

                        /**
                         * Constructs a new CustomerSkAdNetworkConversionValueSchema.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerSkAdNetworkConversionValueSchema);

                        /** CustomerSkAdNetworkConversionValueSchema resource_name. */
                        public resource_name: string;

                        /** CustomerSkAdNetworkConversionValueSchema schema. */
                        public schema?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.ISkAdNetworkConversionValueSchema|null);

                        /**
                         * Creates a new CustomerSkAdNetworkConversionValueSchema instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerSkAdNetworkConversionValueSchema instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerSkAdNetworkConversionValueSchema): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema;

                        /**
                         * Encodes the specified CustomerSkAdNetworkConversionValueSchema message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.verify|verify} messages.
                         * @param message CustomerSkAdNetworkConversionValueSchema message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerSkAdNetworkConversionValueSchema, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerSkAdNetworkConversionValueSchema message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.verify|verify} messages.
                         * @param message CustomerSkAdNetworkConversionValueSchema message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerSkAdNetworkConversionValueSchema, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerSkAdNetworkConversionValueSchema message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerSkAdNetworkConversionValueSchema
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema;

                        /**
                         * Decodes a CustomerSkAdNetworkConversionValueSchema message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerSkAdNetworkConversionValueSchema
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema;

                        /**
                         * Verifies a CustomerSkAdNetworkConversionValueSchema message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerSkAdNetworkConversionValueSchema message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerSkAdNetworkConversionValueSchema
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema;

                        /**
                         * Creates a plain object from a CustomerSkAdNetworkConversionValueSchema message. Also converts values to other types if specified.
                         * @param message CustomerSkAdNetworkConversionValueSchema
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerSkAdNetworkConversionValueSchema to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerSkAdNetworkConversionValueSchema
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CustomerSkAdNetworkConversionValueSchema {

                        /** Properties of a SkAdNetworkConversionValueSchema. */
                        interface ISkAdNetworkConversionValueSchema {

                            /** SkAdNetworkConversionValueSchema app_id */
                            app_id?: (string|null);

                            /** SkAdNetworkConversionValueSchema measurement_window_hours */
                            measurement_window_hours?: (number|null);

                            /** SkAdNetworkConversionValueSchema fine_grained_conversion_value_mappings */
                            fine_grained_conversion_value_mappings?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IFineGrainedConversionValueMappings[]|null);

                            /** SkAdNetworkConversionValueSchema postback_mappings */
                            postback_mappings?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IPostbackMapping[]|null);
                        }

                        /** Represents a SkAdNetworkConversionValueSchema. */
                        class SkAdNetworkConversionValueSchema implements ISkAdNetworkConversionValueSchema {

                            /**
                             * Constructs a new SkAdNetworkConversionValueSchema.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.ISkAdNetworkConversionValueSchema);

                            /** SkAdNetworkConversionValueSchema app_id. */
                            public app_id: string;

                            /** SkAdNetworkConversionValueSchema measurement_window_hours. */
                            public measurement_window_hours: number;

                            /** SkAdNetworkConversionValueSchema fine_grained_conversion_value_mappings. */
                            public fine_grained_conversion_value_mappings: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IFineGrainedConversionValueMappings[];

                            /** SkAdNetworkConversionValueSchema postback_mappings. */
                            public postback_mappings: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IPostbackMapping[];

                            /**
                             * Creates a new SkAdNetworkConversionValueSchema instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SkAdNetworkConversionValueSchema instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.ISkAdNetworkConversionValueSchema): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema;

                            /**
                             * Encodes the specified SkAdNetworkConversionValueSchema message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.verify|verify} messages.
                             * @param message SkAdNetworkConversionValueSchema message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.ISkAdNetworkConversionValueSchema, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SkAdNetworkConversionValueSchema message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.verify|verify} messages.
                             * @param message SkAdNetworkConversionValueSchema message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.ISkAdNetworkConversionValueSchema, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SkAdNetworkConversionValueSchema message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SkAdNetworkConversionValueSchema
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema;

                            /**
                             * Decodes a SkAdNetworkConversionValueSchema message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SkAdNetworkConversionValueSchema
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema;

                            /**
                             * Verifies a SkAdNetworkConversionValueSchema message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SkAdNetworkConversionValueSchema message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SkAdNetworkConversionValueSchema
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema;

                            /**
                             * Creates a plain object from a SkAdNetworkConversionValueSchema message. Also converts values to other types if specified.
                             * @param message SkAdNetworkConversionValueSchema
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SkAdNetworkConversionValueSchema to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SkAdNetworkConversionValueSchema
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace SkAdNetworkConversionValueSchema {

                            /** Properties of a FineGrainedConversionValueMappings. */
                            interface IFineGrainedConversionValueMappings {

                                /** FineGrainedConversionValueMappings fine_grained_conversion_value */
                                fine_grained_conversion_value?: (number|null);

                                /** FineGrainedConversionValueMappings conversion_value_mapping */
                                conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);
                            }

                            /** Represents a FineGrainedConversionValueMappings. */
                            class FineGrainedConversionValueMappings implements IFineGrainedConversionValueMappings {

                                /**
                                 * Constructs a new FineGrainedConversionValueMappings.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IFineGrainedConversionValueMappings);

                                /** FineGrainedConversionValueMappings fine_grained_conversion_value. */
                                public fine_grained_conversion_value: number;

                                /** FineGrainedConversionValueMappings conversion_value_mapping. */
                                public conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);

                                /**
                                 * Creates a new FineGrainedConversionValueMappings instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns FineGrainedConversionValueMappings instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IFineGrainedConversionValueMappings): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings;

                                /**
                                 * Encodes the specified FineGrainedConversionValueMappings message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings.verify|verify} messages.
                                 * @param message FineGrainedConversionValueMappings message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IFineGrainedConversionValueMappings, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified FineGrainedConversionValueMappings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings.verify|verify} messages.
                                 * @param message FineGrainedConversionValueMappings message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IFineGrainedConversionValueMappings, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a FineGrainedConversionValueMappings message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns FineGrainedConversionValueMappings
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings;

                                /**
                                 * Decodes a FineGrainedConversionValueMappings message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns FineGrainedConversionValueMappings
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings;

                                /**
                                 * Verifies a FineGrainedConversionValueMappings message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a FineGrainedConversionValueMappings message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns FineGrainedConversionValueMappings
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings;

                                /**
                                 * Creates a plain object from a FineGrainedConversionValueMappings message. Also converts values to other types if specified.
                                 * @param message FineGrainedConversionValueMappings
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this FineGrainedConversionValueMappings to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for FineGrainedConversionValueMappings
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a PostbackMapping. */
                            interface IPostbackMapping {

                                /** PostbackMapping postback_sequence_index */
                                postback_sequence_index?: (number|null);

                                /** PostbackMapping coarse_grained_conversion_value_mappings */
                                coarse_grained_conversion_value_mappings?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ICoarseGrainedConversionValueMappings|null);

                                /** PostbackMapping lock_window_coarse_conversion_value */
                                lock_window_coarse_conversion_value?: (google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue|null);

                                /** PostbackMapping lock_window_fine_conversion_value */
                                lock_window_fine_conversion_value?: (number|null);

                                /** PostbackMapping lock_window_event */
                                lock_window_event?: (string|null);
                            }

                            /** Represents a PostbackMapping. */
                            class PostbackMapping implements IPostbackMapping {

                                /**
                                 * Constructs a new PostbackMapping.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IPostbackMapping);

                                /** PostbackMapping postback_sequence_index. */
                                public postback_sequence_index: number;

                                /** PostbackMapping coarse_grained_conversion_value_mappings. */
                                public coarse_grained_conversion_value_mappings?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ICoarseGrainedConversionValueMappings|null);

                                /** PostbackMapping lock_window_coarse_conversion_value. */
                                public lock_window_coarse_conversion_value?: (google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue|keyof typeof google.ads.googleads.v23.enums.SkAdNetworkCoarseConversionValueEnum.SkAdNetworkCoarseConversionValue|null);

                                /** PostbackMapping lock_window_fine_conversion_value. */
                                public lock_window_fine_conversion_value?: (number|null);

                                /** PostbackMapping lock_window_event. */
                                public lock_window_event?: (string|null);

                                /** PostbackMapping lock_window_trigger. */
                                public lock_window_trigger?: ("lock_window_coarse_conversion_value"|"lock_window_fine_conversion_value"|"lock_window_event");

                                /**
                                 * Creates a new PostbackMapping instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns PostbackMapping instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IPostbackMapping): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.PostbackMapping;

                                /**
                                 * Encodes the specified PostbackMapping message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.PostbackMapping.verify|verify} messages.
                                 * @param message PostbackMapping message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IPostbackMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified PostbackMapping message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.PostbackMapping.verify|verify} messages.
                                 * @param message PostbackMapping message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IPostbackMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a PostbackMapping message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns PostbackMapping
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.PostbackMapping;

                                /**
                                 * Decodes a PostbackMapping message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns PostbackMapping
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.PostbackMapping;

                                /**
                                 * Verifies a PostbackMapping message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a PostbackMapping message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns PostbackMapping
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.PostbackMapping;

                                /**
                                 * Creates a plain object from a PostbackMapping message. Also converts values to other types if specified.
                                 * @param message PostbackMapping
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.PostbackMapping, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this PostbackMapping to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for PostbackMapping
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a CoarseGrainedConversionValueMappings. */
                            interface ICoarseGrainedConversionValueMappings {

                                /** CoarseGrainedConversionValueMappings low_conversion_value_mapping */
                                low_conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);

                                /** CoarseGrainedConversionValueMappings medium_conversion_value_mapping */
                                medium_conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);

                                /** CoarseGrainedConversionValueMappings high_conversion_value_mapping */
                                high_conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);
                            }

                            /** Represents a CoarseGrainedConversionValueMappings. */
                            class CoarseGrainedConversionValueMappings implements ICoarseGrainedConversionValueMappings {

                                /**
                                 * Constructs a new CoarseGrainedConversionValueMappings.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ICoarseGrainedConversionValueMappings);

                                /** CoarseGrainedConversionValueMappings low_conversion_value_mapping. */
                                public low_conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);

                                /** CoarseGrainedConversionValueMappings medium_conversion_value_mapping. */
                                public medium_conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);

                                /** CoarseGrainedConversionValueMappings high_conversion_value_mapping. */
                                public high_conversion_value_mapping?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping|null);

                                /**
                                 * Creates a new CoarseGrainedConversionValueMappings instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns CoarseGrainedConversionValueMappings instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ICoarseGrainedConversionValueMappings): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.CoarseGrainedConversionValueMappings;

                                /**
                                 * Encodes the specified CoarseGrainedConversionValueMappings message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.CoarseGrainedConversionValueMappings.verify|verify} messages.
                                 * @param message CoarseGrainedConversionValueMappings message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ICoarseGrainedConversionValueMappings, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified CoarseGrainedConversionValueMappings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.CoarseGrainedConversionValueMappings.verify|verify} messages.
                                 * @param message CoarseGrainedConversionValueMappings message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ICoarseGrainedConversionValueMappings, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a CoarseGrainedConversionValueMappings message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns CoarseGrainedConversionValueMappings
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.CoarseGrainedConversionValueMappings;

                                /**
                                 * Decodes a CoarseGrainedConversionValueMappings message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns CoarseGrainedConversionValueMappings
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.CoarseGrainedConversionValueMappings;

                                /**
                                 * Verifies a CoarseGrainedConversionValueMappings message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a CoarseGrainedConversionValueMappings message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns CoarseGrainedConversionValueMappings
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.CoarseGrainedConversionValueMappings;

                                /**
                                 * Creates a plain object from a CoarseGrainedConversionValueMappings message. Also converts values to other types if specified.
                                 * @param message CoarseGrainedConversionValueMappings
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.CoarseGrainedConversionValueMappings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this CoarseGrainedConversionValueMappings to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for CoarseGrainedConversionValueMappings
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a ConversionValueMapping. */
                            interface IConversionValueMapping {

                                /** ConversionValueMapping min_time_post_install_hours */
                                min_time_post_install_hours?: (number|null);

                                /** ConversionValueMapping max_time_post_install_hours */
                                max_time_post_install_hours?: (number|null);

                                /** ConversionValueMapping mapped_events */
                                mapped_events?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IEvent[]|null);
                            }

                            /** Represents a ConversionValueMapping. */
                            class ConversionValueMapping implements IConversionValueMapping {

                                /**
                                 * Constructs a new ConversionValueMapping.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping);

                                /** ConversionValueMapping min_time_post_install_hours. */
                                public min_time_post_install_hours: number;

                                /** ConversionValueMapping max_time_post_install_hours. */
                                public max_time_post_install_hours: number;

                                /** ConversionValueMapping mapped_events. */
                                public mapped_events: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IEvent[];

                                /**
                                 * Creates a new ConversionValueMapping instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns ConversionValueMapping instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ConversionValueMapping;

                                /**
                                 * Encodes the specified ConversionValueMapping message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ConversionValueMapping.verify|verify} messages.
                                 * @param message ConversionValueMapping message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified ConversionValueMapping message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ConversionValueMapping.verify|verify} messages.
                                 * @param message ConversionValueMapping message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IConversionValueMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a ConversionValueMapping message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns ConversionValueMapping
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ConversionValueMapping;

                                /**
                                 * Decodes a ConversionValueMapping message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns ConversionValueMapping
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ConversionValueMapping;

                                /**
                                 * Verifies a ConversionValueMapping message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a ConversionValueMapping message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns ConversionValueMapping
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ConversionValueMapping;

                                /**
                                 * Creates a plain object from a ConversionValueMapping message. Also converts values to other types if specified.
                                 * @param message ConversionValueMapping
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.ConversionValueMapping, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this ConversionValueMapping to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for ConversionValueMapping
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of an Event. */
                            interface IEvent {

                                /** Event mapped_event_name */
                                mapped_event_name?: (string|null);

                                /** Event currency_code */
                                currency_code?: (string|null);

                                /** Event event_revenue_range */
                                event_revenue_range?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IRevenueRange|null);

                                /** Event event_revenue_value */
                                event_revenue_value?: (number|null);

                                /** Event event_occurrence_range */
                                event_occurrence_range?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IEventOccurrenceRange|null);

                                /** Event event_counter */
                                event_counter?: (number|null);
                            }

                            /** Represents an Event. */
                            class Event implements IEvent {

                                /**
                                 * Constructs a new Event.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IEvent);

                                /** Event mapped_event_name. */
                                public mapped_event_name: string;

                                /** Event currency_code. */
                                public currency_code: string;

                                /** Event event_revenue_range. */
                                public event_revenue_range?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IRevenueRange|null);

                                /** Event event_revenue_value. */
                                public event_revenue_value?: (number|null);

                                /** Event event_occurrence_range. */
                                public event_occurrence_range?: (google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IEventOccurrenceRange|null);

                                /** Event event_counter. */
                                public event_counter?: (number|null);

                                /** Event revenue_rate. */
                                public revenue_rate?: ("event_revenue_range"|"event_revenue_value");

                                /** Event event_rate. */
                                public event_rate?: ("event_occurrence_range"|"event_counter");

                                /**
                                 * Creates a new Event instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns Event instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IEvent): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event;

                                /**
                                 * Encodes the specified Event message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.verify|verify} messages.
                                 * @param message Event message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified Event message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.verify|verify} messages.
                                 * @param message Event message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.IEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes an Event message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns Event
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event;

                                /**
                                 * Decodes an Event message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns Event
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event;

                                /**
                                 * Verifies an Event message.
                                 * @param message Plain 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 Event message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns Event
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event;

                                /**
                                 * Creates a plain object from an Event message. Also converts values to other types if specified.
                                 * @param message Event
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this Event to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for Event
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            namespace Event {

                                /** Properties of a RevenueRange. */
                                interface IRevenueRange {

                                    /** RevenueRange min_event_revenue */
                                    min_event_revenue?: (number|null);

                                    /** RevenueRange max_event_revenue */
                                    max_event_revenue?: (number|null);
                                }

                                /** Represents a RevenueRange. */
                                class RevenueRange implements IRevenueRange {

                                    /**
                                     * Constructs a new RevenueRange.
                                     * @param [properties] Properties to set
                                     */
                                    constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IRevenueRange);

                                    /** RevenueRange min_event_revenue. */
                                    public min_event_revenue: number;

                                    /** RevenueRange max_event_revenue. */
                                    public max_event_revenue: number;

                                    /**
                                     * Creates a new RevenueRange instance using the specified properties.
                                     * @param [properties] Properties to set
                                     * @returns RevenueRange instance
                                     */
                                    public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IRevenueRange): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.RevenueRange;

                                    /**
                                     * Encodes the specified RevenueRange message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.RevenueRange.verify|verify} messages.
                                     * @param message RevenueRange message or plain object to encode
                                     * @param [writer] Writer to encode to
                                     * @returns Writer
                                     */
                                    public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IRevenueRange, writer?: $protobuf.Writer): $protobuf.Writer;

                                    /**
                                     * Encodes the specified RevenueRange message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.RevenueRange.verify|verify} messages.
                                     * @param message RevenueRange message or plain object to encode
                                     * @param [writer] Writer to encode to
                                     * @returns Writer
                                     */
                                    public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IRevenueRange, writer?: $protobuf.Writer): $protobuf.Writer;

                                    /**
                                     * Decodes a RevenueRange message from the specified reader or buffer.
                                     * @param reader Reader or buffer to decode from
                                     * @param [length] Message length if known beforehand
                                     * @returns RevenueRange
                                     * @throws {Error} If the payload is not a reader or valid buffer
                                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                     */
                                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.RevenueRange;

                                    /**
                                     * Decodes a RevenueRange message from the specified reader or buffer, length delimited.
                                     * @param reader Reader or buffer to decode from
                                     * @returns RevenueRange
                                     * @throws {Error} If the payload is not a reader or valid buffer
                                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                     */
                                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.RevenueRange;

                                    /**
                                     * Verifies a RevenueRange message.
                                     * @param message Plain object to verify
                                     * @returns `null` if valid, otherwise the reason why it is not
                                     */
                                    public static verify(message: { [k: string]: any }): (string|null);

                                    /**
                                     * Creates a RevenueRange message from a plain object. Also converts values to their respective internal types.
                                     * @param object Plain object
                                     * @returns RevenueRange
                                     */
                                    public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.RevenueRange;

                                    /**
                                     * Creates a plain object from a RevenueRange message. Also converts values to other types if specified.
                                     * @param message RevenueRange
                                     * @param [options] Conversion options
                                     * @returns Plain object
                                     */
                                    public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.RevenueRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                    /**
                                     * Converts this RevenueRange to JSON.
                                     * @returns JSON object
                                     */
                                    public toJSON(): { [k: string]: any };

                                    /**
                                     * Gets the default type url for RevenueRange
                                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                     * @returns The default type url
                                     */
                                    public static getTypeUrl(typeUrlPrefix?: string): string;
                                }

                                /** Properties of an EventOccurrenceRange. */
                                interface IEventOccurrenceRange {

                                    /** EventOccurrenceRange min_event_count */
                                    min_event_count?: (number|null);

                                    /** EventOccurrenceRange max_event_count */
                                    max_event_count?: (number|null);
                                }

                                /** Represents an EventOccurrenceRange. */
                                class EventOccurrenceRange implements IEventOccurrenceRange {

                                    /**
                                     * Constructs a new EventOccurrenceRange.
                                     * @param [properties] Properties to set
                                     */
                                    constructor(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IEventOccurrenceRange);

                                    /** EventOccurrenceRange min_event_count. */
                                    public min_event_count: number;

                                    /** EventOccurrenceRange max_event_count. */
                                    public max_event_count: number;

                                    /**
                                     * Creates a new EventOccurrenceRange instance using the specified properties.
                                     * @param [properties] Properties to set
                                     * @returns EventOccurrenceRange instance
                                     */
                                    public static create(properties?: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IEventOccurrenceRange): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.EventOccurrenceRange;

                                    /**
                                     * Encodes the specified EventOccurrenceRange message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.EventOccurrenceRange.verify|verify} messages.
                                     * @param message EventOccurrenceRange message or plain object to encode
                                     * @param [writer] Writer to encode to
                                     * @returns Writer
                                     */
                                    public static encode(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IEventOccurrenceRange, writer?: $protobuf.Writer): $protobuf.Writer;

                                    /**
                                     * Encodes the specified EventOccurrenceRange message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.EventOccurrenceRange.verify|verify} messages.
                                     * @param message EventOccurrenceRange message or plain object to encode
                                     * @param [writer] Writer to encode to
                                     * @returns Writer
                                     */
                                    public static encodeDelimited(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.IEventOccurrenceRange, writer?: $protobuf.Writer): $protobuf.Writer;

                                    /**
                                     * Decodes an EventOccurrenceRange message from the specified reader or buffer.
                                     * @param reader Reader or buffer to decode from
                                     * @param [length] Message length if known beforehand
                                     * @returns EventOccurrenceRange
                                     * @throws {Error} If the payload is not a reader or valid buffer
                                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                     */
                                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.EventOccurrenceRange;

                                    /**
                                     * Decodes an EventOccurrenceRange message from the specified reader or buffer, length delimited.
                                     * @param reader Reader or buffer to decode from
                                     * @returns EventOccurrenceRange
                                     * @throws {Error} If the payload is not a reader or valid buffer
                                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                     */
                                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.EventOccurrenceRange;

                                    /**
                                     * Verifies an EventOccurrenceRange message.
                                     * @param message Plain 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 EventOccurrenceRange message from a plain object. Also converts values to their respective internal types.
                                     * @param object Plain object
                                     * @returns EventOccurrenceRange
                                     */
                                    public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.EventOccurrenceRange;

                                    /**
                                     * Creates a plain object from an EventOccurrenceRange message. Also converts values to other types if specified.
                                     * @param message EventOccurrenceRange
                                     * @param [options] Conversion options
                                     * @returns Plain object
                                     */
                                    public static toObject(message: google.ads.googleads.v23.resources.CustomerSkAdNetworkConversionValueSchema.SkAdNetworkConversionValueSchema.Event.EventOccurrenceRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                    /**
                                     * Converts this EventOccurrenceRange to JSON.
                                     * @returns JSON object
                                     */
                                    public toJSON(): { [k: string]: any };

                                    /**
                                     * Gets the default type url for EventOccurrenceRange
                                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                     * @returns The default type url
                                     */
                                    public static getTypeUrl(typeUrlPrefix?: string): string;
                                }
                            }
                        }
                    }

                    /** Properties of a CustomerUserAccess. */
                    interface ICustomerUserAccess {

                        /** CustomerUserAccess resource_name */
                        resource_name?: (string|null);

                        /** CustomerUserAccess user_id */
                        user_id?: (number|null);

                        /** CustomerUserAccess email_address */
                        email_address?: (string|null);

                        /** CustomerUserAccess access_role */
                        access_role?: (google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|null);

                        /** CustomerUserAccess access_creation_date_time */
                        access_creation_date_time?: (string|null);

                        /** CustomerUserAccess inviter_user_email_address */
                        inviter_user_email_address?: (string|null);
                    }

                    /** Represents a CustomerUserAccess. */
                    class CustomerUserAccess implements ICustomerUserAccess {

                        /**
                         * Constructs a new CustomerUserAccess.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerUserAccess);

                        /** CustomerUserAccess resource_name. */
                        public resource_name: string;

                        /** CustomerUserAccess user_id. */
                        public user_id: number;

                        /** CustomerUserAccess email_address. */
                        public email_address?: (string|null);

                        /** CustomerUserAccess access_role. */
                        public access_role: (google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole);

                        /** CustomerUserAccess access_creation_date_time. */
                        public access_creation_date_time?: (string|null);

                        /** CustomerUserAccess inviter_user_email_address. */
                        public inviter_user_email_address?: (string|null);

                        /**
                         * Creates a new CustomerUserAccess instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerUserAccess instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerUserAccess): google.ads.googleads.v23.resources.CustomerUserAccess;

                        /**
                         * Encodes the specified CustomerUserAccess message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerUserAccess.verify|verify} messages.
                         * @param message CustomerUserAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerUserAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccess message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerUserAccess.verify|verify} messages.
                         * @param message CustomerUserAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerUserAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccess message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerUserAccess
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerUserAccess;

                        /**
                         * Decodes a CustomerUserAccess message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerUserAccess
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerUserAccess;

                        /**
                         * Verifies a CustomerUserAccess message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccess message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerUserAccess
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerUserAccess;

                        /**
                         * Creates a plain object from a CustomerUserAccess message. Also converts values to other types if specified.
                         * @param message CustomerUserAccess
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerUserAccess, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccess to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerUserAccess
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerUserAccessInvitation. */
                    interface ICustomerUserAccessInvitation {

                        /** CustomerUserAccessInvitation resource_name */
                        resource_name?: (string|null);

                        /** CustomerUserAccessInvitation invitation_id */
                        invitation_id?: (number|null);

                        /** CustomerUserAccessInvitation access_role */
                        access_role?: (google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|null);

                        /** CustomerUserAccessInvitation email_address */
                        email_address?: (string|null);

                        /** CustomerUserAccessInvitation creation_date_time */
                        creation_date_time?: (string|null);

                        /** CustomerUserAccessInvitation invitation_status */
                        invitation_status?: (google.ads.googleads.v23.enums.AccessInvitationStatusEnum.AccessInvitationStatus|keyof typeof google.ads.googleads.v23.enums.AccessInvitationStatusEnum.AccessInvitationStatus|null);
                    }

                    /** Represents a CustomerUserAccessInvitation. */
                    class CustomerUserAccessInvitation implements ICustomerUserAccessInvitation {

                        /**
                         * Constructs a new CustomerUserAccessInvitation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomerUserAccessInvitation);

                        /** CustomerUserAccessInvitation resource_name. */
                        public resource_name: string;

                        /** CustomerUserAccessInvitation invitation_id. */
                        public invitation_id: number;

                        /** CustomerUserAccessInvitation access_role. */
                        public access_role: (google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole);

                        /** CustomerUserAccessInvitation email_address. */
                        public email_address: string;

                        /** CustomerUserAccessInvitation creation_date_time. */
                        public creation_date_time: string;

                        /** CustomerUserAccessInvitation invitation_status. */
                        public invitation_status: (google.ads.googleads.v23.enums.AccessInvitationStatusEnum.AccessInvitationStatus|keyof typeof google.ads.googleads.v23.enums.AccessInvitationStatusEnum.AccessInvitationStatus);

                        /**
                         * Creates a new CustomerUserAccessInvitation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerUserAccessInvitation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomerUserAccessInvitation): google.ads.googleads.v23.resources.CustomerUserAccessInvitation;

                        /**
                         * Encodes the specified CustomerUserAccessInvitation message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerUserAccessInvitation.verify|verify} messages.
                         * @param message CustomerUserAccessInvitation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomerUserAccessInvitation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessInvitation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomerUserAccessInvitation.verify|verify} messages.
                         * @param message CustomerUserAccessInvitation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomerUserAccessInvitation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessInvitation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerUserAccessInvitation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomerUserAccessInvitation;

                        /**
                         * Decodes a CustomerUserAccessInvitation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerUserAccessInvitation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomerUserAccessInvitation;

                        /**
                         * Verifies a CustomerUserAccessInvitation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessInvitation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerUserAccessInvitation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomerUserAccessInvitation;

                        /**
                         * Creates a plain object from a CustomerUserAccessInvitation message. Also converts values to other types if specified.
                         * @param message CustomerUserAccessInvitation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomerUserAccessInvitation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessInvitation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerUserAccessInvitation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomizerAttribute. */
                    interface ICustomizerAttribute {

                        /** CustomizerAttribute resource_name */
                        resource_name?: (string|null);

                        /** CustomizerAttribute id */
                        id?: (number|null);

                        /** CustomizerAttribute name */
                        name?: (string|null);

                        /** CustomizerAttribute type */
                        type?: (google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType|keyof typeof google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType|null);

                        /** CustomizerAttribute status */
                        status?: (google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum.CustomizerAttributeStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum.CustomizerAttributeStatus|null);
                    }

                    /** Represents a CustomizerAttribute. */
                    class CustomizerAttribute implements ICustomizerAttribute {

                        /**
                         * Constructs a new CustomizerAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomizerAttribute);

                        /** CustomizerAttribute resource_name. */
                        public resource_name: string;

                        /** CustomizerAttribute id. */
                        public id: number;

                        /** CustomizerAttribute name. */
                        public name: string;

                        /** CustomizerAttribute type. */
                        public type: (google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType|keyof typeof google.ads.googleads.v23.enums.CustomizerAttributeTypeEnum.CustomizerAttributeType);

                        /** CustomizerAttribute status. */
                        public status: (google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum.CustomizerAttributeStatus|keyof typeof google.ads.googleads.v23.enums.CustomizerAttributeStatusEnum.CustomizerAttributeStatus);

                        /**
                         * Creates a new CustomizerAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomizerAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomizerAttribute): google.ads.googleads.v23.resources.CustomizerAttribute;

                        /**
                         * Encodes the specified CustomizerAttribute message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomizerAttribute.verify|verify} messages.
                         * @param message CustomizerAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomizerAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomizerAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomizerAttribute.verify|verify} messages.
                         * @param message CustomizerAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomizerAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomizerAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomizerAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomizerAttribute;

                        /**
                         * Decodes a CustomizerAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomizerAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomizerAttribute;

                        /**
                         * Verifies a CustomizerAttribute message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomizerAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomizerAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomizerAttribute;

                        /**
                         * Creates a plain object from a CustomizerAttribute message. Also converts values to other types if specified.
                         * @param message CustomizerAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomizerAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomizerAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomizerAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DataLink. */
                    interface IDataLink {

                        /** DataLink resource_name */
                        resource_name?: (string|null);

                        /** DataLink product_link_id */
                        product_link_id?: (number|null);

                        /** DataLink data_link_id */
                        data_link_id?: (number|null);

                        /** DataLink type */
                        type?: (google.ads.googleads.v23.enums.DataLinkTypeEnum.DataLinkType|keyof typeof google.ads.googleads.v23.enums.DataLinkTypeEnum.DataLinkType|null);

                        /** DataLink status */
                        status?: (google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus|keyof typeof google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus|null);

                        /** DataLink youtube_video */
                        youtube_video?: (google.ads.googleads.v23.resources.IYoutubeVideoIdentifier|null);
                    }

                    /** Represents a DataLink. */
                    class DataLink implements IDataLink {

                        /**
                         * Constructs a new DataLink.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDataLink);

                        /** DataLink resource_name. */
                        public resource_name: string;

                        /** DataLink product_link_id. */
                        public product_link_id?: (number|null);

                        /** DataLink data_link_id. */
                        public data_link_id?: (number|null);

                        /** DataLink type. */
                        public type: (google.ads.googleads.v23.enums.DataLinkTypeEnum.DataLinkType|keyof typeof google.ads.googleads.v23.enums.DataLinkTypeEnum.DataLinkType);

                        /** DataLink status. */
                        public status: (google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus|keyof typeof google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus);

                        /** DataLink youtube_video. */
                        public youtube_video?: (google.ads.googleads.v23.resources.IYoutubeVideoIdentifier|null);

                        /** DataLink data_link_entity. */
                        public data_link_entity?: "youtube_video";

                        /**
                         * Creates a new DataLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DataLink instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDataLink): google.ads.googleads.v23.resources.DataLink;

                        /**
                         * Encodes the specified DataLink message. Does not implicitly {@link google.ads.googleads.v23.resources.DataLink.verify|verify} messages.
                         * @param message DataLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDataLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataLink message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DataLink.verify|verify} messages.
                         * @param message DataLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDataLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataLink message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DataLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DataLink;

                        /**
                         * Decodes a DataLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DataLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DataLink;

                        /**
                         * Verifies a DataLink message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataLink message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DataLink
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DataLink;

                        /**
                         * Creates a plain object from a DataLink message. Also converts values to other types if specified.
                         * @param message DataLink
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DataLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DataLink
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YoutubeVideoIdentifier. */
                    interface IYoutubeVideoIdentifier {

                        /** YoutubeVideoIdentifier channel_id */
                        channel_id?: (string|null);

                        /** YoutubeVideoIdentifier video_id */
                        video_id?: (string|null);
                    }

                    /** Represents a YoutubeVideoIdentifier. */
                    class YoutubeVideoIdentifier implements IYoutubeVideoIdentifier {

                        /**
                         * Constructs a new YoutubeVideoIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IYoutubeVideoIdentifier);

                        /** YoutubeVideoIdentifier channel_id. */
                        public channel_id?: (string|null);

                        /** YoutubeVideoIdentifier video_id. */
                        public video_id?: (string|null);

                        /**
                         * Creates a new YoutubeVideoIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YoutubeVideoIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IYoutubeVideoIdentifier): google.ads.googleads.v23.resources.YoutubeVideoIdentifier;

                        /**
                         * Encodes the specified YoutubeVideoIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.YoutubeVideoIdentifier.verify|verify} messages.
                         * @param message YoutubeVideoIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IYoutubeVideoIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YoutubeVideoIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.YoutubeVideoIdentifier.verify|verify} messages.
                         * @param message YoutubeVideoIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IYoutubeVideoIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YoutubeVideoIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YoutubeVideoIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.YoutubeVideoIdentifier;

                        /**
                         * Decodes a YoutubeVideoIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YoutubeVideoIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.YoutubeVideoIdentifier;

                        /**
                         * Verifies a YoutubeVideoIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YoutubeVideoIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YoutubeVideoIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.YoutubeVideoIdentifier;

                        /**
                         * Creates a plain object from a YoutubeVideoIdentifier message. Also converts values to other types if specified.
                         * @param message YoutubeVideoIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.YoutubeVideoIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YoutubeVideoIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YoutubeVideoIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DetailContentSuitabilityPlacementView. */
                    interface IDetailContentSuitabilityPlacementView {

                        /** DetailContentSuitabilityPlacementView resource_name */
                        resource_name?: (string|null);

                        /** DetailContentSuitabilityPlacementView display_name */
                        display_name?: (string|null);

                        /** DetailContentSuitabilityPlacementView placement */
                        placement?: (string|null);

                        /** DetailContentSuitabilityPlacementView placement_type */
                        placement_type?: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|null);

                        /** DetailContentSuitabilityPlacementView target_url */
                        target_url?: (string|null);
                    }

                    /** Represents a DetailContentSuitabilityPlacementView. */
                    class DetailContentSuitabilityPlacementView implements IDetailContentSuitabilityPlacementView {

                        /**
                         * Constructs a new DetailContentSuitabilityPlacementView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDetailContentSuitabilityPlacementView);

                        /** DetailContentSuitabilityPlacementView resource_name. */
                        public resource_name: string;

                        /** DetailContentSuitabilityPlacementView display_name. */
                        public display_name: string;

                        /** DetailContentSuitabilityPlacementView placement. */
                        public placement: string;

                        /** DetailContentSuitabilityPlacementView placement_type. */
                        public placement_type: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType);

                        /** DetailContentSuitabilityPlacementView target_url. */
                        public target_url: string;

                        /**
                         * Creates a new DetailContentSuitabilityPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DetailContentSuitabilityPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDetailContentSuitabilityPlacementView): google.ads.googleads.v23.resources.DetailContentSuitabilityPlacementView;

                        /**
                         * Encodes the specified DetailContentSuitabilityPlacementView message. Does not implicitly {@link google.ads.googleads.v23.resources.DetailContentSuitabilityPlacementView.verify|verify} messages.
                         * @param message DetailContentSuitabilityPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDetailContentSuitabilityPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DetailContentSuitabilityPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DetailContentSuitabilityPlacementView.verify|verify} messages.
                         * @param message DetailContentSuitabilityPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDetailContentSuitabilityPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DetailContentSuitabilityPlacementView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DetailContentSuitabilityPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DetailContentSuitabilityPlacementView;

                        /**
                         * Decodes a DetailContentSuitabilityPlacementView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DetailContentSuitabilityPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DetailContentSuitabilityPlacementView;

                        /**
                         * Verifies a DetailContentSuitabilityPlacementView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DetailContentSuitabilityPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DetailContentSuitabilityPlacementView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DetailContentSuitabilityPlacementView;

                        /**
                         * Creates a plain object from a DetailContentSuitabilityPlacementView message. Also converts values to other types if specified.
                         * @param message DetailContentSuitabilityPlacementView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DetailContentSuitabilityPlacementView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DetailContentSuitabilityPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DetailContentSuitabilityPlacementView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DetailPlacementView. */
                    interface IDetailPlacementView {

                        /** DetailPlacementView resource_name */
                        resource_name?: (string|null);

                        /** DetailPlacementView placement */
                        placement?: (string|null);

                        /** DetailPlacementView display_name */
                        display_name?: (string|null);

                        /** DetailPlacementView group_placement_target_url */
                        group_placement_target_url?: (string|null);

                        /** DetailPlacementView target_url */
                        target_url?: (string|null);

                        /** DetailPlacementView placement_type */
                        placement_type?: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|null);
                    }

                    /** Represents a DetailPlacementView. */
                    class DetailPlacementView implements IDetailPlacementView {

                        /**
                         * Constructs a new DetailPlacementView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDetailPlacementView);

                        /** DetailPlacementView resource_name. */
                        public resource_name: string;

                        /** DetailPlacementView placement. */
                        public placement?: (string|null);

                        /** DetailPlacementView display_name. */
                        public display_name?: (string|null);

                        /** DetailPlacementView group_placement_target_url. */
                        public group_placement_target_url?: (string|null);

                        /** DetailPlacementView target_url. */
                        public target_url?: (string|null);

                        /** DetailPlacementView placement_type. */
                        public placement_type: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType);

                        /**
                         * Creates a new DetailPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DetailPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDetailPlacementView): google.ads.googleads.v23.resources.DetailPlacementView;

                        /**
                         * Encodes the specified DetailPlacementView message. Does not implicitly {@link google.ads.googleads.v23.resources.DetailPlacementView.verify|verify} messages.
                         * @param message DetailPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDetailPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DetailPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DetailPlacementView.verify|verify} messages.
                         * @param message DetailPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDetailPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DetailPlacementView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DetailPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DetailPlacementView;

                        /**
                         * Decodes a DetailPlacementView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DetailPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DetailPlacementView;

                        /**
                         * Verifies a DetailPlacementView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DetailPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DetailPlacementView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DetailPlacementView;

                        /**
                         * Creates a plain object from a DetailPlacementView message. Also converts values to other types if specified.
                         * @param message DetailPlacementView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DetailPlacementView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DetailPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DetailPlacementView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DetailedDemographic. */
                    interface IDetailedDemographic {

                        /** DetailedDemographic resource_name */
                        resource_name?: (string|null);

                        /** DetailedDemographic id */
                        id?: (number|null);

                        /** DetailedDemographic name */
                        name?: (string|null);

                        /** DetailedDemographic parent */
                        parent?: (string|null);

                        /** DetailedDemographic launched_to_all */
                        launched_to_all?: (boolean|null);

                        /** DetailedDemographic availabilities */
                        availabilities?: (google.ads.googleads.v23.common.ICriterionCategoryAvailability[]|null);
                    }

                    /** Represents a DetailedDemographic. */
                    class DetailedDemographic implements IDetailedDemographic {

                        /**
                         * Constructs a new DetailedDemographic.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDetailedDemographic);

                        /** DetailedDemographic resource_name. */
                        public resource_name: string;

                        /** DetailedDemographic id. */
                        public id: number;

                        /** DetailedDemographic name. */
                        public name: string;

                        /** DetailedDemographic parent. */
                        public parent: string;

                        /** DetailedDemographic launched_to_all. */
                        public launched_to_all: boolean;

                        /** DetailedDemographic availabilities. */
                        public availabilities: google.ads.googleads.v23.common.ICriterionCategoryAvailability[];

                        /**
                         * Creates a new DetailedDemographic instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DetailedDemographic instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDetailedDemographic): google.ads.googleads.v23.resources.DetailedDemographic;

                        /**
                         * Encodes the specified DetailedDemographic message. Does not implicitly {@link google.ads.googleads.v23.resources.DetailedDemographic.verify|verify} messages.
                         * @param message DetailedDemographic message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDetailedDemographic, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DetailedDemographic message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DetailedDemographic.verify|verify} messages.
                         * @param message DetailedDemographic message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDetailedDemographic, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DetailedDemographic message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DetailedDemographic
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DetailedDemographic;

                        /**
                         * Decodes a DetailedDemographic message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DetailedDemographic
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DetailedDemographic;

                        /**
                         * Verifies a DetailedDemographic message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DetailedDemographic message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DetailedDemographic
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DetailedDemographic;

                        /**
                         * Creates a plain object from a DetailedDemographic message. Also converts values to other types if specified.
                         * @param message DetailedDemographic
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DetailedDemographic, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DetailedDemographic to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DetailedDemographic
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DisplayKeywordView. */
                    interface IDisplayKeywordView {

                        /** DisplayKeywordView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a DisplayKeywordView. */
                    class DisplayKeywordView implements IDisplayKeywordView {

                        /**
                         * Constructs a new DisplayKeywordView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDisplayKeywordView);

                        /** DisplayKeywordView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new DisplayKeywordView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DisplayKeywordView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDisplayKeywordView): google.ads.googleads.v23.resources.DisplayKeywordView;

                        /**
                         * Encodes the specified DisplayKeywordView message. Does not implicitly {@link google.ads.googleads.v23.resources.DisplayKeywordView.verify|verify} messages.
                         * @param message DisplayKeywordView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDisplayKeywordView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DisplayKeywordView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DisplayKeywordView.verify|verify} messages.
                         * @param message DisplayKeywordView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDisplayKeywordView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DisplayKeywordView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DisplayKeywordView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DisplayKeywordView;

                        /**
                         * Decodes a DisplayKeywordView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DisplayKeywordView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DisplayKeywordView;

                        /**
                         * Verifies a DisplayKeywordView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DisplayKeywordView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DisplayKeywordView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DisplayKeywordView;

                        /**
                         * Creates a plain object from a DisplayKeywordView message. Also converts values to other types if specified.
                         * @param message DisplayKeywordView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DisplayKeywordView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DisplayKeywordView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DisplayKeywordView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DistanceView. */
                    interface IDistanceView {

                        /** DistanceView resource_name */
                        resource_name?: (string|null);

                        /** DistanceView distance_bucket */
                        distance_bucket?: (google.ads.googleads.v23.enums.DistanceBucketEnum.DistanceBucket|keyof typeof google.ads.googleads.v23.enums.DistanceBucketEnum.DistanceBucket|null);

                        /** DistanceView metric_system */
                        metric_system?: (boolean|null);
                    }

                    /** Represents a DistanceView. */
                    class DistanceView implements IDistanceView {

                        /**
                         * Constructs a new DistanceView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDistanceView);

                        /** DistanceView resource_name. */
                        public resource_name: string;

                        /** DistanceView distance_bucket. */
                        public distance_bucket: (google.ads.googleads.v23.enums.DistanceBucketEnum.DistanceBucket|keyof typeof google.ads.googleads.v23.enums.DistanceBucketEnum.DistanceBucket);

                        /** DistanceView metric_system. */
                        public metric_system?: (boolean|null);

                        /**
                         * Creates a new DistanceView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DistanceView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDistanceView): google.ads.googleads.v23.resources.DistanceView;

                        /**
                         * Encodes the specified DistanceView message. Does not implicitly {@link google.ads.googleads.v23.resources.DistanceView.verify|verify} messages.
                         * @param message DistanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDistanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DistanceView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DistanceView.verify|verify} messages.
                         * @param message DistanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDistanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DistanceView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DistanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DistanceView;

                        /**
                         * Decodes a DistanceView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DistanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DistanceView;

                        /**
                         * Verifies a DistanceView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DistanceView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DistanceView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DistanceView;

                        /**
                         * Creates a plain object from a DistanceView message. Also converts values to other types if specified.
                         * @param message DistanceView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DistanceView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DistanceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DistanceView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DomainCategory. */
                    interface IDomainCategory {

                        /** DomainCategory resource_name */
                        resource_name?: (string|null);

                        /** DomainCategory campaign */
                        campaign?: (string|null);

                        /** DomainCategory category */
                        category?: (string|null);

                        /** DomainCategory language_code */
                        language_code?: (string|null);

                        /** DomainCategory domain */
                        domain?: (string|null);

                        /** DomainCategory coverage_fraction */
                        coverage_fraction?: (number|null);

                        /** DomainCategory category_rank */
                        category_rank?: (number|null);

                        /** DomainCategory has_children */
                        has_children?: (boolean|null);

                        /** DomainCategory recommended_cpc_bid_micros */
                        recommended_cpc_bid_micros?: (number|null);
                    }

                    /** Represents a DomainCategory. */
                    class DomainCategory implements IDomainCategory {

                        /**
                         * Constructs a new DomainCategory.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDomainCategory);

                        /** DomainCategory resource_name. */
                        public resource_name: string;

                        /** DomainCategory campaign. */
                        public campaign?: (string|null);

                        /** DomainCategory category. */
                        public category?: (string|null);

                        /** DomainCategory language_code. */
                        public language_code?: (string|null);

                        /** DomainCategory domain. */
                        public domain?: (string|null);

                        /** DomainCategory coverage_fraction. */
                        public coverage_fraction?: (number|null);

                        /** DomainCategory category_rank. */
                        public category_rank?: (number|null);

                        /** DomainCategory has_children. */
                        public has_children?: (boolean|null);

                        /** DomainCategory recommended_cpc_bid_micros. */
                        public recommended_cpc_bid_micros?: (number|null);

                        /**
                         * Creates a new DomainCategory instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DomainCategory instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDomainCategory): google.ads.googleads.v23.resources.DomainCategory;

                        /**
                         * Encodes the specified DomainCategory message. Does not implicitly {@link google.ads.googleads.v23.resources.DomainCategory.verify|verify} messages.
                         * @param message DomainCategory message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDomainCategory, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DomainCategory message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DomainCategory.verify|verify} messages.
                         * @param message DomainCategory message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDomainCategory, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DomainCategory message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DomainCategory
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DomainCategory;

                        /**
                         * Decodes a DomainCategory message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DomainCategory
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DomainCategory;

                        /**
                         * Verifies a DomainCategory message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DomainCategory message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DomainCategory
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DomainCategory;

                        /**
                         * Creates a plain object from a DomainCategory message. Also converts values to other types if specified.
                         * @param message DomainCategory
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DomainCategory, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DomainCategory to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DomainCategory
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DynamicSearchAdsSearchTermView. */
                    interface IDynamicSearchAdsSearchTermView {

                        /** DynamicSearchAdsSearchTermView resource_name */
                        resource_name?: (string|null);

                        /** DynamicSearchAdsSearchTermView search_term */
                        search_term?: (string|null);

                        /** DynamicSearchAdsSearchTermView headline */
                        headline?: (string|null);

                        /** DynamicSearchAdsSearchTermView landing_page */
                        landing_page?: (string|null);

                        /** DynamicSearchAdsSearchTermView page_url */
                        page_url?: (string|null);

                        /** DynamicSearchAdsSearchTermView has_negative_keyword */
                        has_negative_keyword?: (boolean|null);

                        /** DynamicSearchAdsSearchTermView has_matching_keyword */
                        has_matching_keyword?: (boolean|null);

                        /** DynamicSearchAdsSearchTermView has_negative_url */
                        has_negative_url?: (boolean|null);
                    }

                    /** Represents a DynamicSearchAdsSearchTermView. */
                    class DynamicSearchAdsSearchTermView implements IDynamicSearchAdsSearchTermView {

                        /**
                         * Constructs a new DynamicSearchAdsSearchTermView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDynamicSearchAdsSearchTermView);

                        /** DynamicSearchAdsSearchTermView resource_name. */
                        public resource_name: string;

                        /** DynamicSearchAdsSearchTermView search_term. */
                        public search_term?: (string|null);

                        /** DynamicSearchAdsSearchTermView headline. */
                        public headline?: (string|null);

                        /** DynamicSearchAdsSearchTermView landing_page. */
                        public landing_page?: (string|null);

                        /** DynamicSearchAdsSearchTermView page_url. */
                        public page_url?: (string|null);

                        /** DynamicSearchAdsSearchTermView has_negative_keyword. */
                        public has_negative_keyword?: (boolean|null);

                        /** DynamicSearchAdsSearchTermView has_matching_keyword. */
                        public has_matching_keyword?: (boolean|null);

                        /** DynamicSearchAdsSearchTermView has_negative_url. */
                        public has_negative_url?: (boolean|null);

                        /**
                         * Creates a new DynamicSearchAdsSearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicSearchAdsSearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDynamicSearchAdsSearchTermView): google.ads.googleads.v23.resources.DynamicSearchAdsSearchTermView;

                        /**
                         * Encodes the specified DynamicSearchAdsSearchTermView message. Does not implicitly {@link google.ads.googleads.v23.resources.DynamicSearchAdsSearchTermView.verify|verify} messages.
                         * @param message DynamicSearchAdsSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDynamicSearchAdsSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicSearchAdsSearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DynamicSearchAdsSearchTermView.verify|verify} messages.
                         * @param message DynamicSearchAdsSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDynamicSearchAdsSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DynamicSearchAdsSearchTermView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DynamicSearchAdsSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DynamicSearchAdsSearchTermView;

                        /**
                         * Decodes a DynamicSearchAdsSearchTermView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DynamicSearchAdsSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DynamicSearchAdsSearchTermView;

                        /**
                         * Verifies a DynamicSearchAdsSearchTermView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DynamicSearchAdsSearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DynamicSearchAdsSearchTermView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DynamicSearchAdsSearchTermView;

                        /**
                         * Creates a plain object from a DynamicSearchAdsSearchTermView message. Also converts values to other types if specified.
                         * @param message DynamicSearchAdsSearchTermView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DynamicSearchAdsSearchTermView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DynamicSearchAdsSearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DynamicSearchAdsSearchTermView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExpandedLandingPageView. */
                    interface IExpandedLandingPageView {

                        /** ExpandedLandingPageView resource_name */
                        resource_name?: (string|null);

                        /** ExpandedLandingPageView expanded_final_url */
                        expanded_final_url?: (string|null);
                    }

                    /** Represents an ExpandedLandingPageView. */
                    class ExpandedLandingPageView implements IExpandedLandingPageView {

                        /**
                         * Constructs a new ExpandedLandingPageView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IExpandedLandingPageView);

                        /** ExpandedLandingPageView resource_name. */
                        public resource_name: string;

                        /** ExpandedLandingPageView expanded_final_url. */
                        public expanded_final_url?: (string|null);

                        /**
                         * Creates a new ExpandedLandingPageView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExpandedLandingPageView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IExpandedLandingPageView): google.ads.googleads.v23.resources.ExpandedLandingPageView;

                        /**
                         * Encodes the specified ExpandedLandingPageView message. Does not implicitly {@link google.ads.googleads.v23.resources.ExpandedLandingPageView.verify|verify} messages.
                         * @param message ExpandedLandingPageView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IExpandedLandingPageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExpandedLandingPageView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ExpandedLandingPageView.verify|verify} messages.
                         * @param message ExpandedLandingPageView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IExpandedLandingPageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExpandedLandingPageView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExpandedLandingPageView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ExpandedLandingPageView;

                        /**
                         * Decodes an ExpandedLandingPageView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExpandedLandingPageView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ExpandedLandingPageView;

                        /**
                         * Verifies an ExpandedLandingPageView message.
                         * @param message Plain 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 ExpandedLandingPageView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExpandedLandingPageView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ExpandedLandingPageView;

                        /**
                         * Creates a plain object from an ExpandedLandingPageView message. Also converts values to other types if specified.
                         * @param message ExpandedLandingPageView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ExpandedLandingPageView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExpandedLandingPageView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExpandedLandingPageView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Experiment. */
                    interface IExperiment {

                        /** Experiment resource_name */
                        resource_name?: (string|null);

                        /** Experiment experiment_id */
                        experiment_id?: (number|null);

                        /** Experiment name */
                        name?: (string|null);

                        /** Experiment description */
                        description?: (string|null);

                        /** Experiment suffix */
                        suffix?: (string|null);

                        /** Experiment type */
                        type?: (google.ads.googleads.v23.enums.ExperimentTypeEnum.ExperimentType|keyof typeof google.ads.googleads.v23.enums.ExperimentTypeEnum.ExperimentType|null);

                        /** Experiment status */
                        status?: (google.ads.googleads.v23.enums.ExperimentStatusEnum.ExperimentStatus|keyof typeof google.ads.googleads.v23.enums.ExperimentStatusEnum.ExperimentStatus|null);

                        /** Experiment start_date */
                        start_date?: (string|null);

                        /** Experiment end_date */
                        end_date?: (string|null);

                        /** Experiment goals */
                        goals?: (google.ads.googleads.v23.common.IMetricGoal[]|null);

                        /** Experiment long_running_operation */
                        long_running_operation?: (string|null);

                        /** Experiment promote_status */
                        promote_status?: (google.ads.googleads.v23.enums.AsyncActionStatusEnum.AsyncActionStatus|keyof typeof google.ads.googleads.v23.enums.AsyncActionStatusEnum.AsyncActionStatus|null);

                        /** Experiment sync_enabled */
                        sync_enabled?: (boolean|null);
                    }

                    /** Represents an Experiment. */
                    class Experiment implements IExperiment {

                        /**
                         * Constructs a new Experiment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IExperiment);

                        /** Experiment resource_name. */
                        public resource_name: string;

                        /** Experiment experiment_id. */
                        public experiment_id?: (number|null);

                        /** Experiment name. */
                        public name: string;

                        /** Experiment description. */
                        public description: string;

                        /** Experiment suffix. */
                        public suffix: string;

                        /** Experiment type. */
                        public type: (google.ads.googleads.v23.enums.ExperimentTypeEnum.ExperimentType|keyof typeof google.ads.googleads.v23.enums.ExperimentTypeEnum.ExperimentType);

                        /** Experiment status. */
                        public status: (google.ads.googleads.v23.enums.ExperimentStatusEnum.ExperimentStatus|keyof typeof google.ads.googleads.v23.enums.ExperimentStatusEnum.ExperimentStatus);

                        /** Experiment start_date. */
                        public start_date?: (string|null);

                        /** Experiment end_date. */
                        public end_date?: (string|null);

                        /** Experiment goals. */
                        public goals: google.ads.googleads.v23.common.IMetricGoal[];

                        /** Experiment long_running_operation. */
                        public long_running_operation?: (string|null);

                        /** Experiment promote_status. */
                        public promote_status: (google.ads.googleads.v23.enums.AsyncActionStatusEnum.AsyncActionStatus|keyof typeof google.ads.googleads.v23.enums.AsyncActionStatusEnum.AsyncActionStatus);

                        /** Experiment sync_enabled. */
                        public sync_enabled?: (boolean|null);

                        /**
                         * Creates a new Experiment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Experiment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IExperiment): google.ads.googleads.v23.resources.Experiment;

                        /**
                         * Encodes the specified Experiment message. Does not implicitly {@link google.ads.googleads.v23.resources.Experiment.verify|verify} messages.
                         * @param message Experiment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IExperiment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Experiment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Experiment.verify|verify} messages.
                         * @param message Experiment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IExperiment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Experiment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Experiment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Experiment;

                        /**
                         * Decodes an Experiment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Experiment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Experiment;

                        /**
                         * Verifies an Experiment message.
                         * @param message Plain 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 Experiment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Experiment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Experiment;

                        /**
                         * Creates a plain object from an Experiment message. Also converts values to other types if specified.
                         * @param message Experiment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Experiment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Experiment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Experiment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExperimentArm. */
                    interface IExperimentArm {

                        /** ExperimentArm resource_name */
                        resource_name?: (string|null);

                        /** ExperimentArm experiment */
                        experiment?: (string|null);

                        /** ExperimentArm name */
                        name?: (string|null);

                        /** ExperimentArm control */
                        control?: (boolean|null);

                        /** ExperimentArm traffic_split */
                        traffic_split?: (number|null);

                        /** ExperimentArm campaigns */
                        campaigns?: (string[]|null);

                        /** ExperimentArm in_design_campaigns */
                        in_design_campaigns?: (string[]|null);
                    }

                    /** Represents an ExperimentArm. */
                    class ExperimentArm implements IExperimentArm {

                        /**
                         * Constructs a new ExperimentArm.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IExperimentArm);

                        /** ExperimentArm resource_name. */
                        public resource_name: string;

                        /** ExperimentArm experiment. */
                        public experiment: string;

                        /** ExperimentArm name. */
                        public name: string;

                        /** ExperimentArm control. */
                        public control: boolean;

                        /** ExperimentArm traffic_split. */
                        public traffic_split: number;

                        /** ExperimentArm campaigns. */
                        public campaigns: string[];

                        /** ExperimentArm in_design_campaigns. */
                        public in_design_campaigns: string[];

                        /**
                         * Creates a new ExperimentArm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentArm instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IExperimentArm): google.ads.googleads.v23.resources.ExperimentArm;

                        /**
                         * Encodes the specified ExperimentArm message. Does not implicitly {@link google.ads.googleads.v23.resources.ExperimentArm.verify|verify} messages.
                         * @param message ExperimentArm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IExperimentArm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentArm message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ExperimentArm.verify|verify} messages.
                         * @param message ExperimentArm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IExperimentArm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentArm message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentArm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ExperimentArm;

                        /**
                         * Decodes an ExperimentArm message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentArm
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ExperimentArm;

                        /**
                         * Verifies an ExperimentArm message.
                         * @param message Plain 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 ExperimentArm message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentArm
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ExperimentArm;

                        /**
                         * Creates a plain object from an ExperimentArm message. Also converts values to other types if specified.
                         * @param message ExperimentArm
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ExperimentArm, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentArm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentArm
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FinalUrlExpansionAssetView. */
                    interface IFinalUrlExpansionAssetView {

                        /** FinalUrlExpansionAssetView resource_name */
                        resource_name?: (string|null);

                        /** FinalUrlExpansionAssetView campaign */
                        campaign?: (string|null);

                        /** FinalUrlExpansionAssetView asset */
                        asset?: (string|null);

                        /** FinalUrlExpansionAssetView field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** FinalUrlExpansionAssetView status */
                        status?: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|null);

                        /** FinalUrlExpansionAssetView final_url */
                        final_url?: (string|null);

                        /** FinalUrlExpansionAssetView ad_group */
                        ad_group?: (string|null);

                        /** FinalUrlExpansionAssetView asset_group */
                        asset_group?: (string|null);
                    }

                    /** Represents a FinalUrlExpansionAssetView. */
                    class FinalUrlExpansionAssetView implements IFinalUrlExpansionAssetView {

                        /**
                         * Constructs a new FinalUrlExpansionAssetView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IFinalUrlExpansionAssetView);

                        /** FinalUrlExpansionAssetView resource_name. */
                        public resource_name: string;

                        /** FinalUrlExpansionAssetView campaign. */
                        public campaign?: (string|null);

                        /** FinalUrlExpansionAssetView asset. */
                        public asset?: (string|null);

                        /** FinalUrlExpansionAssetView field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** FinalUrlExpansionAssetView status. */
                        public status?: (google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v23.enums.AssetLinkStatusEnum.AssetLinkStatus|null);

                        /** FinalUrlExpansionAssetView final_url. */
                        public final_url: string;

                        /** FinalUrlExpansionAssetView ad_group. */
                        public ad_group?: (string|null);

                        /** FinalUrlExpansionAssetView asset_group. */
                        public asset_group?: (string|null);

                        /** FinalUrlExpansionAssetView level. */
                        public level?: ("ad_group"|"asset_group");

                        /**
                         * Creates a new FinalUrlExpansionAssetView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FinalUrlExpansionAssetView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IFinalUrlExpansionAssetView): google.ads.googleads.v23.resources.FinalUrlExpansionAssetView;

                        /**
                         * Encodes the specified FinalUrlExpansionAssetView message. Does not implicitly {@link google.ads.googleads.v23.resources.FinalUrlExpansionAssetView.verify|verify} messages.
                         * @param message FinalUrlExpansionAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IFinalUrlExpansionAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FinalUrlExpansionAssetView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.FinalUrlExpansionAssetView.verify|verify} messages.
                         * @param message FinalUrlExpansionAssetView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IFinalUrlExpansionAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FinalUrlExpansionAssetView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FinalUrlExpansionAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.FinalUrlExpansionAssetView;

                        /**
                         * Decodes a FinalUrlExpansionAssetView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FinalUrlExpansionAssetView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.FinalUrlExpansionAssetView;

                        /**
                         * Verifies a FinalUrlExpansionAssetView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FinalUrlExpansionAssetView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FinalUrlExpansionAssetView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.FinalUrlExpansionAssetView;

                        /**
                         * Creates a plain object from a FinalUrlExpansionAssetView message. Also converts values to other types if specified.
                         * @param message FinalUrlExpansionAssetView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.FinalUrlExpansionAssetView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FinalUrlExpansionAssetView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FinalUrlExpansionAssetView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenderView. */
                    interface IGenderView {

                        /** GenderView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GenderView. */
                    class GenderView implements IGenderView {

                        /**
                         * Constructs a new GenderView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGenderView);

                        /** GenderView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GenderView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenderView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGenderView): google.ads.googleads.v23.resources.GenderView;

                        /**
                         * Encodes the specified GenderView message. Does not implicitly {@link google.ads.googleads.v23.resources.GenderView.verify|verify} messages.
                         * @param message GenderView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGenderView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenderView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GenderView.verify|verify} messages.
                         * @param message GenderView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGenderView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenderView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenderView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GenderView;

                        /**
                         * Decodes a GenderView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenderView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GenderView;

                        /**
                         * Verifies a GenderView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenderView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenderView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GenderView;

                        /**
                         * Creates a plain object from a GenderView message. Also converts values to other types if specified.
                         * @param message GenderView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GenderView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenderView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenderView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GeoTargetConstant. */
                    interface IGeoTargetConstant {

                        /** GeoTargetConstant resource_name */
                        resource_name?: (string|null);

                        /** GeoTargetConstant id */
                        id?: (number|null);

                        /** GeoTargetConstant name */
                        name?: (string|null);

                        /** GeoTargetConstant country_code */
                        country_code?: (string|null);

                        /** GeoTargetConstant target_type */
                        target_type?: (string|null);

                        /** GeoTargetConstant status */
                        status?: (google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum.GeoTargetConstantStatus|keyof typeof google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum.GeoTargetConstantStatus|null);

                        /** GeoTargetConstant canonical_name */
                        canonical_name?: (string|null);

                        /** GeoTargetConstant parent_geo_target */
                        parent_geo_target?: (string|null);
                    }

                    /** Represents a GeoTargetConstant. */
                    class GeoTargetConstant implements IGeoTargetConstant {

                        /**
                         * Constructs a new GeoTargetConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGeoTargetConstant);

                        /** GeoTargetConstant resource_name. */
                        public resource_name: string;

                        /** GeoTargetConstant id. */
                        public id?: (number|null);

                        /** GeoTargetConstant name. */
                        public name?: (string|null);

                        /** GeoTargetConstant country_code. */
                        public country_code?: (string|null);

                        /** GeoTargetConstant target_type. */
                        public target_type?: (string|null);

                        /** GeoTargetConstant status. */
                        public status: (google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum.GeoTargetConstantStatus|keyof typeof google.ads.googleads.v23.enums.GeoTargetConstantStatusEnum.GeoTargetConstantStatus);

                        /** GeoTargetConstant canonical_name. */
                        public canonical_name?: (string|null);

                        /** GeoTargetConstant parent_geo_target. */
                        public parent_geo_target?: (string|null);

                        /**
                         * Creates a new GeoTargetConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGeoTargetConstant): google.ads.googleads.v23.resources.GeoTargetConstant;

                        /**
                         * Encodes the specified GeoTargetConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.GeoTargetConstant.verify|verify} messages.
                         * @param message GeoTargetConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGeoTargetConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GeoTargetConstant.verify|verify} messages.
                         * @param message GeoTargetConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGeoTargetConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeoTargetConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GeoTargetConstant;

                        /**
                         * Decodes a GeoTargetConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeoTargetConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GeoTargetConstant;

                        /**
                         * Verifies a GeoTargetConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeoTargetConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GeoTargetConstant;

                        /**
                         * Creates a plain object from a GeoTargetConstant message. Also converts values to other types if specified.
                         * @param message GeoTargetConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GeoTargetConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeoTargetConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GeographicView. */
                    interface IGeographicView {

                        /** GeographicView resource_name */
                        resource_name?: (string|null);

                        /** GeographicView location_type */
                        location_type?: (google.ads.googleads.v23.enums.GeoTargetingTypeEnum.GeoTargetingType|keyof typeof google.ads.googleads.v23.enums.GeoTargetingTypeEnum.GeoTargetingType|null);

                        /** GeographicView country_criterion_id */
                        country_criterion_id?: (number|null);
                    }

                    /** Represents a GeographicView. */
                    class GeographicView implements IGeographicView {

                        /**
                         * Constructs a new GeographicView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGeographicView);

                        /** GeographicView resource_name. */
                        public resource_name: string;

                        /** GeographicView location_type. */
                        public location_type: (google.ads.googleads.v23.enums.GeoTargetingTypeEnum.GeoTargetingType|keyof typeof google.ads.googleads.v23.enums.GeoTargetingTypeEnum.GeoTargetingType);

                        /** GeographicView country_criterion_id. */
                        public country_criterion_id?: (number|null);

                        /**
                         * Creates a new GeographicView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeographicView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGeographicView): google.ads.googleads.v23.resources.GeographicView;

                        /**
                         * Encodes the specified GeographicView message. Does not implicitly {@link google.ads.googleads.v23.resources.GeographicView.verify|verify} messages.
                         * @param message GeographicView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGeographicView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeographicView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GeographicView.verify|verify} messages.
                         * @param message GeographicView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGeographicView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeographicView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeographicView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GeographicView;

                        /**
                         * Decodes a GeographicView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeographicView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GeographicView;

                        /**
                         * Verifies a GeographicView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeographicView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeographicView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GeographicView;

                        /**
                         * Creates a plain object from a GeographicView message. Also converts values to other types if specified.
                         * @param message GeographicView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GeographicView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeographicView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeographicView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Goal. */
                    interface IGoal {

                        /** Goal resource_name */
                        resource_name?: (string|null);

                        /** Goal goal_id */
                        goal_id?: (number|null);

                        /** Goal goal_type */
                        goal_type?: (google.ads.googleads.v23.enums.GoalTypeEnum.GoalType|keyof typeof google.ads.googleads.v23.enums.GoalTypeEnum.GoalType|null);

                        /** Goal owner_customer */
                        owner_customer?: (string|null);

                        /** Goal optimization_eligibility */
                        optimization_eligibility?: (google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum.GoalOptimizationEligibility|keyof typeof google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum.GoalOptimizationEligibility|null);

                        /** Goal retention_goal_settings */
                        retention_goal_settings?: (google.ads.googleads.v23.common.GoalSetting.IRetentionGoal|null);
                    }

                    /** Represents a Goal. */
                    class Goal implements IGoal {

                        /**
                         * Constructs a new Goal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGoal);

                        /** Goal resource_name. */
                        public resource_name: string;

                        /** Goal goal_id. */
                        public goal_id?: (number|null);

                        /** Goal goal_type. */
                        public goal_type: (google.ads.googleads.v23.enums.GoalTypeEnum.GoalType|keyof typeof google.ads.googleads.v23.enums.GoalTypeEnum.GoalType);

                        /** Goal owner_customer. */
                        public owner_customer?: (string|null);

                        /** Goal optimization_eligibility. */
                        public optimization_eligibility: (google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum.GoalOptimizationEligibility|keyof typeof google.ads.googleads.v23.enums.GoalOptimizationEligibilityEnum.GoalOptimizationEligibility);

                        /** Goal retention_goal_settings. */
                        public retention_goal_settings?: (google.ads.googleads.v23.common.GoalSetting.IRetentionGoal|null);

                        /** Goal goal_settings. */
                        public goal_settings?: "retention_goal_settings";

                        /**
                         * Creates a new Goal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Goal instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGoal): google.ads.googleads.v23.resources.Goal;

                        /**
                         * Encodes the specified Goal message. Does not implicitly {@link google.ads.googleads.v23.resources.Goal.verify|verify} messages.
                         * @param message Goal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Goal message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Goal.verify|verify} messages.
                         * @param message Goal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGoal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Goal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Goal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Goal;

                        /**
                         * Decodes a Goal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Goal
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Goal;

                        /**
                         * Verifies a Goal message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Goal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Goal
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Goal;

                        /**
                         * Creates a plain object from a Goal message. Also converts values to other types if specified.
                         * @param message Goal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Goal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Goal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Goal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GoogleAdsField. */
                    interface IGoogleAdsField {

                        /** GoogleAdsField resource_name */
                        resource_name?: (string|null);

                        /** GoogleAdsField name */
                        name?: (string|null);

                        /** GoogleAdsField category */
                        category?: (google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum.GoogleAdsFieldCategory|keyof typeof google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum.GoogleAdsFieldCategory|null);

                        /** GoogleAdsField selectable */
                        selectable?: (boolean|null);

                        /** GoogleAdsField filterable */
                        filterable?: (boolean|null);

                        /** GoogleAdsField sortable */
                        sortable?: (boolean|null);

                        /** GoogleAdsField selectable_with */
                        selectable_with?: (string[]|null);

                        /** GoogleAdsField attribute_resources */
                        attribute_resources?: (string[]|null);

                        /** GoogleAdsField metrics */
                        metrics?: (string[]|null);

                        /** GoogleAdsField segments */
                        segments?: (string[]|null);

                        /** GoogleAdsField enum_values */
                        enum_values?: (string[]|null);

                        /** GoogleAdsField data_type */
                        data_type?: (google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum.GoogleAdsFieldDataType|keyof typeof google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum.GoogleAdsFieldDataType|null);

                        /** GoogleAdsField type_url */
                        type_url?: (string|null);

                        /** GoogleAdsField is_repeated */
                        is_repeated?: (boolean|null);
                    }

                    /** Represents a GoogleAdsField. */
                    class GoogleAdsField implements IGoogleAdsField {

                        /**
                         * Constructs a new GoogleAdsField.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGoogleAdsField);

                        /** GoogleAdsField resource_name. */
                        public resource_name: string;

                        /** GoogleAdsField name. */
                        public name?: (string|null);

                        /** GoogleAdsField category. */
                        public category: (google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum.GoogleAdsFieldCategory|keyof typeof google.ads.googleads.v23.enums.GoogleAdsFieldCategoryEnum.GoogleAdsFieldCategory);

                        /** GoogleAdsField selectable. */
                        public selectable?: (boolean|null);

                        /** GoogleAdsField filterable. */
                        public filterable?: (boolean|null);

                        /** GoogleAdsField sortable. */
                        public sortable?: (boolean|null);

                        /** GoogleAdsField selectable_with. */
                        public selectable_with: string[];

                        /** GoogleAdsField attribute_resources. */
                        public attribute_resources: string[];

                        /** GoogleAdsField metrics. */
                        public metrics: string[];

                        /** GoogleAdsField segments. */
                        public segments: string[];

                        /** GoogleAdsField enum_values. */
                        public enum_values: string[];

                        /** GoogleAdsField data_type. */
                        public data_type: (google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum.GoogleAdsFieldDataType|keyof typeof google.ads.googleads.v23.enums.GoogleAdsFieldDataTypeEnum.GoogleAdsFieldDataType);

                        /** GoogleAdsField type_url. */
                        public type_url?: (string|null);

                        /** GoogleAdsField is_repeated. */
                        public is_repeated?: (boolean|null);

                        /**
                         * Creates a new GoogleAdsField instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsField instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGoogleAdsField): google.ads.googleads.v23.resources.GoogleAdsField;

                        /**
                         * Encodes the specified GoogleAdsField message. Does not implicitly {@link google.ads.googleads.v23.resources.GoogleAdsField.verify|verify} messages.
                         * @param message GoogleAdsField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGoogleAdsField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsField message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GoogleAdsField.verify|verify} messages.
                         * @param message GoogleAdsField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGoogleAdsField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsField message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleAdsField
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GoogleAdsField;

                        /**
                         * Decodes a GoogleAdsField message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsField
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GoogleAdsField;

                        /**
                         * Verifies a GoogleAdsField message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsField message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleAdsField
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GoogleAdsField;

                        /**
                         * Creates a plain object from a GoogleAdsField message. Also converts values to other types if specified.
                         * @param message GoogleAdsField
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GoogleAdsField, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsField to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleAdsField
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GroupContentSuitabilityPlacementView. */
                    interface IGroupContentSuitabilityPlacementView {

                        /** GroupContentSuitabilityPlacementView resource_name */
                        resource_name?: (string|null);

                        /** GroupContentSuitabilityPlacementView display_name */
                        display_name?: (string|null);

                        /** GroupContentSuitabilityPlacementView placement */
                        placement?: (string|null);

                        /** GroupContentSuitabilityPlacementView placement_type */
                        placement_type?: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|null);

                        /** GroupContentSuitabilityPlacementView target_url */
                        target_url?: (string|null);
                    }

                    /** Represents a GroupContentSuitabilityPlacementView. */
                    class GroupContentSuitabilityPlacementView implements IGroupContentSuitabilityPlacementView {

                        /**
                         * Constructs a new GroupContentSuitabilityPlacementView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGroupContentSuitabilityPlacementView);

                        /** GroupContentSuitabilityPlacementView resource_name. */
                        public resource_name: string;

                        /** GroupContentSuitabilityPlacementView display_name. */
                        public display_name: string;

                        /** GroupContentSuitabilityPlacementView placement. */
                        public placement: string;

                        /** GroupContentSuitabilityPlacementView placement_type. */
                        public placement_type: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType);

                        /** GroupContentSuitabilityPlacementView target_url. */
                        public target_url: string;

                        /**
                         * Creates a new GroupContentSuitabilityPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GroupContentSuitabilityPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGroupContentSuitabilityPlacementView): google.ads.googleads.v23.resources.GroupContentSuitabilityPlacementView;

                        /**
                         * Encodes the specified GroupContentSuitabilityPlacementView message. Does not implicitly {@link google.ads.googleads.v23.resources.GroupContentSuitabilityPlacementView.verify|verify} messages.
                         * @param message GroupContentSuitabilityPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGroupContentSuitabilityPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GroupContentSuitabilityPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GroupContentSuitabilityPlacementView.verify|verify} messages.
                         * @param message GroupContentSuitabilityPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGroupContentSuitabilityPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GroupContentSuitabilityPlacementView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GroupContentSuitabilityPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GroupContentSuitabilityPlacementView;

                        /**
                         * Decodes a GroupContentSuitabilityPlacementView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GroupContentSuitabilityPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GroupContentSuitabilityPlacementView;

                        /**
                         * Verifies a GroupContentSuitabilityPlacementView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GroupContentSuitabilityPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GroupContentSuitabilityPlacementView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GroupContentSuitabilityPlacementView;

                        /**
                         * Creates a plain object from a GroupContentSuitabilityPlacementView message. Also converts values to other types if specified.
                         * @param message GroupContentSuitabilityPlacementView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GroupContentSuitabilityPlacementView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GroupContentSuitabilityPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GroupContentSuitabilityPlacementView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GroupPlacementView. */
                    interface IGroupPlacementView {

                        /** GroupPlacementView resource_name */
                        resource_name?: (string|null);

                        /** GroupPlacementView placement */
                        placement?: (string|null);

                        /** GroupPlacementView display_name */
                        display_name?: (string|null);

                        /** GroupPlacementView target_url */
                        target_url?: (string|null);

                        /** GroupPlacementView placement_type */
                        placement_type?: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|null);
                    }

                    /** Represents a GroupPlacementView. */
                    class GroupPlacementView implements IGroupPlacementView {

                        /**
                         * Constructs a new GroupPlacementView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGroupPlacementView);

                        /** GroupPlacementView resource_name. */
                        public resource_name: string;

                        /** GroupPlacementView placement. */
                        public placement?: (string|null);

                        /** GroupPlacementView display_name. */
                        public display_name?: (string|null);

                        /** GroupPlacementView target_url. */
                        public target_url?: (string|null);

                        /** GroupPlacementView placement_type. */
                        public placement_type: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType);

                        /**
                         * Creates a new GroupPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GroupPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGroupPlacementView): google.ads.googleads.v23.resources.GroupPlacementView;

                        /**
                         * Encodes the specified GroupPlacementView message. Does not implicitly {@link google.ads.googleads.v23.resources.GroupPlacementView.verify|verify} messages.
                         * @param message GroupPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGroupPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GroupPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GroupPlacementView.verify|verify} messages.
                         * @param message GroupPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGroupPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GroupPlacementView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GroupPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GroupPlacementView;

                        /**
                         * Decodes a GroupPlacementView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GroupPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GroupPlacementView;

                        /**
                         * Verifies a GroupPlacementView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GroupPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GroupPlacementView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GroupPlacementView;

                        /**
                         * Creates a plain object from a GroupPlacementView message. Also converts values to other types if specified.
                         * @param message GroupPlacementView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GroupPlacementView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GroupPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GroupPlacementView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelGroupView. */
                    interface IHotelGroupView {

                        /** HotelGroupView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a HotelGroupView. */
                    class HotelGroupView implements IHotelGroupView {

                        /**
                         * Constructs a new HotelGroupView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IHotelGroupView);

                        /** HotelGroupView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new HotelGroupView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelGroupView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IHotelGroupView): google.ads.googleads.v23.resources.HotelGroupView;

                        /**
                         * Encodes the specified HotelGroupView message. Does not implicitly {@link google.ads.googleads.v23.resources.HotelGroupView.verify|verify} messages.
                         * @param message HotelGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IHotelGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelGroupView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.HotelGroupView.verify|verify} messages.
                         * @param message HotelGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IHotelGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelGroupView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.HotelGroupView;

                        /**
                         * Decodes a HotelGroupView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.HotelGroupView;

                        /**
                         * Verifies a HotelGroupView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelGroupView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelGroupView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.HotelGroupView;

                        /**
                         * Creates a plain object from a HotelGroupView message. Also converts values to other types if specified.
                         * @param message HotelGroupView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.HotelGroupView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelGroupView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelGroupView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelPerformanceView. */
                    interface IHotelPerformanceView {

                        /** HotelPerformanceView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a HotelPerformanceView. */
                    class HotelPerformanceView implements IHotelPerformanceView {

                        /**
                         * Constructs a new HotelPerformanceView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IHotelPerformanceView);

                        /** HotelPerformanceView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new HotelPerformanceView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelPerformanceView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IHotelPerformanceView): google.ads.googleads.v23.resources.HotelPerformanceView;

                        /**
                         * Encodes the specified HotelPerformanceView message. Does not implicitly {@link google.ads.googleads.v23.resources.HotelPerformanceView.verify|verify} messages.
                         * @param message HotelPerformanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IHotelPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelPerformanceView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.HotelPerformanceView.verify|verify} messages.
                         * @param message HotelPerformanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IHotelPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelPerformanceView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelPerformanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.HotelPerformanceView;

                        /**
                         * Decodes a HotelPerformanceView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelPerformanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.HotelPerformanceView;

                        /**
                         * Verifies a HotelPerformanceView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelPerformanceView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelPerformanceView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.HotelPerformanceView;

                        /**
                         * Creates a plain object from a HotelPerformanceView message. Also converts values to other types if specified.
                         * @param message HotelPerformanceView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.HotelPerformanceView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelPerformanceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelPerformanceView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelReconciliation. */
                    interface IHotelReconciliation {

                        /** HotelReconciliation resource_name */
                        resource_name?: (string|null);

                        /** HotelReconciliation commission_id */
                        commission_id?: (string|null);

                        /** HotelReconciliation order_id */
                        order_id?: (string|null);

                        /** HotelReconciliation campaign */
                        campaign?: (string|null);

                        /** HotelReconciliation hotel_center_id */
                        hotel_center_id?: (number|null);

                        /** HotelReconciliation hotel_id */
                        hotel_id?: (string|null);

                        /** HotelReconciliation check_in_date */
                        check_in_date?: (string|null);

                        /** HotelReconciliation check_out_date */
                        check_out_date?: (string|null);

                        /** HotelReconciliation reconciled_value_micros */
                        reconciled_value_micros?: (number|null);

                        /** HotelReconciliation billed */
                        billed?: (boolean|null);

                        /** HotelReconciliation status */
                        status?: (google.ads.googleads.v23.enums.HotelReconciliationStatusEnum.HotelReconciliationStatus|keyof typeof google.ads.googleads.v23.enums.HotelReconciliationStatusEnum.HotelReconciliationStatus|null);
                    }

                    /** Represents a HotelReconciliation. */
                    class HotelReconciliation implements IHotelReconciliation {

                        /**
                         * Constructs a new HotelReconciliation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IHotelReconciliation);

                        /** HotelReconciliation resource_name. */
                        public resource_name: string;

                        /** HotelReconciliation commission_id. */
                        public commission_id: string;

                        /** HotelReconciliation order_id. */
                        public order_id: string;

                        /** HotelReconciliation campaign. */
                        public campaign: string;

                        /** HotelReconciliation hotel_center_id. */
                        public hotel_center_id: number;

                        /** HotelReconciliation hotel_id. */
                        public hotel_id: string;

                        /** HotelReconciliation check_in_date. */
                        public check_in_date: string;

                        /** HotelReconciliation check_out_date. */
                        public check_out_date: string;

                        /** HotelReconciliation reconciled_value_micros. */
                        public reconciled_value_micros: number;

                        /** HotelReconciliation billed. */
                        public billed: boolean;

                        /** HotelReconciliation status. */
                        public status: (google.ads.googleads.v23.enums.HotelReconciliationStatusEnum.HotelReconciliationStatus|keyof typeof google.ads.googleads.v23.enums.HotelReconciliationStatusEnum.HotelReconciliationStatus);

                        /**
                         * Creates a new HotelReconciliation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelReconciliation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IHotelReconciliation): google.ads.googleads.v23.resources.HotelReconciliation;

                        /**
                         * Encodes the specified HotelReconciliation message. Does not implicitly {@link google.ads.googleads.v23.resources.HotelReconciliation.verify|verify} messages.
                         * @param message HotelReconciliation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IHotelReconciliation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelReconciliation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.HotelReconciliation.verify|verify} messages.
                         * @param message HotelReconciliation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IHotelReconciliation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelReconciliation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelReconciliation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.HotelReconciliation;

                        /**
                         * Decodes a HotelReconciliation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelReconciliation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.HotelReconciliation;

                        /**
                         * Verifies a HotelReconciliation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelReconciliation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelReconciliation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.HotelReconciliation;

                        /**
                         * Creates a plain object from a HotelReconciliation message. Also converts values to other types if specified.
                         * @param message HotelReconciliation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.HotelReconciliation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelReconciliation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelReconciliation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IncomeRangeView. */
                    interface IIncomeRangeView {

                        /** IncomeRangeView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an IncomeRangeView. */
                    class IncomeRangeView implements IIncomeRangeView {

                        /**
                         * Constructs a new IncomeRangeView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IIncomeRangeView);

                        /** IncomeRangeView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new IncomeRangeView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IncomeRangeView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IIncomeRangeView): google.ads.googleads.v23.resources.IncomeRangeView;

                        /**
                         * Encodes the specified IncomeRangeView message. Does not implicitly {@link google.ads.googleads.v23.resources.IncomeRangeView.verify|verify} messages.
                         * @param message IncomeRangeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IIncomeRangeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncomeRangeView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.IncomeRangeView.verify|verify} messages.
                         * @param message IncomeRangeView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IIncomeRangeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncomeRangeView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IncomeRangeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.IncomeRangeView;

                        /**
                         * Decodes an IncomeRangeView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IncomeRangeView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.IncomeRangeView;

                        /**
                         * Verifies an IncomeRangeView message.
                         * @param message Plain 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 IncomeRangeView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IncomeRangeView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.IncomeRangeView;

                        /**
                         * Creates a plain object from an IncomeRangeView message. Also converts values to other types if specified.
                         * @param message IncomeRangeView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.IncomeRangeView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncomeRangeView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IncomeRangeView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Invoice. */
                    interface IInvoice {

                        /** Invoice resource_name */
                        resource_name?: (string|null);

                        /** Invoice id */
                        id?: (string|null);

                        /** Invoice type */
                        type?: (google.ads.googleads.v23.enums.InvoiceTypeEnum.InvoiceType|keyof typeof google.ads.googleads.v23.enums.InvoiceTypeEnum.InvoiceType|null);

                        /** Invoice billing_setup */
                        billing_setup?: (string|null);

                        /** Invoice payments_account_id */
                        payments_account_id?: (string|null);

                        /** Invoice payments_profile_id */
                        payments_profile_id?: (string|null);

                        /** Invoice issue_date */
                        issue_date?: (string|null);

                        /** Invoice due_date */
                        due_date?: (string|null);

                        /** Invoice service_date_range */
                        service_date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                        /** Invoice currency_code */
                        currency_code?: (string|null);

                        /** Invoice adjustments_subtotal_amount_micros */
                        adjustments_subtotal_amount_micros?: (number|null);

                        /** Invoice adjustments_tax_amount_micros */
                        adjustments_tax_amount_micros?: (number|null);

                        /** Invoice adjustments_total_amount_micros */
                        adjustments_total_amount_micros?: (number|null);

                        /** Invoice regulatory_costs_subtotal_amount_micros */
                        regulatory_costs_subtotal_amount_micros?: (number|null);

                        /** Invoice regulatory_costs_tax_amount_micros */
                        regulatory_costs_tax_amount_micros?: (number|null);

                        /** Invoice regulatory_costs_total_amount_micros */
                        regulatory_costs_total_amount_micros?: (number|null);

                        /** Invoice export_charge_subtotal_amount_micros */
                        export_charge_subtotal_amount_micros?: (number|null);

                        /** Invoice export_charge_tax_amount_micros */
                        export_charge_tax_amount_micros?: (number|null);

                        /** Invoice export_charge_total_amount_micros */
                        export_charge_total_amount_micros?: (number|null);

                        /** Invoice subtotal_amount_micros */
                        subtotal_amount_micros?: (number|null);

                        /** Invoice tax_amount_micros */
                        tax_amount_micros?: (number|null);

                        /** Invoice total_amount_micros */
                        total_amount_micros?: (number|null);

                        /** Invoice corrected_invoice */
                        corrected_invoice?: (string|null);

                        /** Invoice replaced_invoices */
                        replaced_invoices?: (string[]|null);

                        /** Invoice pdf_url */
                        pdf_url?: (string|null);

                        /** Invoice account_budget_summaries */
                        account_budget_summaries?: (google.ads.googleads.v23.resources.Invoice.IAccountBudgetSummary[]|null);

                        /** Invoice account_summaries */
                        account_summaries?: (google.ads.googleads.v23.resources.Invoice.IAccountSummary[]|null);
                    }

                    /** Represents an Invoice. */
                    class Invoice implements IInvoice {

                        /**
                         * Constructs a new Invoice.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IInvoice);

                        /** Invoice resource_name. */
                        public resource_name: string;

                        /** Invoice id. */
                        public id?: (string|null);

                        /** Invoice type. */
                        public type: (google.ads.googleads.v23.enums.InvoiceTypeEnum.InvoiceType|keyof typeof google.ads.googleads.v23.enums.InvoiceTypeEnum.InvoiceType);

                        /** Invoice billing_setup. */
                        public billing_setup?: (string|null);

                        /** Invoice payments_account_id. */
                        public payments_account_id?: (string|null);

                        /** Invoice payments_profile_id. */
                        public payments_profile_id?: (string|null);

                        /** Invoice issue_date. */
                        public issue_date?: (string|null);

                        /** Invoice due_date. */
                        public due_date?: (string|null);

                        /** Invoice service_date_range. */
                        public service_date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                        /** Invoice currency_code. */
                        public currency_code?: (string|null);

                        /** Invoice adjustments_subtotal_amount_micros. */
                        public adjustments_subtotal_amount_micros: number;

                        /** Invoice adjustments_tax_amount_micros. */
                        public adjustments_tax_amount_micros: number;

                        /** Invoice adjustments_total_amount_micros. */
                        public adjustments_total_amount_micros: number;

                        /** Invoice regulatory_costs_subtotal_amount_micros. */
                        public regulatory_costs_subtotal_amount_micros: number;

                        /** Invoice regulatory_costs_tax_amount_micros. */
                        public regulatory_costs_tax_amount_micros: number;

                        /** Invoice regulatory_costs_total_amount_micros. */
                        public regulatory_costs_total_amount_micros: number;

                        /** Invoice export_charge_subtotal_amount_micros. */
                        public export_charge_subtotal_amount_micros?: (number|null);

                        /** Invoice export_charge_tax_amount_micros. */
                        public export_charge_tax_amount_micros?: (number|null);

                        /** Invoice export_charge_total_amount_micros. */
                        public export_charge_total_amount_micros?: (number|null);

                        /** Invoice subtotal_amount_micros. */
                        public subtotal_amount_micros?: (number|null);

                        /** Invoice tax_amount_micros. */
                        public tax_amount_micros?: (number|null);

                        /** Invoice total_amount_micros. */
                        public total_amount_micros?: (number|null);

                        /** Invoice corrected_invoice. */
                        public corrected_invoice?: (string|null);

                        /** Invoice replaced_invoices. */
                        public replaced_invoices: string[];

                        /** Invoice pdf_url. */
                        public pdf_url?: (string|null);

                        /** Invoice account_budget_summaries. */
                        public account_budget_summaries: google.ads.googleads.v23.resources.Invoice.IAccountBudgetSummary[];

                        /** Invoice account_summaries. */
                        public account_summaries: google.ads.googleads.v23.resources.Invoice.IAccountSummary[];

                        /**
                         * Creates a new Invoice instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Invoice instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IInvoice): google.ads.googleads.v23.resources.Invoice;

                        /**
                         * Encodes the specified Invoice message. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.verify|verify} messages.
                         * @param message Invoice message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IInvoice, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Invoice message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.verify|verify} messages.
                         * @param message Invoice message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IInvoice, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Invoice message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Invoice
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Invoice;

                        /**
                         * Decodes an Invoice message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Invoice
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Invoice;

                        /**
                         * Verifies an Invoice message.
                         * @param message Plain 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 Invoice message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Invoice
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Invoice;

                        /**
                         * Creates a plain object from an Invoice message. Also converts values to other types if specified.
                         * @param message Invoice
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Invoice, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Invoice to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Invoice
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Invoice {

                        /** Properties of an AccountSummary. */
                        interface IAccountSummary {

                            /** AccountSummary customer */
                            customer?: (string|null);

                            /** AccountSummary billing_correction_subtotal_amount_micros */
                            billing_correction_subtotal_amount_micros?: (number|null);

                            /** AccountSummary billing_correction_tax_amount_micros */
                            billing_correction_tax_amount_micros?: (number|null);

                            /** AccountSummary billing_correction_total_amount_micros */
                            billing_correction_total_amount_micros?: (number|null);

                            /** AccountSummary coupon_adjustment_subtotal_amount_micros */
                            coupon_adjustment_subtotal_amount_micros?: (number|null);

                            /** AccountSummary coupon_adjustment_tax_amount_micros */
                            coupon_adjustment_tax_amount_micros?: (number|null);

                            /** AccountSummary coupon_adjustment_total_amount_micros */
                            coupon_adjustment_total_amount_micros?: (number|null);

                            /** AccountSummary excess_credit_adjustment_subtotal_amount_micros */
                            excess_credit_adjustment_subtotal_amount_micros?: (number|null);

                            /** AccountSummary excess_credit_adjustment_tax_amount_micros */
                            excess_credit_adjustment_tax_amount_micros?: (number|null);

                            /** AccountSummary excess_credit_adjustment_total_amount_micros */
                            excess_credit_adjustment_total_amount_micros?: (number|null);

                            /** AccountSummary regulatory_costs_subtotal_amount_micros */
                            regulatory_costs_subtotal_amount_micros?: (number|null);

                            /** AccountSummary regulatory_costs_tax_amount_micros */
                            regulatory_costs_tax_amount_micros?: (number|null);

                            /** AccountSummary regulatory_costs_total_amount_micros */
                            regulatory_costs_total_amount_micros?: (number|null);

                            /** AccountSummary export_charge_subtotal_amount_micros */
                            export_charge_subtotal_amount_micros?: (number|null);

                            /** AccountSummary export_charge_tax_amount_micros */
                            export_charge_tax_amount_micros?: (number|null);

                            /** AccountSummary export_charge_total_amount_micros */
                            export_charge_total_amount_micros?: (number|null);

                            /** AccountSummary subtotal_amount_micros */
                            subtotal_amount_micros?: (number|null);

                            /** AccountSummary tax_amount_micros */
                            tax_amount_micros?: (number|null);

                            /** AccountSummary total_amount_micros */
                            total_amount_micros?: (number|null);

                            /** AccountSummary regulatory_cost_summaries */
                            regulatory_cost_summaries?: (google.ads.googleads.v23.resources.Invoice.IRegulatoryCostSummary[]|null);

                            /** AccountSummary adjustment_summaries */
                            adjustment_summaries?: (google.ads.googleads.v23.resources.Invoice.IAdjustmentSummary[]|null);
                        }

                        /** Represents an AccountSummary. */
                        class AccountSummary implements IAccountSummary {

                            /**
                             * Constructs a new AccountSummary.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Invoice.IAccountSummary);

                            /** AccountSummary customer. */
                            public customer?: (string|null);

                            /** AccountSummary billing_correction_subtotal_amount_micros. */
                            public billing_correction_subtotal_amount_micros?: (number|null);

                            /** AccountSummary billing_correction_tax_amount_micros. */
                            public billing_correction_tax_amount_micros?: (number|null);

                            /** AccountSummary billing_correction_total_amount_micros. */
                            public billing_correction_total_amount_micros?: (number|null);

                            /** AccountSummary coupon_adjustment_subtotal_amount_micros. */
                            public coupon_adjustment_subtotal_amount_micros?: (number|null);

                            /** AccountSummary coupon_adjustment_tax_amount_micros. */
                            public coupon_adjustment_tax_amount_micros?: (number|null);

                            /** AccountSummary coupon_adjustment_total_amount_micros. */
                            public coupon_adjustment_total_amount_micros?: (number|null);

                            /** AccountSummary excess_credit_adjustment_subtotal_amount_micros. */
                            public excess_credit_adjustment_subtotal_amount_micros?: (number|null);

                            /** AccountSummary excess_credit_adjustment_tax_amount_micros. */
                            public excess_credit_adjustment_tax_amount_micros?: (number|null);

                            /** AccountSummary excess_credit_adjustment_total_amount_micros. */
                            public excess_credit_adjustment_total_amount_micros?: (number|null);

                            /** AccountSummary regulatory_costs_subtotal_amount_micros. */
                            public regulatory_costs_subtotal_amount_micros?: (number|null);

                            /** AccountSummary regulatory_costs_tax_amount_micros. */
                            public regulatory_costs_tax_amount_micros?: (number|null);

                            /** AccountSummary regulatory_costs_total_amount_micros. */
                            public regulatory_costs_total_amount_micros?: (number|null);

                            /** AccountSummary export_charge_subtotal_amount_micros. */
                            public export_charge_subtotal_amount_micros?: (number|null);

                            /** AccountSummary export_charge_tax_amount_micros. */
                            public export_charge_tax_amount_micros?: (number|null);

                            /** AccountSummary export_charge_total_amount_micros. */
                            public export_charge_total_amount_micros?: (number|null);

                            /** AccountSummary subtotal_amount_micros. */
                            public subtotal_amount_micros?: (number|null);

                            /** AccountSummary tax_amount_micros. */
                            public tax_amount_micros?: (number|null);

                            /** AccountSummary total_amount_micros. */
                            public total_amount_micros?: (number|null);

                            /** AccountSummary regulatory_cost_summaries. */
                            public regulatory_cost_summaries: google.ads.googleads.v23.resources.Invoice.IRegulatoryCostSummary[];

                            /** AccountSummary adjustment_summaries. */
                            public adjustment_summaries: google.ads.googleads.v23.resources.Invoice.IAdjustmentSummary[];

                            /**
                             * Creates a new AccountSummary instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AccountSummary instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Invoice.IAccountSummary): google.ads.googleads.v23.resources.Invoice.AccountSummary;

                            /**
                             * Encodes the specified AccountSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.AccountSummary.verify|verify} messages.
                             * @param message AccountSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Invoice.IAccountSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AccountSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.AccountSummary.verify|verify} messages.
                             * @param message AccountSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Invoice.IAccountSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AccountSummary message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AccountSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Invoice.AccountSummary;

                            /**
                             * Decodes an AccountSummary message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AccountSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Invoice.AccountSummary;

                            /**
                             * Verifies an AccountSummary message.
                             * @param message Plain 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 AccountSummary message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AccountSummary
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Invoice.AccountSummary;

                            /**
                             * Creates a plain object from an AccountSummary message. Also converts values to other types if specified.
                             * @param message AccountSummary
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Invoice.AccountSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AccountSummary to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AccountSummary
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AccountBudgetSummary. */
                        interface IAccountBudgetSummary {

                            /** AccountBudgetSummary customer */
                            customer?: (string|null);

                            /** AccountBudgetSummary customer_descriptive_name */
                            customer_descriptive_name?: (string|null);

                            /** AccountBudgetSummary account_budget */
                            account_budget?: (string|null);

                            /** AccountBudgetSummary account_budget_name */
                            account_budget_name?: (string|null);

                            /** AccountBudgetSummary purchase_order_number */
                            purchase_order_number?: (string|null);

                            /** AccountBudgetSummary subtotal_amount_micros */
                            subtotal_amount_micros?: (number|null);

                            /** AccountBudgetSummary tax_amount_micros */
                            tax_amount_micros?: (number|null);

                            /** AccountBudgetSummary total_amount_micros */
                            total_amount_micros?: (number|null);

                            /** AccountBudgetSummary billable_activity_date_range */
                            billable_activity_date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                            /** AccountBudgetSummary served_amount_micros */
                            served_amount_micros?: (number|null);

                            /** AccountBudgetSummary billed_amount_micros */
                            billed_amount_micros?: (number|null);

                            /** AccountBudgetSummary overdelivery_amount_micros */
                            overdelivery_amount_micros?: (number|null);

                            /** AccountBudgetSummary invalid_activity_amount_micros */
                            invalid_activity_amount_micros?: (number|null);

                            /** AccountBudgetSummary invalid_activity_summaries */
                            invalid_activity_summaries?: (google.ads.googleads.v23.resources.Invoice.IInvalidActivitySummary[]|null);

                            /** AccountBudgetSummary campaign_summaries */
                            campaign_summaries?: (google.ads.googleads.v23.resources.Invoice.ICampaignSummary[]|null);
                        }

                        /** Represents an AccountBudgetSummary. */
                        class AccountBudgetSummary implements IAccountBudgetSummary {

                            /**
                             * Constructs a new AccountBudgetSummary.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Invoice.IAccountBudgetSummary);

                            /** AccountBudgetSummary customer. */
                            public customer?: (string|null);

                            /** AccountBudgetSummary customer_descriptive_name. */
                            public customer_descriptive_name?: (string|null);

                            /** AccountBudgetSummary account_budget. */
                            public account_budget?: (string|null);

                            /** AccountBudgetSummary account_budget_name. */
                            public account_budget_name?: (string|null);

                            /** AccountBudgetSummary purchase_order_number. */
                            public purchase_order_number?: (string|null);

                            /** AccountBudgetSummary subtotal_amount_micros. */
                            public subtotal_amount_micros?: (number|null);

                            /** AccountBudgetSummary tax_amount_micros. */
                            public tax_amount_micros?: (number|null);

                            /** AccountBudgetSummary total_amount_micros. */
                            public total_amount_micros?: (number|null);

                            /** AccountBudgetSummary billable_activity_date_range. */
                            public billable_activity_date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                            /** AccountBudgetSummary served_amount_micros. */
                            public served_amount_micros?: (number|null);

                            /** AccountBudgetSummary billed_amount_micros. */
                            public billed_amount_micros?: (number|null);

                            /** AccountBudgetSummary overdelivery_amount_micros. */
                            public overdelivery_amount_micros?: (number|null);

                            /** AccountBudgetSummary invalid_activity_amount_micros. */
                            public invalid_activity_amount_micros?: (number|null);

                            /** AccountBudgetSummary invalid_activity_summaries. */
                            public invalid_activity_summaries: google.ads.googleads.v23.resources.Invoice.IInvalidActivitySummary[];

                            /** AccountBudgetSummary campaign_summaries. */
                            public campaign_summaries: google.ads.googleads.v23.resources.Invoice.ICampaignSummary[];

                            /**
                             * Creates a new AccountBudgetSummary instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AccountBudgetSummary instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Invoice.IAccountBudgetSummary): google.ads.googleads.v23.resources.Invoice.AccountBudgetSummary;

                            /**
                             * Encodes the specified AccountBudgetSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.AccountBudgetSummary.verify|verify} messages.
                             * @param message AccountBudgetSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Invoice.IAccountBudgetSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AccountBudgetSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.AccountBudgetSummary.verify|verify} messages.
                             * @param message AccountBudgetSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Invoice.IAccountBudgetSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AccountBudgetSummary message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AccountBudgetSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Invoice.AccountBudgetSummary;

                            /**
                             * Decodes an AccountBudgetSummary message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AccountBudgetSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Invoice.AccountBudgetSummary;

                            /**
                             * Verifies an AccountBudgetSummary message.
                             * @param message Plain 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 AccountBudgetSummary message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AccountBudgetSummary
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Invoice.AccountBudgetSummary;

                            /**
                             * Creates a plain object from an AccountBudgetSummary message. Also converts values to other types if specified.
                             * @param message AccountBudgetSummary
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Invoice.AccountBudgetSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AccountBudgetSummary to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AccountBudgetSummary
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an InvalidActivitySummary. */
                        interface IInvalidActivitySummary {

                            /** InvalidActivitySummary original_month_of_service */
                            original_month_of_service?: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|null);

                            /** InvalidActivitySummary original_year_of_service */
                            original_year_of_service?: (string|null);

                            /** InvalidActivitySummary original_invoice_id */
                            original_invoice_id?: (string|null);

                            /** InvalidActivitySummary original_account_budget_name */
                            original_account_budget_name?: (string|null);

                            /** InvalidActivitySummary original_purchase_order_number */
                            original_purchase_order_number?: (string|null);

                            /** InvalidActivitySummary amount_micros */
                            amount_micros?: (number|null);
                        }

                        /** Represents an InvalidActivitySummary. */
                        class InvalidActivitySummary implements IInvalidActivitySummary {

                            /**
                             * Constructs a new InvalidActivitySummary.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Invoice.IInvalidActivitySummary);

                            /** InvalidActivitySummary original_month_of_service. */
                            public original_month_of_service?: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|null);

                            /** InvalidActivitySummary original_year_of_service. */
                            public original_year_of_service?: (string|null);

                            /** InvalidActivitySummary original_invoice_id. */
                            public original_invoice_id?: (string|null);

                            /** InvalidActivitySummary original_account_budget_name. */
                            public original_account_budget_name?: (string|null);

                            /** InvalidActivitySummary original_purchase_order_number. */
                            public original_purchase_order_number?: (string|null);

                            /** InvalidActivitySummary amount_micros. */
                            public amount_micros?: (number|null);

                            /**
                             * Creates a new InvalidActivitySummary instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns InvalidActivitySummary instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Invoice.IInvalidActivitySummary): google.ads.googleads.v23.resources.Invoice.InvalidActivitySummary;

                            /**
                             * Encodes the specified InvalidActivitySummary message. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.InvalidActivitySummary.verify|verify} messages.
                             * @param message InvalidActivitySummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Invoice.IInvalidActivitySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified InvalidActivitySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.InvalidActivitySummary.verify|verify} messages.
                             * @param message InvalidActivitySummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Invoice.IInvalidActivitySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an InvalidActivitySummary message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns InvalidActivitySummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Invoice.InvalidActivitySummary;

                            /**
                             * Decodes an InvalidActivitySummary message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns InvalidActivitySummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Invoice.InvalidActivitySummary;

                            /**
                             * Verifies an InvalidActivitySummary message.
                             * @param message Plain 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 InvalidActivitySummary message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns InvalidActivitySummary
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Invoice.InvalidActivitySummary;

                            /**
                             * Creates a plain object from an InvalidActivitySummary message. Also converts values to other types if specified.
                             * @param message InvalidActivitySummary
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Invoice.InvalidActivitySummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this InvalidActivitySummary to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for InvalidActivitySummary
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CampaignSummary. */
                        interface ICampaignSummary {

                            /** CampaignSummary campaign_description */
                            campaign_description?: (string|null);

                            /** CampaignSummary quantity */
                            quantity?: (number|null);

                            /** CampaignSummary unit_of_measure */
                            unit_of_measure?: (google.ads.googleads.v23.enums.UnitOfMeasureEnum.UnitOfMeasure|keyof typeof google.ads.googleads.v23.enums.UnitOfMeasureEnum.UnitOfMeasure|null);

                            /** CampaignSummary amount_micros */
                            amount_micros?: (number|null);
                        }

                        /** Represents a CampaignSummary. */
                        class CampaignSummary implements ICampaignSummary {

                            /**
                             * Constructs a new CampaignSummary.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Invoice.ICampaignSummary);

                            /** CampaignSummary campaign_description. */
                            public campaign_description?: (string|null);

                            /** CampaignSummary quantity. */
                            public quantity?: (number|null);

                            /** CampaignSummary unit_of_measure. */
                            public unit_of_measure?: (google.ads.googleads.v23.enums.UnitOfMeasureEnum.UnitOfMeasure|keyof typeof google.ads.googleads.v23.enums.UnitOfMeasureEnum.UnitOfMeasure|null);

                            /** CampaignSummary amount_micros. */
                            public amount_micros?: (number|null);

                            /**
                             * Creates a new CampaignSummary instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignSummary instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Invoice.ICampaignSummary): google.ads.googleads.v23.resources.Invoice.CampaignSummary;

                            /**
                             * Encodes the specified CampaignSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.CampaignSummary.verify|verify} messages.
                             * @param message CampaignSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Invoice.ICampaignSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.CampaignSummary.verify|verify} messages.
                             * @param message CampaignSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Invoice.ICampaignSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignSummary message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CampaignSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Invoice.CampaignSummary;

                            /**
                             * Decodes a CampaignSummary message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CampaignSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Invoice.CampaignSummary;

                            /**
                             * Verifies a CampaignSummary message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignSummary message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CampaignSummary
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Invoice.CampaignSummary;

                            /**
                             * Creates a plain object from a CampaignSummary message. Also converts values to other types if specified.
                             * @param message CampaignSummary
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Invoice.CampaignSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignSummary to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CampaignSummary
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RegulatoryCostSummary. */
                        interface IRegulatoryCostSummary {

                            /** RegulatoryCostSummary regulatory_fee_type */
                            regulatory_fee_type?: (google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum.RegulatoryFeeType|keyof typeof google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum.RegulatoryFeeType|null);

                            /** RegulatoryCostSummary amount_micros */
                            amount_micros?: (number|null);
                        }

                        /** Represents a RegulatoryCostSummary. */
                        class RegulatoryCostSummary implements IRegulatoryCostSummary {

                            /**
                             * Constructs a new RegulatoryCostSummary.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Invoice.IRegulatoryCostSummary);

                            /** RegulatoryCostSummary regulatory_fee_type. */
                            public regulatory_fee_type?: (google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum.RegulatoryFeeType|keyof typeof google.ads.googleads.v23.enums.RegulatoryFeeTypeEnum.RegulatoryFeeType|null);

                            /** RegulatoryCostSummary amount_micros. */
                            public amount_micros?: (number|null);

                            /**
                             * Creates a new RegulatoryCostSummary instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RegulatoryCostSummary instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Invoice.IRegulatoryCostSummary): google.ads.googleads.v23.resources.Invoice.RegulatoryCostSummary;

                            /**
                             * Encodes the specified RegulatoryCostSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.RegulatoryCostSummary.verify|verify} messages.
                             * @param message RegulatoryCostSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Invoice.IRegulatoryCostSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RegulatoryCostSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.RegulatoryCostSummary.verify|verify} messages.
                             * @param message RegulatoryCostSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Invoice.IRegulatoryCostSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RegulatoryCostSummary message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RegulatoryCostSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Invoice.RegulatoryCostSummary;

                            /**
                             * Decodes a RegulatoryCostSummary message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RegulatoryCostSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Invoice.RegulatoryCostSummary;

                            /**
                             * Verifies a RegulatoryCostSummary message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RegulatoryCostSummary message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RegulatoryCostSummary
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Invoice.RegulatoryCostSummary;

                            /**
                             * Creates a plain object from a RegulatoryCostSummary message. Also converts values to other types if specified.
                             * @param message RegulatoryCostSummary
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Invoice.RegulatoryCostSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RegulatoryCostSummary to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RegulatoryCostSummary
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AdjustmentSummary. */
                        interface IAdjustmentSummary {

                            /** AdjustmentSummary adjustment_description */
                            adjustment_description?: (string|null);

                            /** AdjustmentSummary amount_micros */
                            amount_micros?: (number|null);
                        }

                        /** Represents an AdjustmentSummary. */
                        class AdjustmentSummary implements IAdjustmentSummary {

                            /**
                             * Constructs a new AdjustmentSummary.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Invoice.IAdjustmentSummary);

                            /** AdjustmentSummary adjustment_description. */
                            public adjustment_description?: (string|null);

                            /** AdjustmentSummary amount_micros. */
                            public amount_micros?: (number|null);

                            /**
                             * Creates a new AdjustmentSummary instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdjustmentSummary instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Invoice.IAdjustmentSummary): google.ads.googleads.v23.resources.Invoice.AdjustmentSummary;

                            /**
                             * Encodes the specified AdjustmentSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.AdjustmentSummary.verify|verify} messages.
                             * @param message AdjustmentSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Invoice.IAdjustmentSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdjustmentSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Invoice.AdjustmentSummary.verify|verify} messages.
                             * @param message AdjustmentSummary message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Invoice.IAdjustmentSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdjustmentSummary message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdjustmentSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Invoice.AdjustmentSummary;

                            /**
                             * Decodes an AdjustmentSummary message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdjustmentSummary
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Invoice.AdjustmentSummary;

                            /**
                             * Verifies an AdjustmentSummary message.
                             * @param message Plain 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 AdjustmentSummary message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdjustmentSummary
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Invoice.AdjustmentSummary;

                            /**
                             * Creates a plain object from an AdjustmentSummary message. Also converts values to other types if specified.
                             * @param message AdjustmentSummary
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Invoice.AdjustmentSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdjustmentSummary to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdjustmentSummary
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a KeywordPlan. */
                    interface IKeywordPlan {

                        /** KeywordPlan resource_name */
                        resource_name?: (string|null);

                        /** KeywordPlan id */
                        id?: (number|null);

                        /** KeywordPlan name */
                        name?: (string|null);

                        /** KeywordPlan forecast_period */
                        forecast_period?: (google.ads.googleads.v23.resources.IKeywordPlanForecastPeriod|null);
                    }

                    /** Represents a KeywordPlan. */
                    class KeywordPlan implements IKeywordPlan {

                        /**
                         * Constructs a new KeywordPlan.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordPlan);

                        /** KeywordPlan resource_name. */
                        public resource_name: string;

                        /** KeywordPlan id. */
                        public id?: (number|null);

                        /** KeywordPlan name. */
                        public name?: (string|null);

                        /** KeywordPlan forecast_period. */
                        public forecast_period?: (google.ads.googleads.v23.resources.IKeywordPlanForecastPeriod|null);

                        /**
                         * Creates a new KeywordPlan instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlan instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordPlan): google.ads.googleads.v23.resources.KeywordPlan;

                        /**
                         * Encodes the specified KeywordPlan message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlan.verify|verify} messages.
                         * @param message KeywordPlan message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordPlan, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlan message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlan.verify|verify} messages.
                         * @param message KeywordPlan message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordPlan, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlan message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlan
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordPlan;

                        /**
                         * Decodes a KeywordPlan message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlan
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordPlan;

                        /**
                         * Verifies a KeywordPlan message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlan message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlan
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordPlan;

                        /**
                         * Creates a plain object from a KeywordPlan message. Also converts values to other types if specified.
                         * @param message KeywordPlan
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordPlan, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlan to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlan
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanForecastPeriod. */
                    interface IKeywordPlanForecastPeriod {

                        /** KeywordPlanForecastPeriod date_interval */
                        date_interval?: (google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|keyof typeof google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|null);

                        /** KeywordPlanForecastPeriod date_range */
                        date_range?: (google.ads.googleads.v23.common.IDateRange|null);
                    }

                    /** Represents a KeywordPlanForecastPeriod. */
                    class KeywordPlanForecastPeriod implements IKeywordPlanForecastPeriod {

                        /**
                         * Constructs a new KeywordPlanForecastPeriod.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordPlanForecastPeriod);

                        /** KeywordPlanForecastPeriod date_interval. */
                        public date_interval?: (google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|keyof typeof google.ads.googleads.v23.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|null);

                        /** KeywordPlanForecastPeriod date_range. */
                        public date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                        /** KeywordPlanForecastPeriod interval. */
                        public interval?: ("date_interval"|"date_range");

                        /**
                         * Creates a new KeywordPlanForecastPeriod instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanForecastPeriod instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordPlanForecastPeriod): google.ads.googleads.v23.resources.KeywordPlanForecastPeriod;

                        /**
                         * Encodes the specified KeywordPlanForecastPeriod message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanForecastPeriod.verify|verify} messages.
                         * @param message KeywordPlanForecastPeriod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordPlanForecastPeriod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanForecastPeriod message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanForecastPeriod.verify|verify} messages.
                         * @param message KeywordPlanForecastPeriod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordPlanForecastPeriod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanForecastPeriod message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanForecastPeriod
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordPlanForecastPeriod;

                        /**
                         * Decodes a KeywordPlanForecastPeriod message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanForecastPeriod
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordPlanForecastPeriod;

                        /**
                         * Verifies a KeywordPlanForecastPeriod message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanForecastPeriod message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanForecastPeriod
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordPlanForecastPeriod;

                        /**
                         * Creates a plain object from a KeywordPlanForecastPeriod message. Also converts values to other types if specified.
                         * @param message KeywordPlanForecastPeriod
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordPlanForecastPeriod, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanForecastPeriod to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanForecastPeriod
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanAdGroup. */
                    interface IKeywordPlanAdGroup {

                        /** KeywordPlanAdGroup resource_name */
                        resource_name?: (string|null);

                        /** KeywordPlanAdGroup keyword_plan_campaign */
                        keyword_plan_campaign?: (string|null);

                        /** KeywordPlanAdGroup id */
                        id?: (number|null);

                        /** KeywordPlanAdGroup name */
                        name?: (string|null);

                        /** KeywordPlanAdGroup cpc_bid_micros */
                        cpc_bid_micros?: (number|null);
                    }

                    /** Represents a KeywordPlanAdGroup. */
                    class KeywordPlanAdGroup implements IKeywordPlanAdGroup {

                        /**
                         * Constructs a new KeywordPlanAdGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordPlanAdGroup);

                        /** KeywordPlanAdGroup resource_name. */
                        public resource_name: string;

                        /** KeywordPlanAdGroup keyword_plan_campaign. */
                        public keyword_plan_campaign?: (string|null);

                        /** KeywordPlanAdGroup id. */
                        public id?: (number|null);

                        /** KeywordPlanAdGroup name. */
                        public name?: (string|null);

                        /** KeywordPlanAdGroup cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /**
                         * Creates a new KeywordPlanAdGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordPlanAdGroup): google.ads.googleads.v23.resources.KeywordPlanAdGroup;

                        /**
                         * Encodes the specified KeywordPlanAdGroup message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanAdGroup.verify|verify} messages.
                         * @param message KeywordPlanAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordPlanAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanAdGroup.verify|verify} messages.
                         * @param message KeywordPlanAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordPlanAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordPlanAdGroup;

                        /**
                         * Decodes a KeywordPlanAdGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordPlanAdGroup;

                        /**
                         * Verifies a KeywordPlanAdGroup message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAdGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordPlanAdGroup;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroup message. Also converts values to other types if specified.
                         * @param message KeywordPlanAdGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordPlanAdGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAdGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanAdGroupKeyword. */
                    interface IKeywordPlanAdGroupKeyword {

                        /** KeywordPlanAdGroupKeyword resource_name */
                        resource_name?: (string|null);

                        /** KeywordPlanAdGroupKeyword keyword_plan_ad_group */
                        keyword_plan_ad_group?: (string|null);

                        /** KeywordPlanAdGroupKeyword id */
                        id?: (number|null);

                        /** KeywordPlanAdGroupKeyword text */
                        text?: (string|null);

                        /** KeywordPlanAdGroupKeyword match_type */
                        match_type?: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|null);

                        /** KeywordPlanAdGroupKeyword cpc_bid_micros */
                        cpc_bid_micros?: (number|null);

                        /** KeywordPlanAdGroupKeyword negative */
                        negative?: (boolean|null);
                    }

                    /** Represents a KeywordPlanAdGroupKeyword. */
                    class KeywordPlanAdGroupKeyword implements IKeywordPlanAdGroupKeyword {

                        /**
                         * Constructs a new KeywordPlanAdGroupKeyword.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword);

                        /** KeywordPlanAdGroupKeyword resource_name. */
                        public resource_name: string;

                        /** KeywordPlanAdGroupKeyword keyword_plan_ad_group. */
                        public keyword_plan_ad_group?: (string|null);

                        /** KeywordPlanAdGroupKeyword id. */
                        public id?: (number|null);

                        /** KeywordPlanAdGroupKeyword text. */
                        public text?: (string|null);

                        /** KeywordPlanAdGroupKeyword match_type. */
                        public match_type: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType);

                        /** KeywordPlanAdGroupKeyword cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /** KeywordPlanAdGroupKeyword negative. */
                        public negative?: (boolean|null);

                        /**
                         * Creates a new KeywordPlanAdGroupKeyword instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroupKeyword instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword): google.ads.googleads.v23.resources.KeywordPlanAdGroupKeyword;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeyword message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanAdGroupKeyword.verify|verify} messages.
                         * @param message KeywordPlanAdGroupKeyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeyword message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanAdGroupKeyword.verify|verify} messages.
                         * @param message KeywordPlanAdGroupKeyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupKeyword message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAdGroupKeyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordPlanAdGroupKeyword;

                        /**
                         * Decodes a KeywordPlanAdGroupKeyword message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAdGroupKeyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordPlanAdGroupKeyword;

                        /**
                         * Verifies a KeywordPlanAdGroupKeyword message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupKeyword message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAdGroupKeyword
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordPlanAdGroupKeyword;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupKeyword message. Also converts values to other types if specified.
                         * @param message KeywordPlanAdGroupKeyword
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordPlanAdGroupKeyword, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupKeyword to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAdGroupKeyword
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanCampaign. */
                    interface IKeywordPlanCampaign {

                        /** KeywordPlanCampaign resource_name */
                        resource_name?: (string|null);

                        /** KeywordPlanCampaign keyword_plan */
                        keyword_plan?: (string|null);

                        /** KeywordPlanCampaign id */
                        id?: (number|null);

                        /** KeywordPlanCampaign name */
                        name?: (string|null);

                        /** KeywordPlanCampaign language_constants */
                        language_constants?: (string[]|null);

                        /** KeywordPlanCampaign keyword_plan_network */
                        keyword_plan_network?: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|null);

                        /** KeywordPlanCampaign cpc_bid_micros */
                        cpc_bid_micros?: (number|null);

                        /** KeywordPlanCampaign geo_targets */
                        geo_targets?: (google.ads.googleads.v23.resources.IKeywordPlanGeoTarget[]|null);
                    }

                    /** Represents a KeywordPlanCampaign. */
                    class KeywordPlanCampaign implements IKeywordPlanCampaign {

                        /**
                         * Constructs a new KeywordPlanCampaign.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordPlanCampaign);

                        /** KeywordPlanCampaign resource_name. */
                        public resource_name: string;

                        /** KeywordPlanCampaign keyword_plan. */
                        public keyword_plan?: (string|null);

                        /** KeywordPlanCampaign id. */
                        public id?: (number|null);

                        /** KeywordPlanCampaign name. */
                        public name?: (string|null);

                        /** KeywordPlanCampaign language_constants. */
                        public language_constants: string[];

                        /** KeywordPlanCampaign keyword_plan_network. */
                        public keyword_plan_network: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork);

                        /** KeywordPlanCampaign cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /** KeywordPlanCampaign geo_targets. */
                        public geo_targets: google.ads.googleads.v23.resources.IKeywordPlanGeoTarget[];

                        /**
                         * Creates a new KeywordPlanCampaign instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaign instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordPlanCampaign): google.ads.googleads.v23.resources.KeywordPlanCampaign;

                        /**
                         * Encodes the specified KeywordPlanCampaign message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanCampaign.verify|verify} messages.
                         * @param message KeywordPlanCampaign message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordPlanCampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaign message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanCampaign.verify|verify} messages.
                         * @param message KeywordPlanCampaign message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordPlanCampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaign message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanCampaign
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordPlanCampaign;

                        /**
                         * Decodes a KeywordPlanCampaign message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaign
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordPlanCampaign;

                        /**
                         * Verifies a KeywordPlanCampaign message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaign message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanCampaign
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordPlanCampaign;

                        /**
                         * Creates a plain object from a KeywordPlanCampaign message. Also converts values to other types if specified.
                         * @param message KeywordPlanCampaign
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordPlanCampaign, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaign to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanCampaign
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanGeoTarget. */
                    interface IKeywordPlanGeoTarget {

                        /** KeywordPlanGeoTarget geo_target_constant */
                        geo_target_constant?: (string|null);
                    }

                    /** Represents a KeywordPlanGeoTarget. */
                    class KeywordPlanGeoTarget implements IKeywordPlanGeoTarget {

                        /**
                         * Constructs a new KeywordPlanGeoTarget.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordPlanGeoTarget);

                        /** KeywordPlanGeoTarget geo_target_constant. */
                        public geo_target_constant?: (string|null);

                        /**
                         * Creates a new KeywordPlanGeoTarget instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanGeoTarget instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordPlanGeoTarget): google.ads.googleads.v23.resources.KeywordPlanGeoTarget;

                        /**
                         * Encodes the specified KeywordPlanGeoTarget message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanGeoTarget.verify|verify} messages.
                         * @param message KeywordPlanGeoTarget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordPlanGeoTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanGeoTarget message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanGeoTarget.verify|verify} messages.
                         * @param message KeywordPlanGeoTarget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordPlanGeoTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanGeoTarget message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanGeoTarget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordPlanGeoTarget;

                        /**
                         * Decodes a KeywordPlanGeoTarget message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanGeoTarget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordPlanGeoTarget;

                        /**
                         * Verifies a KeywordPlanGeoTarget message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanGeoTarget message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanGeoTarget
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordPlanGeoTarget;

                        /**
                         * Creates a plain object from a KeywordPlanGeoTarget message. Also converts values to other types if specified.
                         * @param message KeywordPlanGeoTarget
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordPlanGeoTarget, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanGeoTarget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanGeoTarget
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanCampaignKeyword. */
                    interface IKeywordPlanCampaignKeyword {

                        /** KeywordPlanCampaignKeyword resource_name */
                        resource_name?: (string|null);

                        /** KeywordPlanCampaignKeyword keyword_plan_campaign */
                        keyword_plan_campaign?: (string|null);

                        /** KeywordPlanCampaignKeyword id */
                        id?: (number|null);

                        /** KeywordPlanCampaignKeyword text */
                        text?: (string|null);

                        /** KeywordPlanCampaignKeyword match_type */
                        match_type?: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|null);

                        /** KeywordPlanCampaignKeyword negative */
                        negative?: (boolean|null);
                    }

                    /** Represents a KeywordPlanCampaignKeyword. */
                    class KeywordPlanCampaignKeyword implements IKeywordPlanCampaignKeyword {

                        /**
                         * Constructs a new KeywordPlanCampaignKeyword.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword);

                        /** KeywordPlanCampaignKeyword resource_name. */
                        public resource_name: string;

                        /** KeywordPlanCampaignKeyword keyword_plan_campaign. */
                        public keyword_plan_campaign?: (string|null);

                        /** KeywordPlanCampaignKeyword id. */
                        public id?: (number|null);

                        /** KeywordPlanCampaignKeyword text. */
                        public text?: (string|null);

                        /** KeywordPlanCampaignKeyword match_type. */
                        public match_type: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType);

                        /** KeywordPlanCampaignKeyword negative. */
                        public negative?: (boolean|null);

                        /**
                         * Creates a new KeywordPlanCampaignKeyword instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignKeyword instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword): google.ads.googleads.v23.resources.KeywordPlanCampaignKeyword;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeyword message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanCampaignKeyword.verify|verify} messages.
                         * @param message KeywordPlanCampaignKeyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeyword message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordPlanCampaignKeyword.verify|verify} messages.
                         * @param message KeywordPlanCampaignKeyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignKeyword message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanCampaignKeyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordPlanCampaignKeyword;

                        /**
                         * Decodes a KeywordPlanCampaignKeyword message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaignKeyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordPlanCampaignKeyword;

                        /**
                         * Verifies a KeywordPlanCampaignKeyword message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignKeyword message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanCampaignKeyword
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordPlanCampaignKeyword;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignKeyword message. Also converts values to other types if specified.
                         * @param message KeywordPlanCampaignKeyword
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordPlanCampaignKeyword, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignKeyword to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanCampaignKeyword
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordThemeConstant. */
                    interface IKeywordThemeConstant {

                        /** KeywordThemeConstant resource_name */
                        resource_name?: (string|null);

                        /** KeywordThemeConstant country_code */
                        country_code?: (string|null);

                        /** KeywordThemeConstant language_code */
                        language_code?: (string|null);

                        /** KeywordThemeConstant display_name */
                        display_name?: (string|null);
                    }

                    /** Represents a KeywordThemeConstant. */
                    class KeywordThemeConstant implements IKeywordThemeConstant {

                        /**
                         * Constructs a new KeywordThemeConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordThemeConstant);

                        /** KeywordThemeConstant resource_name. */
                        public resource_name: string;

                        /** KeywordThemeConstant country_code. */
                        public country_code?: (string|null);

                        /** KeywordThemeConstant language_code. */
                        public language_code?: (string|null);

                        /** KeywordThemeConstant display_name. */
                        public display_name?: (string|null);

                        /**
                         * Creates a new KeywordThemeConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordThemeConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordThemeConstant): google.ads.googleads.v23.resources.KeywordThemeConstant;

                        /**
                         * Encodes the specified KeywordThemeConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordThemeConstant.verify|verify} messages.
                         * @param message KeywordThemeConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordThemeConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordThemeConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordThemeConstant.verify|verify} messages.
                         * @param message KeywordThemeConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordThemeConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordThemeConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordThemeConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordThemeConstant;

                        /**
                         * Decodes a KeywordThemeConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordThemeConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordThemeConstant;

                        /**
                         * Verifies a KeywordThemeConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordThemeConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordThemeConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordThemeConstant;

                        /**
                         * Creates a plain object from a KeywordThemeConstant message. Also converts values to other types if specified.
                         * @param message KeywordThemeConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordThemeConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordThemeConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordThemeConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordView. */
                    interface IKeywordView {

                        /** KeywordView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a KeywordView. */
                    class KeywordView implements IKeywordView {

                        /**
                         * Constructs a new KeywordView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IKeywordView);

                        /** KeywordView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new KeywordView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IKeywordView): google.ads.googleads.v23.resources.KeywordView;

                        /**
                         * Encodes the specified KeywordView message. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordView.verify|verify} messages.
                         * @param message KeywordView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IKeywordView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.KeywordView.verify|verify} messages.
                         * @param message KeywordView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IKeywordView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.KeywordView;

                        /**
                         * Decodes a KeywordView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.KeywordView;

                        /**
                         * Verifies a KeywordView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.KeywordView;

                        /**
                         * Creates a plain object from a KeywordView message. Also converts values to other types if specified.
                         * @param message KeywordView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.KeywordView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Label. */
                    interface ILabel {

                        /** Label resource_name */
                        resource_name?: (string|null);

                        /** Label id */
                        id?: (number|null);

                        /** Label name */
                        name?: (string|null);

                        /** Label status */
                        status?: (google.ads.googleads.v23.enums.LabelStatusEnum.LabelStatus|keyof typeof google.ads.googleads.v23.enums.LabelStatusEnum.LabelStatus|null);

                        /** Label text_label */
                        text_label?: (google.ads.googleads.v23.common.ITextLabel|null);
                    }

                    /** Represents a Label. */
                    class Label implements ILabel {

                        /**
                         * Constructs a new Label.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILabel);

                        /** Label resource_name. */
                        public resource_name: string;

                        /** Label id. */
                        public id?: (number|null);

                        /** Label name. */
                        public name?: (string|null);

                        /** Label status. */
                        public status: (google.ads.googleads.v23.enums.LabelStatusEnum.LabelStatus|keyof typeof google.ads.googleads.v23.enums.LabelStatusEnum.LabelStatus);

                        /** Label text_label. */
                        public text_label?: (google.ads.googleads.v23.common.ITextLabel|null);

                        /**
                         * Creates a new Label instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Label instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILabel): google.ads.googleads.v23.resources.Label;

                        /**
                         * Encodes the specified Label message. Does not implicitly {@link google.ads.googleads.v23.resources.Label.verify|verify} messages.
                         * @param message Label message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Label message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Label.verify|verify} messages.
                         * @param message Label message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Label message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Label
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Label;

                        /**
                         * Decodes a Label message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Label
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Label;

                        /**
                         * Verifies a Label message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Label message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Label
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Label;

                        /**
                         * Creates a plain object from a Label message. Also converts values to other types if specified.
                         * @param message Label
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Label, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Label to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Label
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LandingPageView. */
                    interface ILandingPageView {

                        /** LandingPageView resource_name */
                        resource_name?: (string|null);

                        /** LandingPageView unexpanded_final_url */
                        unexpanded_final_url?: (string|null);
                    }

                    /** Represents a LandingPageView. */
                    class LandingPageView implements ILandingPageView {

                        /**
                         * Constructs a new LandingPageView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILandingPageView);

                        /** LandingPageView resource_name. */
                        public resource_name: string;

                        /** LandingPageView unexpanded_final_url. */
                        public unexpanded_final_url?: (string|null);

                        /**
                         * Creates a new LandingPageView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LandingPageView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILandingPageView): google.ads.googleads.v23.resources.LandingPageView;

                        /**
                         * Encodes the specified LandingPageView message. Does not implicitly {@link google.ads.googleads.v23.resources.LandingPageView.verify|verify} messages.
                         * @param message LandingPageView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILandingPageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LandingPageView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LandingPageView.verify|verify} messages.
                         * @param message LandingPageView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILandingPageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LandingPageView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LandingPageView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LandingPageView;

                        /**
                         * Decodes a LandingPageView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LandingPageView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LandingPageView;

                        /**
                         * Verifies a LandingPageView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LandingPageView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LandingPageView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LandingPageView;

                        /**
                         * Creates a plain object from a LandingPageView message. Also converts values to other types if specified.
                         * @param message LandingPageView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LandingPageView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LandingPageView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LandingPageView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LanguageConstant. */
                    interface ILanguageConstant {

                        /** LanguageConstant resource_name */
                        resource_name?: (string|null);

                        /** LanguageConstant id */
                        id?: (number|null);

                        /** LanguageConstant code */
                        code?: (string|null);

                        /** LanguageConstant name */
                        name?: (string|null);

                        /** LanguageConstant targetable */
                        targetable?: (boolean|null);
                    }

                    /** Represents a LanguageConstant. */
                    class LanguageConstant implements ILanguageConstant {

                        /**
                         * Constructs a new LanguageConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILanguageConstant);

                        /** LanguageConstant resource_name. */
                        public resource_name: string;

                        /** LanguageConstant id. */
                        public id?: (number|null);

                        /** LanguageConstant code. */
                        public code?: (string|null);

                        /** LanguageConstant name. */
                        public name?: (string|null);

                        /** LanguageConstant targetable. */
                        public targetable?: (boolean|null);

                        /**
                         * Creates a new LanguageConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LanguageConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILanguageConstant): google.ads.googleads.v23.resources.LanguageConstant;

                        /**
                         * Encodes the specified LanguageConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.LanguageConstant.verify|verify} messages.
                         * @param message LanguageConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILanguageConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LanguageConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LanguageConstant.verify|verify} messages.
                         * @param message LanguageConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILanguageConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LanguageConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LanguageConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LanguageConstant;

                        /**
                         * Decodes a LanguageConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LanguageConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LanguageConstant;

                        /**
                         * Verifies a LanguageConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LanguageConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LanguageConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LanguageConstant;

                        /**
                         * Creates a plain object from a LanguageConstant message. Also converts values to other types if specified.
                         * @param message LanguageConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LanguageConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LanguageConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LanguageConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LeadFormSubmissionData. */
                    interface ILeadFormSubmissionData {

                        /** LeadFormSubmissionData resource_name */
                        resource_name?: (string|null);

                        /** LeadFormSubmissionData id */
                        id?: (string|null);

                        /** LeadFormSubmissionData asset */
                        asset?: (string|null);

                        /** LeadFormSubmissionData campaign */
                        campaign?: (string|null);

                        /** LeadFormSubmissionData lead_form_submission_fields */
                        lead_form_submission_fields?: (google.ads.googleads.v23.resources.ILeadFormSubmissionField[]|null);

                        /** LeadFormSubmissionData custom_lead_form_submission_fields */
                        custom_lead_form_submission_fields?: (google.ads.googleads.v23.resources.ICustomLeadFormSubmissionField[]|null);

                        /** LeadFormSubmissionData ad_group */
                        ad_group?: (string|null);

                        /** LeadFormSubmissionData ad_group_ad */
                        ad_group_ad?: (string|null);

                        /** LeadFormSubmissionData gclid */
                        gclid?: (string|null);

                        /** LeadFormSubmissionData submission_date_time */
                        submission_date_time?: (string|null);
                    }

                    /** Represents a LeadFormSubmissionData. */
                    class LeadFormSubmissionData implements ILeadFormSubmissionData {

                        /**
                         * Constructs a new LeadFormSubmissionData.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILeadFormSubmissionData);

                        /** LeadFormSubmissionData resource_name. */
                        public resource_name: string;

                        /** LeadFormSubmissionData id. */
                        public id: string;

                        /** LeadFormSubmissionData asset. */
                        public asset: string;

                        /** LeadFormSubmissionData campaign. */
                        public campaign: string;

                        /** LeadFormSubmissionData lead_form_submission_fields. */
                        public lead_form_submission_fields: google.ads.googleads.v23.resources.ILeadFormSubmissionField[];

                        /** LeadFormSubmissionData custom_lead_form_submission_fields. */
                        public custom_lead_form_submission_fields: google.ads.googleads.v23.resources.ICustomLeadFormSubmissionField[];

                        /** LeadFormSubmissionData ad_group. */
                        public ad_group: string;

                        /** LeadFormSubmissionData ad_group_ad. */
                        public ad_group_ad: string;

                        /** LeadFormSubmissionData gclid. */
                        public gclid: string;

                        /** LeadFormSubmissionData submission_date_time. */
                        public submission_date_time: string;

                        /**
                         * Creates a new LeadFormSubmissionData instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormSubmissionData instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILeadFormSubmissionData): google.ads.googleads.v23.resources.LeadFormSubmissionData;

                        /**
                         * Encodes the specified LeadFormSubmissionData message. Does not implicitly {@link google.ads.googleads.v23.resources.LeadFormSubmissionData.verify|verify} messages.
                         * @param message LeadFormSubmissionData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILeadFormSubmissionData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormSubmissionData message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LeadFormSubmissionData.verify|verify} messages.
                         * @param message LeadFormSubmissionData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILeadFormSubmissionData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormSubmissionData message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LeadFormSubmissionData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LeadFormSubmissionData;

                        /**
                         * Decodes a LeadFormSubmissionData message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LeadFormSubmissionData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LeadFormSubmissionData;

                        /**
                         * Verifies a LeadFormSubmissionData message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormSubmissionData message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LeadFormSubmissionData
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LeadFormSubmissionData;

                        /**
                         * Creates a plain object from a LeadFormSubmissionData message. Also converts values to other types if specified.
                         * @param message LeadFormSubmissionData
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LeadFormSubmissionData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormSubmissionData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LeadFormSubmissionData
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LeadFormSubmissionField. */
                    interface ILeadFormSubmissionField {

                        /** LeadFormSubmissionField field_type */
                        field_type?: (google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|keyof typeof google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|null);

                        /** LeadFormSubmissionField field_value */
                        field_value?: (string|null);
                    }

                    /** Represents a LeadFormSubmissionField. */
                    class LeadFormSubmissionField implements ILeadFormSubmissionField {

                        /**
                         * Constructs a new LeadFormSubmissionField.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILeadFormSubmissionField);

                        /** LeadFormSubmissionField field_type. */
                        public field_type: (google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|keyof typeof google.ads.googleads.v23.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType);

                        /** LeadFormSubmissionField field_value. */
                        public field_value: string;

                        /**
                         * Creates a new LeadFormSubmissionField instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LeadFormSubmissionField instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILeadFormSubmissionField): google.ads.googleads.v23.resources.LeadFormSubmissionField;

                        /**
                         * Encodes the specified LeadFormSubmissionField message. Does not implicitly {@link google.ads.googleads.v23.resources.LeadFormSubmissionField.verify|verify} messages.
                         * @param message LeadFormSubmissionField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILeadFormSubmissionField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormSubmissionField message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LeadFormSubmissionField.verify|verify} messages.
                         * @param message LeadFormSubmissionField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILeadFormSubmissionField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormSubmissionField message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LeadFormSubmissionField
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LeadFormSubmissionField;

                        /**
                         * Decodes a LeadFormSubmissionField message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LeadFormSubmissionField
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LeadFormSubmissionField;

                        /**
                         * Verifies a LeadFormSubmissionField message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormSubmissionField message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LeadFormSubmissionField
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LeadFormSubmissionField;

                        /**
                         * Creates a plain object from a LeadFormSubmissionField message. Also converts values to other types if specified.
                         * @param message LeadFormSubmissionField
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LeadFormSubmissionField, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormSubmissionField to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LeadFormSubmissionField
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomLeadFormSubmissionField. */
                    interface ICustomLeadFormSubmissionField {

                        /** CustomLeadFormSubmissionField question_text */
                        question_text?: (string|null);

                        /** CustomLeadFormSubmissionField field_value */
                        field_value?: (string|null);
                    }

                    /** Represents a CustomLeadFormSubmissionField. */
                    class CustomLeadFormSubmissionField implements ICustomLeadFormSubmissionField {

                        /**
                         * Constructs a new CustomLeadFormSubmissionField.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICustomLeadFormSubmissionField);

                        /** CustomLeadFormSubmissionField question_text. */
                        public question_text: string;

                        /** CustomLeadFormSubmissionField field_value. */
                        public field_value: string;

                        /**
                         * Creates a new CustomLeadFormSubmissionField instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomLeadFormSubmissionField instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICustomLeadFormSubmissionField): google.ads.googleads.v23.resources.CustomLeadFormSubmissionField;

                        /**
                         * Encodes the specified CustomLeadFormSubmissionField message. Does not implicitly {@link google.ads.googleads.v23.resources.CustomLeadFormSubmissionField.verify|verify} messages.
                         * @param message CustomLeadFormSubmissionField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICustomLeadFormSubmissionField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomLeadFormSubmissionField message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CustomLeadFormSubmissionField.verify|verify} messages.
                         * @param message CustomLeadFormSubmissionField message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICustomLeadFormSubmissionField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomLeadFormSubmissionField message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomLeadFormSubmissionField
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CustomLeadFormSubmissionField;

                        /**
                         * Decodes a CustomLeadFormSubmissionField message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomLeadFormSubmissionField
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CustomLeadFormSubmissionField;

                        /**
                         * Verifies a CustomLeadFormSubmissionField message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomLeadFormSubmissionField message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomLeadFormSubmissionField
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CustomLeadFormSubmissionField;

                        /**
                         * Creates a plain object from a CustomLeadFormSubmissionField message. Also converts values to other types if specified.
                         * @param message CustomLeadFormSubmissionField
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CustomLeadFormSubmissionField, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomLeadFormSubmissionField to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomLeadFormSubmissionField
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LifeEvent. */
                    interface ILifeEvent {

                        /** LifeEvent resource_name */
                        resource_name?: (string|null);

                        /** LifeEvent id */
                        id?: (number|null);

                        /** LifeEvent name */
                        name?: (string|null);

                        /** LifeEvent parent */
                        parent?: (string|null);

                        /** LifeEvent launched_to_all */
                        launched_to_all?: (boolean|null);

                        /** LifeEvent availabilities */
                        availabilities?: (google.ads.googleads.v23.common.ICriterionCategoryAvailability[]|null);
                    }

                    /** Represents a LifeEvent. */
                    class LifeEvent implements ILifeEvent {

                        /**
                         * Constructs a new LifeEvent.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILifeEvent);

                        /** LifeEvent resource_name. */
                        public resource_name: string;

                        /** LifeEvent id. */
                        public id: number;

                        /** LifeEvent name. */
                        public name: string;

                        /** LifeEvent parent. */
                        public parent: string;

                        /** LifeEvent launched_to_all. */
                        public launched_to_all: boolean;

                        /** LifeEvent availabilities. */
                        public availabilities: google.ads.googleads.v23.common.ICriterionCategoryAvailability[];

                        /**
                         * Creates a new LifeEvent instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LifeEvent instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILifeEvent): google.ads.googleads.v23.resources.LifeEvent;

                        /**
                         * Encodes the specified LifeEvent message. Does not implicitly {@link google.ads.googleads.v23.resources.LifeEvent.verify|verify} messages.
                         * @param message LifeEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILifeEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LifeEvent message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LifeEvent.verify|verify} messages.
                         * @param message LifeEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILifeEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LifeEvent message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LifeEvent
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LifeEvent;

                        /**
                         * Decodes a LifeEvent message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LifeEvent
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LifeEvent;

                        /**
                         * Verifies a LifeEvent message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LifeEvent message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LifeEvent
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LifeEvent;

                        /**
                         * Creates a plain object from a LifeEvent message. Also converts values to other types if specified.
                         * @param message LifeEvent
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LifeEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LifeEvent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LifeEvent
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocalServicesEmployee. */
                    interface ILocalServicesEmployee {

                        /** LocalServicesEmployee resource_name */
                        resource_name?: (string|null);

                        /** LocalServicesEmployee id */
                        id?: (number|null);

                        /** LocalServicesEmployee creation_date_time */
                        creation_date_time?: (string|null);

                        /** LocalServicesEmployee status */
                        status?: (google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum.LocalServicesEmployeeStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum.LocalServicesEmployeeStatus|null);

                        /** LocalServicesEmployee type */
                        type?: (google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum.LocalServicesEmployeeType|keyof typeof google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum.LocalServicesEmployeeType|null);

                        /** LocalServicesEmployee university_degrees */
                        university_degrees?: (google.ads.googleads.v23.resources.IUniversityDegree[]|null);

                        /** LocalServicesEmployee residencies */
                        residencies?: (google.ads.googleads.v23.resources.IResidency[]|null);

                        /** LocalServicesEmployee fellowships */
                        fellowships?: (google.ads.googleads.v23.resources.IFellowship[]|null);

                        /** LocalServicesEmployee job_title */
                        job_title?: (string|null);

                        /** LocalServicesEmployee year_started_practicing */
                        year_started_practicing?: (number|null);

                        /** LocalServicesEmployee languages_spoken */
                        languages_spoken?: (string[]|null);

                        /** LocalServicesEmployee category_ids */
                        category_ids?: (string[]|null);

                        /** LocalServicesEmployee national_provider_id_number */
                        national_provider_id_number?: (string|null);

                        /** LocalServicesEmployee email_address */
                        email_address?: (string|null);

                        /** LocalServicesEmployee first_name */
                        first_name?: (string|null);

                        /** LocalServicesEmployee middle_name */
                        middle_name?: (string|null);

                        /** LocalServicesEmployee last_name */
                        last_name?: (string|null);
                    }

                    /** Represents a LocalServicesEmployee. */
                    class LocalServicesEmployee implements ILocalServicesEmployee {

                        /**
                         * Constructs a new LocalServicesEmployee.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILocalServicesEmployee);

                        /** LocalServicesEmployee resource_name. */
                        public resource_name: string;

                        /** LocalServicesEmployee id. */
                        public id?: (number|null);

                        /** LocalServicesEmployee creation_date_time. */
                        public creation_date_time: string;

                        /** LocalServicesEmployee status. */
                        public status: (google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum.LocalServicesEmployeeStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesEmployeeStatusEnum.LocalServicesEmployeeStatus);

                        /** LocalServicesEmployee type. */
                        public type: (google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum.LocalServicesEmployeeType|keyof typeof google.ads.googleads.v23.enums.LocalServicesEmployeeTypeEnum.LocalServicesEmployeeType);

                        /** LocalServicesEmployee university_degrees. */
                        public university_degrees: google.ads.googleads.v23.resources.IUniversityDegree[];

                        /** LocalServicesEmployee residencies. */
                        public residencies: google.ads.googleads.v23.resources.IResidency[];

                        /** LocalServicesEmployee fellowships. */
                        public fellowships: google.ads.googleads.v23.resources.IFellowship[];

                        /** LocalServicesEmployee job_title. */
                        public job_title?: (string|null);

                        /** LocalServicesEmployee year_started_practicing. */
                        public year_started_practicing?: (number|null);

                        /** LocalServicesEmployee languages_spoken. */
                        public languages_spoken: string[];

                        /** LocalServicesEmployee category_ids. */
                        public category_ids: string[];

                        /** LocalServicesEmployee national_provider_id_number. */
                        public national_provider_id_number?: (string|null);

                        /** LocalServicesEmployee email_address. */
                        public email_address?: (string|null);

                        /** LocalServicesEmployee first_name. */
                        public first_name?: (string|null);

                        /** LocalServicesEmployee middle_name. */
                        public middle_name?: (string|null);

                        /** LocalServicesEmployee last_name. */
                        public last_name?: (string|null);

                        /**
                         * Creates a new LocalServicesEmployee instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesEmployee instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILocalServicesEmployee): google.ads.googleads.v23.resources.LocalServicesEmployee;

                        /**
                         * Encodes the specified LocalServicesEmployee message. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesEmployee.verify|verify} messages.
                         * @param message LocalServicesEmployee message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILocalServicesEmployee, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesEmployee message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesEmployee.verify|verify} messages.
                         * @param message LocalServicesEmployee message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILocalServicesEmployee, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesEmployee message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesEmployee
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LocalServicesEmployee;

                        /**
                         * Decodes a LocalServicesEmployee message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesEmployee
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LocalServicesEmployee;

                        /**
                         * Verifies a LocalServicesEmployee message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesEmployee message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesEmployee
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LocalServicesEmployee;

                        /**
                         * Creates a plain object from a LocalServicesEmployee message. Also converts values to other types if specified.
                         * @param message LocalServicesEmployee
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LocalServicesEmployee, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesEmployee to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesEmployee
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UniversityDegree. */
                    interface IUniversityDegree {

                        /** UniversityDegree institution_name */
                        institution_name?: (string|null);

                        /** UniversityDegree degree */
                        degree?: (string|null);

                        /** UniversityDegree graduation_year */
                        graduation_year?: (number|null);
                    }

                    /** Represents an UniversityDegree. */
                    class UniversityDegree implements IUniversityDegree {

                        /**
                         * Constructs a new UniversityDegree.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IUniversityDegree);

                        /** UniversityDegree institution_name. */
                        public institution_name?: (string|null);

                        /** UniversityDegree degree. */
                        public degree?: (string|null);

                        /** UniversityDegree graduation_year. */
                        public graduation_year?: (number|null);

                        /**
                         * Creates a new UniversityDegree instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UniversityDegree instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IUniversityDegree): google.ads.googleads.v23.resources.UniversityDegree;

                        /**
                         * Encodes the specified UniversityDegree message. Does not implicitly {@link google.ads.googleads.v23.resources.UniversityDegree.verify|verify} messages.
                         * @param message UniversityDegree message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IUniversityDegree, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UniversityDegree message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.UniversityDegree.verify|verify} messages.
                         * @param message UniversityDegree message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IUniversityDegree, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UniversityDegree message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UniversityDegree
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.UniversityDegree;

                        /**
                         * Decodes an UniversityDegree message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UniversityDegree
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.UniversityDegree;

                        /**
                         * Verifies an UniversityDegree message.
                         * @param message Plain 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 UniversityDegree message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UniversityDegree
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.UniversityDegree;

                        /**
                         * Creates a plain object from an UniversityDegree message. Also converts values to other types if specified.
                         * @param message UniversityDegree
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.UniversityDegree, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UniversityDegree to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UniversityDegree
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Residency. */
                    interface IResidency {

                        /** Residency institution_name */
                        institution_name?: (string|null);

                        /** Residency completion_year */
                        completion_year?: (number|null);
                    }

                    /** Represents a Residency. */
                    class Residency implements IResidency {

                        /**
                         * Constructs a new Residency.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IResidency);

                        /** Residency institution_name. */
                        public institution_name?: (string|null);

                        /** Residency completion_year. */
                        public completion_year?: (number|null);

                        /**
                         * Creates a new Residency instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Residency instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IResidency): google.ads.googleads.v23.resources.Residency;

                        /**
                         * Encodes the specified Residency message. Does not implicitly {@link google.ads.googleads.v23.resources.Residency.verify|verify} messages.
                         * @param message Residency message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IResidency, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Residency message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Residency.verify|verify} messages.
                         * @param message Residency message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IResidency, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Residency message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Residency
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Residency;

                        /**
                         * Decodes a Residency message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Residency
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Residency;

                        /**
                         * Verifies a Residency message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Residency message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Residency
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Residency;

                        /**
                         * Creates a plain object from a Residency message. Also converts values to other types if specified.
                         * @param message Residency
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Residency, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Residency to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Residency
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Fellowship. */
                    interface IFellowship {

                        /** Fellowship institution_name */
                        institution_name?: (string|null);

                        /** Fellowship completion_year */
                        completion_year?: (number|null);
                    }

                    /** Represents a Fellowship. */
                    class Fellowship implements IFellowship {

                        /**
                         * Constructs a new Fellowship.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IFellowship);

                        /** Fellowship institution_name. */
                        public institution_name?: (string|null);

                        /** Fellowship completion_year. */
                        public completion_year?: (number|null);

                        /**
                         * Creates a new Fellowship instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Fellowship instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IFellowship): google.ads.googleads.v23.resources.Fellowship;

                        /**
                         * Encodes the specified Fellowship message. Does not implicitly {@link google.ads.googleads.v23.resources.Fellowship.verify|verify} messages.
                         * @param message Fellowship message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IFellowship, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Fellowship message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Fellowship.verify|verify} messages.
                         * @param message Fellowship message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IFellowship, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Fellowship message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Fellowship
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Fellowship;

                        /**
                         * Decodes a Fellowship message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Fellowship
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Fellowship;

                        /**
                         * Verifies a Fellowship message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Fellowship message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Fellowship
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Fellowship;

                        /**
                         * Creates a plain object from a Fellowship message. Also converts values to other types if specified.
                         * @param message Fellowship
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Fellowship, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Fellowship to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Fellowship
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocalServicesLead. */
                    interface ILocalServicesLead {

                        /** LocalServicesLead resource_name */
                        resource_name?: (string|null);

                        /** LocalServicesLead id */
                        id?: (number|null);

                        /** LocalServicesLead category_id */
                        category_id?: (string|null);

                        /** LocalServicesLead service_id */
                        service_id?: (string|null);

                        /** LocalServicesLead contact_details */
                        contact_details?: (google.ads.googleads.v23.resources.IContactDetails|null);

                        /** LocalServicesLead lead_type */
                        lead_type?: (google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum.LeadType|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum.LeadType|null);

                        /** LocalServicesLead lead_status */
                        lead_status?: (google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum.LeadStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum.LeadStatus|null);

                        /** LocalServicesLead creation_date_time */
                        creation_date_time?: (string|null);

                        /** LocalServicesLead locale */
                        locale?: (string|null);

                        /** LocalServicesLead note */
                        note?: (google.ads.googleads.v23.resources.INote|null);

                        /** LocalServicesLead lead_charged */
                        lead_charged?: (boolean|null);

                        /** LocalServicesLead credit_details */
                        credit_details?: (google.ads.googleads.v23.resources.ICreditDetails|null);

                        /** LocalServicesLead lead_feedback_submitted */
                        lead_feedback_submitted?: (boolean|null);
                    }

                    /** Represents a LocalServicesLead. */
                    class LocalServicesLead implements ILocalServicesLead {

                        /**
                         * Constructs a new LocalServicesLead.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILocalServicesLead);

                        /** LocalServicesLead resource_name. */
                        public resource_name: string;

                        /** LocalServicesLead id. */
                        public id: number;

                        /** LocalServicesLead category_id. */
                        public category_id: string;

                        /** LocalServicesLead service_id. */
                        public service_id: string;

                        /** LocalServicesLead contact_details. */
                        public contact_details?: (google.ads.googleads.v23.resources.IContactDetails|null);

                        /** LocalServicesLead lead_type. */
                        public lead_type: (google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum.LeadType|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadTypeEnum.LeadType);

                        /** LocalServicesLead lead_status. */
                        public lead_status: (google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum.LeadStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadStatusEnum.LeadStatus);

                        /** LocalServicesLead creation_date_time. */
                        public creation_date_time: string;

                        /** LocalServicesLead locale. */
                        public locale: string;

                        /** LocalServicesLead note. */
                        public note?: (google.ads.googleads.v23.resources.INote|null);

                        /** LocalServicesLead lead_charged. */
                        public lead_charged: boolean;

                        /** LocalServicesLead credit_details. */
                        public credit_details?: (google.ads.googleads.v23.resources.ICreditDetails|null);

                        /** LocalServicesLead lead_feedback_submitted. */
                        public lead_feedback_submitted: boolean;

                        /**
                         * Creates a new LocalServicesLead instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLead instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILocalServicesLead): google.ads.googleads.v23.resources.LocalServicesLead;

                        /**
                         * Encodes the specified LocalServicesLead message. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesLead.verify|verify} messages.
                         * @param message LocalServicesLead message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILocalServicesLead, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLead message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesLead.verify|verify} messages.
                         * @param message LocalServicesLead message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILocalServicesLead, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLead message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLead
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LocalServicesLead;

                        /**
                         * Decodes a LocalServicesLead message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLead
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LocalServicesLead;

                        /**
                         * Verifies a LocalServicesLead message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLead message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLead
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LocalServicesLead;

                        /**
                         * Creates a plain object from a LocalServicesLead message. Also converts values to other types if specified.
                         * @param message LocalServicesLead
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LocalServicesLead, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLead to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLead
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ContactDetails. */
                    interface IContactDetails {

                        /** ContactDetails phone_number */
                        phone_number?: (string|null);

                        /** ContactDetails email */
                        email?: (string|null);

                        /** ContactDetails consumer_name */
                        consumer_name?: (string|null);
                    }

                    /** Represents a ContactDetails. */
                    class ContactDetails implements IContactDetails {

                        /**
                         * Constructs a new ContactDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IContactDetails);

                        /** ContactDetails phone_number. */
                        public phone_number: string;

                        /** ContactDetails email. */
                        public email: string;

                        /** ContactDetails consumer_name. */
                        public consumer_name: string;

                        /**
                         * Creates a new ContactDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ContactDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IContactDetails): google.ads.googleads.v23.resources.ContactDetails;

                        /**
                         * Encodes the specified ContactDetails message. Does not implicitly {@link google.ads.googleads.v23.resources.ContactDetails.verify|verify} messages.
                         * @param message ContactDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IContactDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContactDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ContactDetails.verify|verify} messages.
                         * @param message ContactDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IContactDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContactDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ContactDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ContactDetails;

                        /**
                         * Decodes a ContactDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ContactDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ContactDetails;

                        /**
                         * Verifies a ContactDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContactDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ContactDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ContactDetails;

                        /**
                         * Creates a plain object from a ContactDetails message. Also converts values to other types if specified.
                         * @param message ContactDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ContactDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContactDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ContactDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Note. */
                    interface INote {

                        /** Note edit_date_time */
                        edit_date_time?: (string|null);

                        /** Note description */
                        description?: (string|null);
                    }

                    /** Represents a Note. */
                    class Note implements INote {

                        /**
                         * Constructs a new Note.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.INote);

                        /** Note edit_date_time. */
                        public edit_date_time: string;

                        /** Note description. */
                        public description: string;

                        /**
                         * Creates a new Note instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Note instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.INote): google.ads.googleads.v23.resources.Note;

                        /**
                         * Encodes the specified Note message. Does not implicitly {@link google.ads.googleads.v23.resources.Note.verify|verify} messages.
                         * @param message Note message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.INote, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Note message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Note.verify|verify} messages.
                         * @param message Note message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.INote, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Note message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Note
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Note;

                        /**
                         * Decodes a Note message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Note
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Note;

                        /**
                         * Verifies a Note message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Note message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Note
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Note;

                        /**
                         * Creates a plain object from a Note message. Also converts values to other types if specified.
                         * @param message Note
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Note, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Note to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Note
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreditDetails. */
                    interface ICreditDetails {

                        /** CreditDetails credit_state */
                        credit_state?: (google.ads.googleads.v23.enums.LocalServicesCreditStateEnum.CreditState|keyof typeof google.ads.googleads.v23.enums.LocalServicesCreditStateEnum.CreditState|null);

                        /** CreditDetails credit_state_last_update_date_time */
                        credit_state_last_update_date_time?: (string|null);
                    }

                    /** Represents a CreditDetails. */
                    class CreditDetails implements ICreditDetails {

                        /**
                         * Constructs a new CreditDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ICreditDetails);

                        /** CreditDetails credit_state. */
                        public credit_state: (google.ads.googleads.v23.enums.LocalServicesCreditStateEnum.CreditState|keyof typeof google.ads.googleads.v23.enums.LocalServicesCreditStateEnum.CreditState);

                        /** CreditDetails credit_state_last_update_date_time. */
                        public credit_state_last_update_date_time: string;

                        /**
                         * Creates a new CreditDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreditDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ICreditDetails): google.ads.googleads.v23.resources.CreditDetails;

                        /**
                         * Encodes the specified CreditDetails message. Does not implicitly {@link google.ads.googleads.v23.resources.CreditDetails.verify|verify} messages.
                         * @param message CreditDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ICreditDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreditDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.CreditDetails.verify|verify} messages.
                         * @param message CreditDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ICreditDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreditDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreditDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.CreditDetails;

                        /**
                         * Decodes a CreditDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreditDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.CreditDetails;

                        /**
                         * Verifies a CreditDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreditDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreditDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.CreditDetails;

                        /**
                         * Creates a plain object from a CreditDetails message. Also converts values to other types if specified.
                         * @param message CreditDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.CreditDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreditDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreditDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocalServicesLeadConversation. */
                    interface ILocalServicesLeadConversation {

                        /** LocalServicesLeadConversation resource_name */
                        resource_name?: (string|null);

                        /** LocalServicesLeadConversation id */
                        id?: (number|null);

                        /** LocalServicesLeadConversation conversation_channel */
                        conversation_channel?: (google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum.ConversationType|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum.ConversationType|null);

                        /** LocalServicesLeadConversation participant_type */
                        participant_type?: (google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum.ParticipantType|keyof typeof google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum.ParticipantType|null);

                        /** LocalServicesLeadConversation lead */
                        lead?: (string|null);

                        /** LocalServicesLeadConversation event_date_time */
                        event_date_time?: (string|null);

                        /** LocalServicesLeadConversation phone_call_details */
                        phone_call_details?: (google.ads.googleads.v23.resources.IPhoneCallDetails|null);

                        /** LocalServicesLeadConversation message_details */
                        message_details?: (google.ads.googleads.v23.resources.IMessageDetails|null);
                    }

                    /** Represents a LocalServicesLeadConversation. */
                    class LocalServicesLeadConversation implements ILocalServicesLeadConversation {

                        /**
                         * Constructs a new LocalServicesLeadConversation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILocalServicesLeadConversation);

                        /** LocalServicesLeadConversation resource_name. */
                        public resource_name: string;

                        /** LocalServicesLeadConversation id. */
                        public id: number;

                        /** LocalServicesLeadConversation conversation_channel. */
                        public conversation_channel: (google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum.ConversationType|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadConversationTypeEnum.ConversationType);

                        /** LocalServicesLeadConversation participant_type. */
                        public participant_type: (google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum.ParticipantType|keyof typeof google.ads.googleads.v23.enums.LocalServicesParticipantTypeEnum.ParticipantType);

                        /** LocalServicesLeadConversation lead. */
                        public lead: string;

                        /** LocalServicesLeadConversation event_date_time. */
                        public event_date_time: string;

                        /** LocalServicesLeadConversation phone_call_details. */
                        public phone_call_details?: (google.ads.googleads.v23.resources.IPhoneCallDetails|null);

                        /** LocalServicesLeadConversation message_details. */
                        public message_details?: (google.ads.googleads.v23.resources.IMessageDetails|null);

                        /**
                         * Creates a new LocalServicesLeadConversation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesLeadConversation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILocalServicesLeadConversation): google.ads.googleads.v23.resources.LocalServicesLeadConversation;

                        /**
                         * Encodes the specified LocalServicesLeadConversation message. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesLeadConversation.verify|verify} messages.
                         * @param message LocalServicesLeadConversation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILocalServicesLeadConversation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesLeadConversation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesLeadConversation.verify|verify} messages.
                         * @param message LocalServicesLeadConversation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILocalServicesLeadConversation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesLeadConversation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesLeadConversation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LocalServicesLeadConversation;

                        /**
                         * Decodes a LocalServicesLeadConversation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesLeadConversation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LocalServicesLeadConversation;

                        /**
                         * Verifies a LocalServicesLeadConversation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesLeadConversation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesLeadConversation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LocalServicesLeadConversation;

                        /**
                         * Creates a plain object from a LocalServicesLeadConversation message. Also converts values to other types if specified.
                         * @param message LocalServicesLeadConversation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LocalServicesLeadConversation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesLeadConversation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesLeadConversation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PhoneCallDetails. */
                    interface IPhoneCallDetails {

                        /** PhoneCallDetails call_duration_millis */
                        call_duration_millis?: (number|null);

                        /** PhoneCallDetails call_recording_url */
                        call_recording_url?: (string|null);
                    }

                    /** Represents a PhoneCallDetails. */
                    class PhoneCallDetails implements IPhoneCallDetails {

                        /**
                         * Constructs a new PhoneCallDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IPhoneCallDetails);

                        /** PhoneCallDetails call_duration_millis. */
                        public call_duration_millis: number;

                        /** PhoneCallDetails call_recording_url. */
                        public call_recording_url: string;

                        /**
                         * Creates a new PhoneCallDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PhoneCallDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IPhoneCallDetails): google.ads.googleads.v23.resources.PhoneCallDetails;

                        /**
                         * Encodes the specified PhoneCallDetails message. Does not implicitly {@link google.ads.googleads.v23.resources.PhoneCallDetails.verify|verify} messages.
                         * @param message PhoneCallDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IPhoneCallDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PhoneCallDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.PhoneCallDetails.verify|verify} messages.
                         * @param message PhoneCallDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IPhoneCallDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PhoneCallDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PhoneCallDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.PhoneCallDetails;

                        /**
                         * Decodes a PhoneCallDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PhoneCallDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.PhoneCallDetails;

                        /**
                         * Verifies a PhoneCallDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PhoneCallDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PhoneCallDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.PhoneCallDetails;

                        /**
                         * Creates a plain object from a PhoneCallDetails message. Also converts values to other types if specified.
                         * @param message PhoneCallDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.PhoneCallDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PhoneCallDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PhoneCallDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MessageDetails. */
                    interface IMessageDetails {

                        /** MessageDetails text */
                        text?: (string|null);

                        /** MessageDetails attachment_urls */
                        attachment_urls?: (string[]|null);
                    }

                    /** Represents a MessageDetails. */
                    class MessageDetails implements IMessageDetails {

                        /**
                         * Constructs a new MessageDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMessageDetails);

                        /** MessageDetails text. */
                        public text: string;

                        /** MessageDetails attachment_urls. */
                        public attachment_urls: string[];

                        /**
                         * Creates a new MessageDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MessageDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMessageDetails): google.ads.googleads.v23.resources.MessageDetails;

                        /**
                         * Encodes the specified MessageDetails message. Does not implicitly {@link google.ads.googleads.v23.resources.MessageDetails.verify|verify} messages.
                         * @param message MessageDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMessageDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MessageDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MessageDetails.verify|verify} messages.
                         * @param message MessageDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMessageDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MessageDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MessageDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MessageDetails;

                        /**
                         * Decodes a MessageDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MessageDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MessageDetails;

                        /**
                         * Verifies a MessageDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MessageDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MessageDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MessageDetails;

                        /**
                         * Creates a plain object from a MessageDetails message. Also converts values to other types if specified.
                         * @param message MessageDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MessageDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MessageDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MessageDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocalServicesVerificationArtifact. */
                    interface ILocalServicesVerificationArtifact {

                        /** LocalServicesVerificationArtifact resource_name */
                        resource_name?: (string|null);

                        /** LocalServicesVerificationArtifact id */
                        id?: (number|null);

                        /** LocalServicesVerificationArtifact creation_date_time */
                        creation_date_time?: (string|null);

                        /** LocalServicesVerificationArtifact status */
                        status?: (google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum.LocalServicesVerificationArtifactStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum.LocalServicesVerificationArtifactStatus|null);

                        /** LocalServicesVerificationArtifact artifact_type */
                        artifact_type?: (google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum.LocalServicesVerificationArtifactType|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum.LocalServicesVerificationArtifactType|null);

                        /** LocalServicesVerificationArtifact background_check_verification_artifact */
                        background_check_verification_artifact?: (google.ads.googleads.v23.resources.IBackgroundCheckVerificationArtifact|null);

                        /** LocalServicesVerificationArtifact insurance_verification_artifact */
                        insurance_verification_artifact?: (google.ads.googleads.v23.resources.IInsuranceVerificationArtifact|null);

                        /** LocalServicesVerificationArtifact license_verification_artifact */
                        license_verification_artifact?: (google.ads.googleads.v23.resources.ILicenseVerificationArtifact|null);

                        /** LocalServicesVerificationArtifact business_registration_check_verification_artifact */
                        business_registration_check_verification_artifact?: (google.ads.googleads.v23.resources.IBusinessRegistrationCheckVerificationArtifact|null);
                    }

                    /** Represents a LocalServicesVerificationArtifact. */
                    class LocalServicesVerificationArtifact implements ILocalServicesVerificationArtifact {

                        /**
                         * Constructs a new LocalServicesVerificationArtifact.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILocalServicesVerificationArtifact);

                        /** LocalServicesVerificationArtifact resource_name. */
                        public resource_name: string;

                        /** LocalServicesVerificationArtifact id. */
                        public id?: (number|null);

                        /** LocalServicesVerificationArtifact creation_date_time. */
                        public creation_date_time: string;

                        /** LocalServicesVerificationArtifact status. */
                        public status: (google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum.LocalServicesVerificationArtifactStatus|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationArtifactStatusEnum.LocalServicesVerificationArtifactStatus);

                        /** LocalServicesVerificationArtifact artifact_type. */
                        public artifact_type: (google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum.LocalServicesVerificationArtifactType|keyof typeof google.ads.googleads.v23.enums.LocalServicesVerificationArtifactTypeEnum.LocalServicesVerificationArtifactType);

                        /** LocalServicesVerificationArtifact background_check_verification_artifact. */
                        public background_check_verification_artifact?: (google.ads.googleads.v23.resources.IBackgroundCheckVerificationArtifact|null);

                        /** LocalServicesVerificationArtifact insurance_verification_artifact. */
                        public insurance_verification_artifact?: (google.ads.googleads.v23.resources.IInsuranceVerificationArtifact|null);

                        /** LocalServicesVerificationArtifact license_verification_artifact. */
                        public license_verification_artifact?: (google.ads.googleads.v23.resources.ILicenseVerificationArtifact|null);

                        /** LocalServicesVerificationArtifact business_registration_check_verification_artifact. */
                        public business_registration_check_verification_artifact?: (google.ads.googleads.v23.resources.IBusinessRegistrationCheckVerificationArtifact|null);

                        /** LocalServicesVerificationArtifact artifact_data. */
                        public artifact_data?: ("background_check_verification_artifact"|"insurance_verification_artifact"|"license_verification_artifact"|"business_registration_check_verification_artifact");

                        /**
                         * Creates a new LocalServicesVerificationArtifact instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalServicesVerificationArtifact instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILocalServicesVerificationArtifact): google.ads.googleads.v23.resources.LocalServicesVerificationArtifact;

                        /**
                         * Encodes the specified LocalServicesVerificationArtifact message. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesVerificationArtifact.verify|verify} messages.
                         * @param message LocalServicesVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILocalServicesVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalServicesVerificationArtifact message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LocalServicesVerificationArtifact.verify|verify} messages.
                         * @param message LocalServicesVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILocalServicesVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalServicesVerificationArtifact message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocalServicesVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LocalServicesVerificationArtifact;

                        /**
                         * Decodes a LocalServicesVerificationArtifact message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalServicesVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LocalServicesVerificationArtifact;

                        /**
                         * Verifies a LocalServicesVerificationArtifact message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalServicesVerificationArtifact message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocalServicesVerificationArtifact
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LocalServicesVerificationArtifact;

                        /**
                         * Creates a plain object from a LocalServicesVerificationArtifact message. Also converts values to other types if specified.
                         * @param message LocalServicesVerificationArtifact
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LocalServicesVerificationArtifact, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalServicesVerificationArtifact to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocalServicesVerificationArtifact
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BackgroundCheckVerificationArtifact. */
                    interface IBackgroundCheckVerificationArtifact {

                        /** BackgroundCheckVerificationArtifact case_url */
                        case_url?: (string|null);

                        /** BackgroundCheckVerificationArtifact final_adjudication_date_time */
                        final_adjudication_date_time?: (string|null);
                    }

                    /** Represents a BackgroundCheckVerificationArtifact. */
                    class BackgroundCheckVerificationArtifact implements IBackgroundCheckVerificationArtifact {

                        /**
                         * Constructs a new BackgroundCheckVerificationArtifact.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBackgroundCheckVerificationArtifact);

                        /** BackgroundCheckVerificationArtifact case_url. */
                        public case_url?: (string|null);

                        /** BackgroundCheckVerificationArtifact final_adjudication_date_time. */
                        public final_adjudication_date_time?: (string|null);

                        /**
                         * Creates a new BackgroundCheckVerificationArtifact instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BackgroundCheckVerificationArtifact instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBackgroundCheckVerificationArtifact): google.ads.googleads.v23.resources.BackgroundCheckVerificationArtifact;

                        /**
                         * Encodes the specified BackgroundCheckVerificationArtifact message. Does not implicitly {@link google.ads.googleads.v23.resources.BackgroundCheckVerificationArtifact.verify|verify} messages.
                         * @param message BackgroundCheckVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBackgroundCheckVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BackgroundCheckVerificationArtifact message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BackgroundCheckVerificationArtifact.verify|verify} messages.
                         * @param message BackgroundCheckVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBackgroundCheckVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BackgroundCheckVerificationArtifact message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BackgroundCheckVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BackgroundCheckVerificationArtifact;

                        /**
                         * Decodes a BackgroundCheckVerificationArtifact message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BackgroundCheckVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BackgroundCheckVerificationArtifact;

                        /**
                         * Verifies a BackgroundCheckVerificationArtifact message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BackgroundCheckVerificationArtifact message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BackgroundCheckVerificationArtifact
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BackgroundCheckVerificationArtifact;

                        /**
                         * Creates a plain object from a BackgroundCheckVerificationArtifact message. Also converts values to other types if specified.
                         * @param message BackgroundCheckVerificationArtifact
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BackgroundCheckVerificationArtifact, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BackgroundCheckVerificationArtifact to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BackgroundCheckVerificationArtifact
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an InsuranceVerificationArtifact. */
                    interface IInsuranceVerificationArtifact {

                        /** InsuranceVerificationArtifact amount_micros */
                        amount_micros?: (number|null);

                        /** InsuranceVerificationArtifact rejection_reason */
                        rejection_reason?: (google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum.LocalServicesInsuranceRejectionReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum.LocalServicesInsuranceRejectionReason|null);

                        /** InsuranceVerificationArtifact insurance_document_readonly */
                        insurance_document_readonly?: (google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly|null);

                        /** InsuranceVerificationArtifact expiration_date_time */
                        expiration_date_time?: (string|null);
                    }

                    /** Represents an InsuranceVerificationArtifact. */
                    class InsuranceVerificationArtifact implements IInsuranceVerificationArtifact {

                        /**
                         * Constructs a new InsuranceVerificationArtifact.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IInsuranceVerificationArtifact);

                        /** InsuranceVerificationArtifact amount_micros. */
                        public amount_micros?: (number|null);

                        /** InsuranceVerificationArtifact rejection_reason. */
                        public rejection_reason?: (google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum.LocalServicesInsuranceRejectionReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesInsuranceRejectionReasonEnum.LocalServicesInsuranceRejectionReason|null);

                        /** InsuranceVerificationArtifact insurance_document_readonly. */
                        public insurance_document_readonly?: (google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly|null);

                        /** InsuranceVerificationArtifact expiration_date_time. */
                        public expiration_date_time?: (string|null);

                        /**
                         * Creates a new InsuranceVerificationArtifact instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsuranceVerificationArtifact instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IInsuranceVerificationArtifact): google.ads.googleads.v23.resources.InsuranceVerificationArtifact;

                        /**
                         * Encodes the specified InsuranceVerificationArtifact message. Does not implicitly {@link google.ads.googleads.v23.resources.InsuranceVerificationArtifact.verify|verify} messages.
                         * @param message InsuranceVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IInsuranceVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsuranceVerificationArtifact message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.InsuranceVerificationArtifact.verify|verify} messages.
                         * @param message InsuranceVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IInsuranceVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsuranceVerificationArtifact message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsuranceVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.InsuranceVerificationArtifact;

                        /**
                         * Decodes an InsuranceVerificationArtifact message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsuranceVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.InsuranceVerificationArtifact;

                        /**
                         * Verifies an InsuranceVerificationArtifact message.
                         * @param message Plain 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 InsuranceVerificationArtifact message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsuranceVerificationArtifact
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.InsuranceVerificationArtifact;

                        /**
                         * Creates a plain object from an InsuranceVerificationArtifact message. Also converts values to other types if specified.
                         * @param message InsuranceVerificationArtifact
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.InsuranceVerificationArtifact, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsuranceVerificationArtifact to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsuranceVerificationArtifact
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LicenseVerificationArtifact. */
                    interface ILicenseVerificationArtifact {

                        /** LicenseVerificationArtifact license_type */
                        license_type?: (string|null);

                        /** LicenseVerificationArtifact license_number */
                        license_number?: (string|null);

                        /** LicenseVerificationArtifact licensee_first_name */
                        licensee_first_name?: (string|null);

                        /** LicenseVerificationArtifact licensee_last_name */
                        licensee_last_name?: (string|null);

                        /** LicenseVerificationArtifact rejection_reason */
                        rejection_reason?: (google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum.LocalServicesLicenseRejectionReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum.LocalServicesLicenseRejectionReason|null);

                        /** LicenseVerificationArtifact license_document_readonly */
                        license_document_readonly?: (google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly|null);

                        /** LicenseVerificationArtifact expiration_date_time */
                        expiration_date_time?: (string|null);
                    }

                    /** Represents a LicenseVerificationArtifact. */
                    class LicenseVerificationArtifact implements ILicenseVerificationArtifact {

                        /**
                         * Constructs a new LicenseVerificationArtifact.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILicenseVerificationArtifact);

                        /** LicenseVerificationArtifact license_type. */
                        public license_type?: (string|null);

                        /** LicenseVerificationArtifact license_number. */
                        public license_number?: (string|null);

                        /** LicenseVerificationArtifact licensee_first_name. */
                        public licensee_first_name?: (string|null);

                        /** LicenseVerificationArtifact licensee_last_name. */
                        public licensee_last_name?: (string|null);

                        /** LicenseVerificationArtifact rejection_reason. */
                        public rejection_reason?: (google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum.LocalServicesLicenseRejectionReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesLicenseRejectionReasonEnum.LocalServicesLicenseRejectionReason|null);

                        /** LicenseVerificationArtifact license_document_readonly. */
                        public license_document_readonly?: (google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly|null);

                        /** LicenseVerificationArtifact expiration_date_time. */
                        public expiration_date_time?: (string|null);

                        /**
                         * Creates a new LicenseVerificationArtifact instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LicenseVerificationArtifact instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILicenseVerificationArtifact): google.ads.googleads.v23.resources.LicenseVerificationArtifact;

                        /**
                         * Encodes the specified LicenseVerificationArtifact message. Does not implicitly {@link google.ads.googleads.v23.resources.LicenseVerificationArtifact.verify|verify} messages.
                         * @param message LicenseVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILicenseVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LicenseVerificationArtifact message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LicenseVerificationArtifact.verify|verify} messages.
                         * @param message LicenseVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILicenseVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LicenseVerificationArtifact message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LicenseVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LicenseVerificationArtifact;

                        /**
                         * Decodes a LicenseVerificationArtifact message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LicenseVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LicenseVerificationArtifact;

                        /**
                         * Verifies a LicenseVerificationArtifact message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LicenseVerificationArtifact message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LicenseVerificationArtifact
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LicenseVerificationArtifact;

                        /**
                         * Creates a plain object from a LicenseVerificationArtifact message. Also converts values to other types if specified.
                         * @param message LicenseVerificationArtifact
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LicenseVerificationArtifact, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LicenseVerificationArtifact to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LicenseVerificationArtifact
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BusinessRegistrationCheckVerificationArtifact. */
                    interface IBusinessRegistrationCheckVerificationArtifact {

                        /** BusinessRegistrationCheckVerificationArtifact registration_type */
                        registration_type?: (google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum.LocalServicesBusinessRegistrationType|keyof typeof google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum.LocalServicesBusinessRegistrationType|null);

                        /** BusinessRegistrationCheckVerificationArtifact check_id */
                        check_id?: (string|null);

                        /** BusinessRegistrationCheckVerificationArtifact rejection_reason */
                        rejection_reason?: (google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum.LocalServicesBusinessRegistrationCheckRejectionReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum.LocalServicesBusinessRegistrationCheckRejectionReason|null);

                        /** BusinessRegistrationCheckVerificationArtifact registration_number */
                        registration_number?: (google.ads.googleads.v23.resources.IBusinessRegistrationNumber|null);

                        /** BusinessRegistrationCheckVerificationArtifact registration_document */
                        registration_document?: (google.ads.googleads.v23.resources.IBusinessRegistrationDocument|null);
                    }

                    /** Represents a BusinessRegistrationCheckVerificationArtifact. */
                    class BusinessRegistrationCheckVerificationArtifact implements IBusinessRegistrationCheckVerificationArtifact {

                        /**
                         * Constructs a new BusinessRegistrationCheckVerificationArtifact.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBusinessRegistrationCheckVerificationArtifact);

                        /** BusinessRegistrationCheckVerificationArtifact registration_type. */
                        public registration_type?: (google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum.LocalServicesBusinessRegistrationType|keyof typeof google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationTypeEnum.LocalServicesBusinessRegistrationType|null);

                        /** BusinessRegistrationCheckVerificationArtifact check_id. */
                        public check_id?: (string|null);

                        /** BusinessRegistrationCheckVerificationArtifact rejection_reason. */
                        public rejection_reason?: (google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum.LocalServicesBusinessRegistrationCheckRejectionReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesBusinessRegistrationCheckRejectionReasonEnum.LocalServicesBusinessRegistrationCheckRejectionReason|null);

                        /** BusinessRegistrationCheckVerificationArtifact registration_number. */
                        public registration_number?: (google.ads.googleads.v23.resources.IBusinessRegistrationNumber|null);

                        /** BusinessRegistrationCheckVerificationArtifact registration_document. */
                        public registration_document?: (google.ads.googleads.v23.resources.IBusinessRegistrationDocument|null);

                        /** BusinessRegistrationCheckVerificationArtifact business_registration. */
                        public business_registration?: ("registration_number"|"registration_document");

                        /**
                         * Creates a new BusinessRegistrationCheckVerificationArtifact instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessRegistrationCheckVerificationArtifact instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBusinessRegistrationCheckVerificationArtifact): google.ads.googleads.v23.resources.BusinessRegistrationCheckVerificationArtifact;

                        /**
                         * Encodes the specified BusinessRegistrationCheckVerificationArtifact message. Does not implicitly {@link google.ads.googleads.v23.resources.BusinessRegistrationCheckVerificationArtifact.verify|verify} messages.
                         * @param message BusinessRegistrationCheckVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBusinessRegistrationCheckVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessRegistrationCheckVerificationArtifact message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BusinessRegistrationCheckVerificationArtifact.verify|verify} messages.
                         * @param message BusinessRegistrationCheckVerificationArtifact message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBusinessRegistrationCheckVerificationArtifact, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BusinessRegistrationCheckVerificationArtifact message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BusinessRegistrationCheckVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BusinessRegistrationCheckVerificationArtifact;

                        /**
                         * Decodes a BusinessRegistrationCheckVerificationArtifact message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BusinessRegistrationCheckVerificationArtifact
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BusinessRegistrationCheckVerificationArtifact;

                        /**
                         * Verifies a BusinessRegistrationCheckVerificationArtifact message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BusinessRegistrationCheckVerificationArtifact message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BusinessRegistrationCheckVerificationArtifact
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BusinessRegistrationCheckVerificationArtifact;

                        /**
                         * Creates a plain object from a BusinessRegistrationCheckVerificationArtifact message. Also converts values to other types if specified.
                         * @param message BusinessRegistrationCheckVerificationArtifact
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BusinessRegistrationCheckVerificationArtifact, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BusinessRegistrationCheckVerificationArtifact to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BusinessRegistrationCheckVerificationArtifact
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BusinessRegistrationNumber. */
                    interface IBusinessRegistrationNumber {

                        /** BusinessRegistrationNumber number */
                        number?: (string|null);
                    }

                    /** Represents a BusinessRegistrationNumber. */
                    class BusinessRegistrationNumber implements IBusinessRegistrationNumber {

                        /**
                         * Constructs a new BusinessRegistrationNumber.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBusinessRegistrationNumber);

                        /** BusinessRegistrationNumber number. */
                        public number?: (string|null);

                        /**
                         * Creates a new BusinessRegistrationNumber instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessRegistrationNumber instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBusinessRegistrationNumber): google.ads.googleads.v23.resources.BusinessRegistrationNumber;

                        /**
                         * Encodes the specified BusinessRegistrationNumber message. Does not implicitly {@link google.ads.googleads.v23.resources.BusinessRegistrationNumber.verify|verify} messages.
                         * @param message BusinessRegistrationNumber message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBusinessRegistrationNumber, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessRegistrationNumber message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BusinessRegistrationNumber.verify|verify} messages.
                         * @param message BusinessRegistrationNumber message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBusinessRegistrationNumber, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BusinessRegistrationNumber message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BusinessRegistrationNumber
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BusinessRegistrationNumber;

                        /**
                         * Decodes a BusinessRegistrationNumber message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BusinessRegistrationNumber
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BusinessRegistrationNumber;

                        /**
                         * Verifies a BusinessRegistrationNumber message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BusinessRegistrationNumber message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BusinessRegistrationNumber
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BusinessRegistrationNumber;

                        /**
                         * Creates a plain object from a BusinessRegistrationNumber message. Also converts values to other types if specified.
                         * @param message BusinessRegistrationNumber
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BusinessRegistrationNumber, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BusinessRegistrationNumber to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BusinessRegistrationNumber
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BusinessRegistrationDocument. */
                    interface IBusinessRegistrationDocument {

                        /** BusinessRegistrationDocument document_readonly */
                        document_readonly?: (google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly|null);
                    }

                    /** Represents a BusinessRegistrationDocument. */
                    class BusinessRegistrationDocument implements IBusinessRegistrationDocument {

                        /**
                         * Constructs a new BusinessRegistrationDocument.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IBusinessRegistrationDocument);

                        /** BusinessRegistrationDocument document_readonly. */
                        public document_readonly?: (google.ads.googleads.v23.common.ILocalServicesDocumentReadOnly|null);

                        /**
                         * Creates a new BusinessRegistrationDocument instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessRegistrationDocument instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IBusinessRegistrationDocument): google.ads.googleads.v23.resources.BusinessRegistrationDocument;

                        /**
                         * Encodes the specified BusinessRegistrationDocument message. Does not implicitly {@link google.ads.googleads.v23.resources.BusinessRegistrationDocument.verify|verify} messages.
                         * @param message BusinessRegistrationDocument message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IBusinessRegistrationDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessRegistrationDocument message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.BusinessRegistrationDocument.verify|verify} messages.
                         * @param message BusinessRegistrationDocument message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IBusinessRegistrationDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BusinessRegistrationDocument message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BusinessRegistrationDocument
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.BusinessRegistrationDocument;

                        /**
                         * Decodes a BusinessRegistrationDocument message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BusinessRegistrationDocument
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.BusinessRegistrationDocument;

                        /**
                         * Verifies a BusinessRegistrationDocument message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BusinessRegistrationDocument message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BusinessRegistrationDocument
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.BusinessRegistrationDocument;

                        /**
                         * Creates a plain object from a BusinessRegistrationDocument message. Also converts values to other types if specified.
                         * @param message BusinessRegistrationDocument
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.BusinessRegistrationDocument, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BusinessRegistrationDocument to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BusinessRegistrationDocument
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocationInterestView. */
                    interface ILocationInterestView {

                        /** LocationInterestView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a LocationInterestView. */
                    class LocationInterestView implements ILocationInterestView {

                        /**
                         * Constructs a new LocationInterestView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILocationInterestView);

                        /** LocationInterestView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new LocationInterestView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationInterestView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILocationInterestView): google.ads.googleads.v23.resources.LocationInterestView;

                        /**
                         * Encodes the specified LocationInterestView message. Does not implicitly {@link google.ads.googleads.v23.resources.LocationInterestView.verify|verify} messages.
                         * @param message LocationInterestView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILocationInterestView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationInterestView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LocationInterestView.verify|verify} messages.
                         * @param message LocationInterestView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILocationInterestView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationInterestView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationInterestView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LocationInterestView;

                        /**
                         * Decodes a LocationInterestView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationInterestView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LocationInterestView;

                        /**
                         * Verifies a LocationInterestView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationInterestView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationInterestView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LocationInterestView;

                        /**
                         * Creates a plain object from a LocationInterestView message. Also converts values to other types if specified.
                         * @param message LocationInterestView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LocationInterestView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationInterestView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationInterestView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LocationView. */
                    interface ILocationView {

                        /** LocationView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a LocationView. */
                    class LocationView implements ILocationView {

                        /**
                         * Constructs a new LocationView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ILocationView);

                        /** LocationView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new LocationView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ILocationView): google.ads.googleads.v23.resources.LocationView;

                        /**
                         * Encodes the specified LocationView message. Does not implicitly {@link google.ads.googleads.v23.resources.LocationView.verify|verify} messages.
                         * @param message LocationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ILocationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.LocationView.verify|verify} messages.
                         * @param message LocationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ILocationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LocationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.LocationView;

                        /**
                         * Decodes a LocationView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.LocationView;

                        /**
                         * Verifies a LocationView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LocationView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.LocationView;

                        /**
                         * Creates a plain object from a LocationView message. Also converts values to other types if specified.
                         * @param message LocationView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.LocationView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LocationView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ManagedPlacementView. */
                    interface IManagedPlacementView {

                        /** ManagedPlacementView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a ManagedPlacementView. */
                    class ManagedPlacementView implements IManagedPlacementView {

                        /**
                         * Constructs a new ManagedPlacementView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IManagedPlacementView);

                        /** ManagedPlacementView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ManagedPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManagedPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IManagedPlacementView): google.ads.googleads.v23.resources.ManagedPlacementView;

                        /**
                         * Encodes the specified ManagedPlacementView message. Does not implicitly {@link google.ads.googleads.v23.resources.ManagedPlacementView.verify|verify} messages.
                         * @param message ManagedPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IManagedPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManagedPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ManagedPlacementView.verify|verify} messages.
                         * @param message ManagedPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IManagedPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManagedPlacementView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManagedPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ManagedPlacementView;

                        /**
                         * Decodes a ManagedPlacementView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManagedPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ManagedPlacementView;

                        /**
                         * Verifies a ManagedPlacementView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManagedPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManagedPlacementView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ManagedPlacementView;

                        /**
                         * Creates a plain object from a ManagedPlacementView message. Also converts values to other types if specified.
                         * @param message ManagedPlacementView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ManagedPlacementView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManagedPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManagedPlacementView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MatchedLocationInterestView. */
                    interface IMatchedLocationInterestView {

                        /** MatchedLocationInterestView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MatchedLocationInterestView. */
                    class MatchedLocationInterestView implements IMatchedLocationInterestView {

                        /**
                         * Constructs a new MatchedLocationInterestView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMatchedLocationInterestView);

                        /** MatchedLocationInterestView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MatchedLocationInterestView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MatchedLocationInterestView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMatchedLocationInterestView): google.ads.googleads.v23.resources.MatchedLocationInterestView;

                        /**
                         * Encodes the specified MatchedLocationInterestView message. Does not implicitly {@link google.ads.googleads.v23.resources.MatchedLocationInterestView.verify|verify} messages.
                         * @param message MatchedLocationInterestView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMatchedLocationInterestView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MatchedLocationInterestView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MatchedLocationInterestView.verify|verify} messages.
                         * @param message MatchedLocationInterestView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMatchedLocationInterestView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MatchedLocationInterestView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MatchedLocationInterestView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MatchedLocationInterestView;

                        /**
                         * Decodes a MatchedLocationInterestView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MatchedLocationInterestView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MatchedLocationInterestView;

                        /**
                         * Verifies a MatchedLocationInterestView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MatchedLocationInterestView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MatchedLocationInterestView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MatchedLocationInterestView;

                        /**
                         * Creates a plain object from a MatchedLocationInterestView message. Also converts values to other types if specified.
                         * @param message MatchedLocationInterestView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MatchedLocationInterestView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MatchedLocationInterestView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MatchedLocationInterestView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MediaFile. */
                    interface IMediaFile {

                        /** MediaFile resource_name */
                        resource_name?: (string|null);

                        /** MediaFile id */
                        id?: (number|null);

                        /** MediaFile type */
                        type?: (google.ads.googleads.v23.enums.MediaTypeEnum.MediaType|keyof typeof google.ads.googleads.v23.enums.MediaTypeEnum.MediaType|null);

                        /** MediaFile mime_type */
                        mime_type?: (google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|null);

                        /** MediaFile source_url */
                        source_url?: (string|null);

                        /** MediaFile name */
                        name?: (string|null);

                        /** MediaFile file_size */
                        file_size?: (number|null);

                        /** MediaFile image */
                        image?: (google.ads.googleads.v23.resources.IMediaImage|null);

                        /** MediaFile media_bundle */
                        media_bundle?: (google.ads.googleads.v23.resources.IMediaBundle|null);

                        /** MediaFile audio */
                        audio?: (google.ads.googleads.v23.resources.IMediaAudio|null);

                        /** MediaFile video */
                        video?: (google.ads.googleads.v23.resources.IMediaVideo|null);
                    }

                    /** Represents a MediaFile. */
                    class MediaFile implements IMediaFile {

                        /**
                         * Constructs a new MediaFile.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMediaFile);

                        /** MediaFile resource_name. */
                        public resource_name: string;

                        /** MediaFile id. */
                        public id?: (number|null);

                        /** MediaFile type. */
                        public type: (google.ads.googleads.v23.enums.MediaTypeEnum.MediaType|keyof typeof google.ads.googleads.v23.enums.MediaTypeEnum.MediaType);

                        /** MediaFile mime_type. */
                        public mime_type: (google.ads.googleads.v23.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v23.enums.MimeTypeEnum.MimeType);

                        /** MediaFile source_url. */
                        public source_url?: (string|null);

                        /** MediaFile name. */
                        public name?: (string|null);

                        /** MediaFile file_size. */
                        public file_size?: (number|null);

                        /** MediaFile image. */
                        public image?: (google.ads.googleads.v23.resources.IMediaImage|null);

                        /** MediaFile media_bundle. */
                        public media_bundle?: (google.ads.googleads.v23.resources.IMediaBundle|null);

                        /** MediaFile audio. */
                        public audio?: (google.ads.googleads.v23.resources.IMediaAudio|null);

                        /** MediaFile video. */
                        public video?: (google.ads.googleads.v23.resources.IMediaVideo|null);

                        /** MediaFile mediatype. */
                        public mediatype?: ("image"|"media_bundle"|"audio"|"video");

                        /**
                         * Creates a new MediaFile instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaFile instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMediaFile): google.ads.googleads.v23.resources.MediaFile;

                        /**
                         * Encodes the specified MediaFile message. Does not implicitly {@link google.ads.googleads.v23.resources.MediaFile.verify|verify} messages.
                         * @param message MediaFile message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMediaFile, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaFile message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MediaFile.verify|verify} messages.
                         * @param message MediaFile message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMediaFile, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaFile message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaFile
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MediaFile;

                        /**
                         * Decodes a MediaFile message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaFile
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MediaFile;

                        /**
                         * Verifies a MediaFile message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaFile message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaFile
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MediaFile;

                        /**
                         * Creates a plain object from a MediaFile message. Also converts values to other types if specified.
                         * @param message MediaFile
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MediaFile, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaFile to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaFile
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MediaImage. */
                    interface IMediaImage {

                        /** MediaImage data */
                        data?: (Uint8Array|Buffer|string|null);

                        /** MediaImage full_size_image_url */
                        full_size_image_url?: (string|null);

                        /** MediaImage preview_size_image_url */
                        preview_size_image_url?: (string|null);
                    }

                    /** Represents a MediaImage. */
                    class MediaImage implements IMediaImage {

                        /**
                         * Constructs a new MediaImage.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMediaImage);

                        /** MediaImage data. */
                        public data?: (Uint8Array|Buffer|string|null);

                        /** MediaImage full_size_image_url. */
                        public full_size_image_url?: (string|null);

                        /** MediaImage preview_size_image_url. */
                        public preview_size_image_url?: (string|null);

                        /**
                         * Creates a new MediaImage instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaImage instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMediaImage): google.ads.googleads.v23.resources.MediaImage;

                        /**
                         * Encodes the specified MediaImage message. Does not implicitly {@link google.ads.googleads.v23.resources.MediaImage.verify|verify} messages.
                         * @param message MediaImage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMediaImage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaImage message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MediaImage.verify|verify} messages.
                         * @param message MediaImage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMediaImage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaImage message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaImage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MediaImage;

                        /**
                         * Decodes a MediaImage message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaImage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MediaImage;

                        /**
                         * Verifies a MediaImage message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaImage message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaImage
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MediaImage;

                        /**
                         * Creates a plain object from a MediaImage message. Also converts values to other types if specified.
                         * @param message MediaImage
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MediaImage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaImage to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaImage
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MediaBundle. */
                    interface IMediaBundle {

                        /** MediaBundle data */
                        data?: (Uint8Array|Buffer|string|null);

                        /** MediaBundle url */
                        url?: (string|null);
                    }

                    /** Represents a MediaBundle. */
                    class MediaBundle implements IMediaBundle {

                        /**
                         * Constructs a new MediaBundle.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMediaBundle);

                        /** MediaBundle data. */
                        public data?: (Uint8Array|Buffer|string|null);

                        /** MediaBundle url. */
                        public url?: (string|null);

                        /**
                         * Creates a new MediaBundle instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaBundle instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMediaBundle): google.ads.googleads.v23.resources.MediaBundle;

                        /**
                         * Encodes the specified MediaBundle message. Does not implicitly {@link google.ads.googleads.v23.resources.MediaBundle.verify|verify} messages.
                         * @param message MediaBundle message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMediaBundle, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaBundle message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MediaBundle.verify|verify} messages.
                         * @param message MediaBundle message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMediaBundle, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaBundle message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaBundle
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MediaBundle;

                        /**
                         * Decodes a MediaBundle message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaBundle
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MediaBundle;

                        /**
                         * Verifies a MediaBundle message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaBundle message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaBundle
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MediaBundle;

                        /**
                         * Creates a plain object from a MediaBundle message. Also converts values to other types if specified.
                         * @param message MediaBundle
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MediaBundle, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaBundle to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaBundle
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MediaAudio. */
                    interface IMediaAudio {

                        /** MediaAudio ad_duration_millis */
                        ad_duration_millis?: (number|null);
                    }

                    /** Represents a MediaAudio. */
                    class MediaAudio implements IMediaAudio {

                        /**
                         * Constructs a new MediaAudio.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMediaAudio);

                        /** MediaAudio ad_duration_millis. */
                        public ad_duration_millis?: (number|null);

                        /**
                         * Creates a new MediaAudio instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaAudio instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMediaAudio): google.ads.googleads.v23.resources.MediaAudio;

                        /**
                         * Encodes the specified MediaAudio message. Does not implicitly {@link google.ads.googleads.v23.resources.MediaAudio.verify|verify} messages.
                         * @param message MediaAudio message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMediaAudio, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaAudio message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MediaAudio.verify|verify} messages.
                         * @param message MediaAudio message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMediaAudio, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaAudio message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaAudio
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MediaAudio;

                        /**
                         * Decodes a MediaAudio message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaAudio
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MediaAudio;

                        /**
                         * Verifies a MediaAudio message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaAudio message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaAudio
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MediaAudio;

                        /**
                         * Creates a plain object from a MediaAudio message. Also converts values to other types if specified.
                         * @param message MediaAudio
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MediaAudio, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaAudio to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaAudio
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MediaVideo. */
                    interface IMediaVideo {

                        /** MediaVideo ad_duration_millis */
                        ad_duration_millis?: (number|null);

                        /** MediaVideo youtube_video_id */
                        youtube_video_id?: (string|null);

                        /** MediaVideo advertising_id_code */
                        advertising_id_code?: (string|null);

                        /** MediaVideo isci_code */
                        isci_code?: (string|null);
                    }

                    /** Represents a MediaVideo. */
                    class MediaVideo implements IMediaVideo {

                        /**
                         * Constructs a new MediaVideo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMediaVideo);

                        /** MediaVideo ad_duration_millis. */
                        public ad_duration_millis?: (number|null);

                        /** MediaVideo youtube_video_id. */
                        public youtube_video_id?: (string|null);

                        /** MediaVideo advertising_id_code. */
                        public advertising_id_code?: (string|null);

                        /** MediaVideo isci_code. */
                        public isci_code?: (string|null);

                        /**
                         * Creates a new MediaVideo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaVideo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMediaVideo): google.ads.googleads.v23.resources.MediaVideo;

                        /**
                         * Encodes the specified MediaVideo message. Does not implicitly {@link google.ads.googleads.v23.resources.MediaVideo.verify|verify} messages.
                         * @param message MediaVideo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMediaVideo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaVideo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MediaVideo.verify|verify} messages.
                         * @param message MediaVideo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMediaVideo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaVideo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MediaVideo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MediaVideo;

                        /**
                         * Decodes a MediaVideo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaVideo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MediaVideo;

                        /**
                         * Verifies a MediaVideo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaVideo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MediaVideo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MediaVideo;

                        /**
                         * Creates a plain object from a MediaVideo message. Also converts values to other types if specified.
                         * @param message MediaVideo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MediaVideo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaVideo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MediaVideo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MobileAppCategoryConstant. */
                    interface IMobileAppCategoryConstant {

                        /** MobileAppCategoryConstant resource_name */
                        resource_name?: (string|null);

                        /** MobileAppCategoryConstant id */
                        id?: (number|null);

                        /** MobileAppCategoryConstant name */
                        name?: (string|null);
                    }

                    /** Represents a MobileAppCategoryConstant. */
                    class MobileAppCategoryConstant implements IMobileAppCategoryConstant {

                        /**
                         * Constructs a new MobileAppCategoryConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMobileAppCategoryConstant);

                        /** MobileAppCategoryConstant resource_name. */
                        public resource_name: string;

                        /** MobileAppCategoryConstant id. */
                        public id?: (number|null);

                        /** MobileAppCategoryConstant name. */
                        public name?: (string|null);

                        /**
                         * Creates a new MobileAppCategoryConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileAppCategoryConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMobileAppCategoryConstant): google.ads.googleads.v23.resources.MobileAppCategoryConstant;

                        /**
                         * Encodes the specified MobileAppCategoryConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.MobileAppCategoryConstant.verify|verify} messages.
                         * @param message MobileAppCategoryConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMobileAppCategoryConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileAppCategoryConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MobileAppCategoryConstant.verify|verify} messages.
                         * @param message MobileAppCategoryConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMobileAppCategoryConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileAppCategoryConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MobileAppCategoryConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MobileAppCategoryConstant;

                        /**
                         * Decodes a MobileAppCategoryConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MobileAppCategoryConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MobileAppCategoryConstant;

                        /**
                         * Verifies a MobileAppCategoryConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileAppCategoryConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MobileAppCategoryConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MobileAppCategoryConstant;

                        /**
                         * Creates a plain object from a MobileAppCategoryConstant message. Also converts values to other types if specified.
                         * @param message MobileAppCategoryConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MobileAppCategoryConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileAppCategoryConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MobileAppCategoryConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MobileDeviceConstant. */
                    interface IMobileDeviceConstant {

                        /** MobileDeviceConstant resource_name */
                        resource_name?: (string|null);

                        /** MobileDeviceConstant id */
                        id?: (number|null);

                        /** MobileDeviceConstant name */
                        name?: (string|null);

                        /** MobileDeviceConstant manufacturer_name */
                        manufacturer_name?: (string|null);

                        /** MobileDeviceConstant operating_system_name */
                        operating_system_name?: (string|null);

                        /** MobileDeviceConstant type */
                        type?: (google.ads.googleads.v23.enums.MobileDeviceTypeEnum.MobileDeviceType|keyof typeof google.ads.googleads.v23.enums.MobileDeviceTypeEnum.MobileDeviceType|null);
                    }

                    /** Represents a MobileDeviceConstant. */
                    class MobileDeviceConstant implements IMobileDeviceConstant {

                        /**
                         * Constructs a new MobileDeviceConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMobileDeviceConstant);

                        /** MobileDeviceConstant resource_name. */
                        public resource_name: string;

                        /** MobileDeviceConstant id. */
                        public id?: (number|null);

                        /** MobileDeviceConstant name. */
                        public name?: (string|null);

                        /** MobileDeviceConstant manufacturer_name. */
                        public manufacturer_name?: (string|null);

                        /** MobileDeviceConstant operating_system_name. */
                        public operating_system_name?: (string|null);

                        /** MobileDeviceConstant type. */
                        public type: (google.ads.googleads.v23.enums.MobileDeviceTypeEnum.MobileDeviceType|keyof typeof google.ads.googleads.v23.enums.MobileDeviceTypeEnum.MobileDeviceType);

                        /**
                         * Creates a new MobileDeviceConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileDeviceConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMobileDeviceConstant): google.ads.googleads.v23.resources.MobileDeviceConstant;

                        /**
                         * Encodes the specified MobileDeviceConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.MobileDeviceConstant.verify|verify} messages.
                         * @param message MobileDeviceConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMobileDeviceConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileDeviceConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MobileDeviceConstant.verify|verify} messages.
                         * @param message MobileDeviceConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMobileDeviceConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileDeviceConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MobileDeviceConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MobileDeviceConstant;

                        /**
                         * Decodes a MobileDeviceConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MobileDeviceConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MobileDeviceConstant;

                        /**
                         * Verifies a MobileDeviceConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileDeviceConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MobileDeviceConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MobileDeviceConstant;

                        /**
                         * Creates a plain object from a MobileDeviceConstant message. Also converts values to other types if specified.
                         * @param message MobileDeviceConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MobileDeviceConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileDeviceConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MobileDeviceConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineConversionUploadClientSummary. */
                    interface IOfflineConversionUploadClientSummary {

                        /** OfflineConversionUploadClientSummary resource_name */
                        resource_name?: (string|null);

                        /** OfflineConversionUploadClientSummary client */
                        client?: (google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient|keyof typeof google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient|null);

                        /** OfflineConversionUploadClientSummary status */
                        status?: (google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus|keyof typeof google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus|null);

                        /** OfflineConversionUploadClientSummary total_event_count */
                        total_event_count?: (number|null);

                        /** OfflineConversionUploadClientSummary successful_event_count */
                        successful_event_count?: (number|null);

                        /** OfflineConversionUploadClientSummary success_rate */
                        success_rate?: (number|null);

                        /** OfflineConversionUploadClientSummary pending_event_count */
                        pending_event_count?: (number|null);

                        /** OfflineConversionUploadClientSummary pending_rate */
                        pending_rate?: (number|null);

                        /** OfflineConversionUploadClientSummary last_upload_date_time */
                        last_upload_date_time?: (string|null);

                        /** OfflineConversionUploadClientSummary daily_summaries */
                        daily_summaries?: (google.ads.googleads.v23.resources.IOfflineConversionSummary[]|null);

                        /** OfflineConversionUploadClientSummary job_summaries */
                        job_summaries?: (google.ads.googleads.v23.resources.IOfflineConversionSummary[]|null);

                        /** OfflineConversionUploadClientSummary alerts */
                        alerts?: (google.ads.googleads.v23.resources.IOfflineConversionAlert[]|null);
                    }

                    /** Represents an OfflineConversionUploadClientSummary. */
                    class OfflineConversionUploadClientSummary implements IOfflineConversionUploadClientSummary {

                        /**
                         * Constructs a new OfflineConversionUploadClientSummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOfflineConversionUploadClientSummary);

                        /** OfflineConversionUploadClientSummary resource_name. */
                        public resource_name: string;

                        /** OfflineConversionUploadClientSummary client. */
                        public client: (google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient|keyof typeof google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient);

                        /** OfflineConversionUploadClientSummary status. */
                        public status: (google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus|keyof typeof google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus);

                        /** OfflineConversionUploadClientSummary total_event_count. */
                        public total_event_count: number;

                        /** OfflineConversionUploadClientSummary successful_event_count. */
                        public successful_event_count: number;

                        /** OfflineConversionUploadClientSummary success_rate. */
                        public success_rate: number;

                        /** OfflineConversionUploadClientSummary pending_event_count. */
                        public pending_event_count: number;

                        /** OfflineConversionUploadClientSummary pending_rate. */
                        public pending_rate: number;

                        /** OfflineConversionUploadClientSummary last_upload_date_time. */
                        public last_upload_date_time: string;

                        /** OfflineConversionUploadClientSummary daily_summaries. */
                        public daily_summaries: google.ads.googleads.v23.resources.IOfflineConversionSummary[];

                        /** OfflineConversionUploadClientSummary job_summaries. */
                        public job_summaries: google.ads.googleads.v23.resources.IOfflineConversionSummary[];

                        /** OfflineConversionUploadClientSummary alerts. */
                        public alerts: google.ads.googleads.v23.resources.IOfflineConversionAlert[];

                        /**
                         * Creates a new OfflineConversionUploadClientSummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineConversionUploadClientSummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOfflineConversionUploadClientSummary): google.ads.googleads.v23.resources.OfflineConversionUploadClientSummary;

                        /**
                         * Encodes the specified OfflineConversionUploadClientSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionUploadClientSummary.verify|verify} messages.
                         * @param message OfflineConversionUploadClientSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOfflineConversionUploadClientSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineConversionUploadClientSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionUploadClientSummary.verify|verify} messages.
                         * @param message OfflineConversionUploadClientSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOfflineConversionUploadClientSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineConversionUploadClientSummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineConversionUploadClientSummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OfflineConversionUploadClientSummary;

                        /**
                         * Decodes an OfflineConversionUploadClientSummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineConversionUploadClientSummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OfflineConversionUploadClientSummary;

                        /**
                         * Verifies an OfflineConversionUploadClientSummary message.
                         * @param message Plain 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 OfflineConversionUploadClientSummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineConversionUploadClientSummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OfflineConversionUploadClientSummary;

                        /**
                         * Creates a plain object from an OfflineConversionUploadClientSummary message. Also converts values to other types if specified.
                         * @param message OfflineConversionUploadClientSummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OfflineConversionUploadClientSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineConversionUploadClientSummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineConversionUploadClientSummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineConversionSummary. */
                    interface IOfflineConversionSummary {

                        /** OfflineConversionSummary successful_count */
                        successful_count?: (number|null);

                        /** OfflineConversionSummary failed_count */
                        failed_count?: (number|null);

                        /** OfflineConversionSummary pending_count */
                        pending_count?: (number|null);

                        /** OfflineConversionSummary job_id */
                        job_id?: (number|null);

                        /** OfflineConversionSummary upload_date */
                        upload_date?: (string|null);
                    }

                    /** Represents an OfflineConversionSummary. */
                    class OfflineConversionSummary implements IOfflineConversionSummary {

                        /**
                         * Constructs a new OfflineConversionSummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOfflineConversionSummary);

                        /** OfflineConversionSummary successful_count. */
                        public successful_count: number;

                        /** OfflineConversionSummary failed_count. */
                        public failed_count: number;

                        /** OfflineConversionSummary pending_count. */
                        public pending_count: number;

                        /** OfflineConversionSummary job_id. */
                        public job_id?: (number|null);

                        /** OfflineConversionSummary upload_date. */
                        public upload_date?: (string|null);

                        /** OfflineConversionSummary dimension_key. */
                        public dimension_key?: ("job_id"|"upload_date");

                        /**
                         * Creates a new OfflineConversionSummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineConversionSummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOfflineConversionSummary): google.ads.googleads.v23.resources.OfflineConversionSummary;

                        /**
                         * Encodes the specified OfflineConversionSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionSummary.verify|verify} messages.
                         * @param message OfflineConversionSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOfflineConversionSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineConversionSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionSummary.verify|verify} messages.
                         * @param message OfflineConversionSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOfflineConversionSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineConversionSummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineConversionSummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OfflineConversionSummary;

                        /**
                         * Decodes an OfflineConversionSummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineConversionSummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OfflineConversionSummary;

                        /**
                         * Verifies an OfflineConversionSummary message.
                         * @param message Plain 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 OfflineConversionSummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineConversionSummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OfflineConversionSummary;

                        /**
                         * Creates a plain object from an OfflineConversionSummary message. Also converts values to other types if specified.
                         * @param message OfflineConversionSummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OfflineConversionSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineConversionSummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineConversionSummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineConversionAlert. */
                    interface IOfflineConversionAlert {

                        /** OfflineConversionAlert error */
                        error?: (google.ads.googleads.v23.resources.IOfflineConversionError|null);

                        /** OfflineConversionAlert error_percentage */
                        error_percentage?: (number|null);
                    }

                    /** Represents an OfflineConversionAlert. */
                    class OfflineConversionAlert implements IOfflineConversionAlert {

                        /**
                         * Constructs a new OfflineConversionAlert.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOfflineConversionAlert);

                        /** OfflineConversionAlert error. */
                        public error?: (google.ads.googleads.v23.resources.IOfflineConversionError|null);

                        /** OfflineConversionAlert error_percentage. */
                        public error_percentage: number;

                        /**
                         * Creates a new OfflineConversionAlert instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineConversionAlert instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOfflineConversionAlert): google.ads.googleads.v23.resources.OfflineConversionAlert;

                        /**
                         * Encodes the specified OfflineConversionAlert message. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionAlert.verify|verify} messages.
                         * @param message OfflineConversionAlert message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOfflineConversionAlert, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineConversionAlert message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionAlert.verify|verify} messages.
                         * @param message OfflineConversionAlert message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOfflineConversionAlert, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineConversionAlert message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineConversionAlert
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OfflineConversionAlert;

                        /**
                         * Decodes an OfflineConversionAlert message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineConversionAlert
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OfflineConversionAlert;

                        /**
                         * Verifies an OfflineConversionAlert message.
                         * @param message Plain 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 OfflineConversionAlert message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineConversionAlert
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OfflineConversionAlert;

                        /**
                         * Creates a plain object from an OfflineConversionAlert message. Also converts values to other types if specified.
                         * @param message OfflineConversionAlert
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OfflineConversionAlert, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineConversionAlert to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineConversionAlert
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineConversionError. */
                    interface IOfflineConversionError {

                        /** OfflineConversionError collection_size_error */
                        collection_size_error?: (google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|keyof typeof google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|null);

                        /** OfflineConversionError conversion_adjustment_upload_error */
                        conversion_adjustment_upload_error?: (google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|null);

                        /** OfflineConversionError conversion_upload_error */
                        conversion_upload_error?: (google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|null);

                        /** OfflineConversionError date_error */
                        date_error?: (google.ads.googleads.v23.errors.DateErrorEnum.DateError|keyof typeof google.ads.googleads.v23.errors.DateErrorEnum.DateError|null);

                        /** OfflineConversionError distinct_error */
                        distinct_error?: (google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|keyof typeof google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|null);

                        /** OfflineConversionError field_error */
                        field_error?: (google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|keyof typeof google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|null);

                        /** OfflineConversionError mutate_error */
                        mutate_error?: (google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|keyof typeof google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|null);

                        /** OfflineConversionError not_allowlisted_error */
                        not_allowlisted_error?: (google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|keyof typeof google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|null);

                        /** OfflineConversionError string_format_error */
                        string_format_error?: (google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|keyof typeof google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|null);

                        /** OfflineConversionError string_length_error */
                        string_length_error?: (google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|keyof typeof google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|null);
                    }

                    /** Represents an OfflineConversionError. */
                    class OfflineConversionError implements IOfflineConversionError {

                        /**
                         * Constructs a new OfflineConversionError.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOfflineConversionError);

                        /** OfflineConversionError collection_size_error. */
                        public collection_size_error?: (google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|keyof typeof google.ads.googleads.v23.errors.CollectionSizeErrorEnum.CollectionSizeError|null);

                        /** OfflineConversionError conversion_adjustment_upload_error. */
                        public conversion_adjustment_upload_error?: (google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|null);

                        /** OfflineConversionError conversion_upload_error. */
                        public conversion_upload_error?: (google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|keyof typeof google.ads.googleads.v23.errors.ConversionUploadErrorEnum.ConversionUploadError|null);

                        /** OfflineConversionError date_error. */
                        public date_error?: (google.ads.googleads.v23.errors.DateErrorEnum.DateError|keyof typeof google.ads.googleads.v23.errors.DateErrorEnum.DateError|null);

                        /** OfflineConversionError distinct_error. */
                        public distinct_error?: (google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|keyof typeof google.ads.googleads.v23.errors.DistinctErrorEnum.DistinctError|null);

                        /** OfflineConversionError field_error. */
                        public field_error?: (google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|keyof typeof google.ads.googleads.v23.errors.FieldErrorEnum.FieldError|null);

                        /** OfflineConversionError mutate_error. */
                        public mutate_error?: (google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|keyof typeof google.ads.googleads.v23.errors.MutateErrorEnum.MutateError|null);

                        /** OfflineConversionError not_allowlisted_error. */
                        public not_allowlisted_error?: (google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|keyof typeof google.ads.googleads.v23.errors.NotAllowlistedErrorEnum.NotAllowlistedError|null);

                        /** OfflineConversionError string_format_error. */
                        public string_format_error?: (google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|keyof typeof google.ads.googleads.v23.errors.StringFormatErrorEnum.StringFormatError|null);

                        /** OfflineConversionError string_length_error. */
                        public string_length_error?: (google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|keyof typeof google.ads.googleads.v23.errors.StringLengthErrorEnum.StringLengthError|null);

                        /** OfflineConversionError error_code. */
                        public error_code?: ("collection_size_error"|"conversion_adjustment_upload_error"|"conversion_upload_error"|"date_error"|"distinct_error"|"field_error"|"mutate_error"|"not_allowlisted_error"|"string_format_error"|"string_length_error");

                        /**
                         * Creates a new OfflineConversionError instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineConversionError instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOfflineConversionError): google.ads.googleads.v23.resources.OfflineConversionError;

                        /**
                         * Encodes the specified OfflineConversionError message. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionError.verify|verify} messages.
                         * @param message OfflineConversionError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOfflineConversionError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineConversionError message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionError.verify|verify} messages.
                         * @param message OfflineConversionError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOfflineConversionError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineConversionError message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineConversionError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OfflineConversionError;

                        /**
                         * Decodes an OfflineConversionError message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineConversionError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OfflineConversionError;

                        /**
                         * Verifies an OfflineConversionError message.
                         * @param message Plain 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 OfflineConversionError message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineConversionError
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OfflineConversionError;

                        /**
                         * Creates a plain object from an OfflineConversionError message. Also converts values to other types if specified.
                         * @param message OfflineConversionError
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OfflineConversionError, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineConversionError to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineConversionError
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineConversionUploadConversionActionSummary. */
                    interface IOfflineConversionUploadConversionActionSummary {

                        /** OfflineConversionUploadConversionActionSummary resource_name */
                        resource_name?: (string|null);

                        /** OfflineConversionUploadConversionActionSummary client */
                        client?: (google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient|keyof typeof google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient|null);

                        /** OfflineConversionUploadConversionActionSummary conversion_action_id */
                        conversion_action_id?: (number|null);

                        /** OfflineConversionUploadConversionActionSummary conversion_action_name */
                        conversion_action_name?: (string|null);

                        /** OfflineConversionUploadConversionActionSummary status */
                        status?: (google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus|keyof typeof google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus|null);

                        /** OfflineConversionUploadConversionActionSummary total_event_count */
                        total_event_count?: (number|null);

                        /** OfflineConversionUploadConversionActionSummary successful_event_count */
                        successful_event_count?: (number|null);

                        /** OfflineConversionUploadConversionActionSummary pending_event_count */
                        pending_event_count?: (number|null);

                        /** OfflineConversionUploadConversionActionSummary last_upload_date_time */
                        last_upload_date_time?: (string|null);

                        /** OfflineConversionUploadConversionActionSummary daily_summaries */
                        daily_summaries?: (google.ads.googleads.v23.resources.IOfflineConversionSummary[]|null);

                        /** OfflineConversionUploadConversionActionSummary job_summaries */
                        job_summaries?: (google.ads.googleads.v23.resources.IOfflineConversionSummary[]|null);

                        /** OfflineConversionUploadConversionActionSummary alerts */
                        alerts?: (google.ads.googleads.v23.resources.IOfflineConversionAlert[]|null);
                    }

                    /** Represents an OfflineConversionUploadConversionActionSummary. */
                    class OfflineConversionUploadConversionActionSummary implements IOfflineConversionUploadConversionActionSummary {

                        /**
                         * Constructs a new OfflineConversionUploadConversionActionSummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOfflineConversionUploadConversionActionSummary);

                        /** OfflineConversionUploadConversionActionSummary resource_name. */
                        public resource_name: string;

                        /** OfflineConversionUploadConversionActionSummary client. */
                        public client: (google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient|keyof typeof google.ads.googleads.v23.enums.OfflineEventUploadClientEnum.OfflineEventUploadClient);

                        /** OfflineConversionUploadConversionActionSummary conversion_action_id. */
                        public conversion_action_id: number;

                        /** OfflineConversionUploadConversionActionSummary conversion_action_name. */
                        public conversion_action_name: string;

                        /** OfflineConversionUploadConversionActionSummary status. */
                        public status: (google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus|keyof typeof google.ads.googleads.v23.enums.OfflineConversionDiagnosticStatusEnum.OfflineConversionDiagnosticStatus);

                        /** OfflineConversionUploadConversionActionSummary total_event_count. */
                        public total_event_count: number;

                        /** OfflineConversionUploadConversionActionSummary successful_event_count. */
                        public successful_event_count: number;

                        /** OfflineConversionUploadConversionActionSummary pending_event_count. */
                        public pending_event_count: number;

                        /** OfflineConversionUploadConversionActionSummary last_upload_date_time. */
                        public last_upload_date_time: string;

                        /** OfflineConversionUploadConversionActionSummary daily_summaries. */
                        public daily_summaries: google.ads.googleads.v23.resources.IOfflineConversionSummary[];

                        /** OfflineConversionUploadConversionActionSummary job_summaries. */
                        public job_summaries: google.ads.googleads.v23.resources.IOfflineConversionSummary[];

                        /** OfflineConversionUploadConversionActionSummary alerts. */
                        public alerts: google.ads.googleads.v23.resources.IOfflineConversionAlert[];

                        /**
                         * Creates a new OfflineConversionUploadConversionActionSummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineConversionUploadConversionActionSummary instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOfflineConversionUploadConversionActionSummary): google.ads.googleads.v23.resources.OfflineConversionUploadConversionActionSummary;

                        /**
                         * Encodes the specified OfflineConversionUploadConversionActionSummary message. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionUploadConversionActionSummary.verify|verify} messages.
                         * @param message OfflineConversionUploadConversionActionSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOfflineConversionUploadConversionActionSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineConversionUploadConversionActionSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineConversionUploadConversionActionSummary.verify|verify} messages.
                         * @param message OfflineConversionUploadConversionActionSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOfflineConversionUploadConversionActionSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineConversionUploadConversionActionSummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineConversionUploadConversionActionSummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OfflineConversionUploadConversionActionSummary;

                        /**
                         * Decodes an OfflineConversionUploadConversionActionSummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineConversionUploadConversionActionSummary
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OfflineConversionUploadConversionActionSummary;

                        /**
                         * Verifies an OfflineConversionUploadConversionActionSummary message.
                         * @param message Plain 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 OfflineConversionUploadConversionActionSummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineConversionUploadConversionActionSummary
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OfflineConversionUploadConversionActionSummary;

                        /**
                         * Creates a plain object from an OfflineConversionUploadConversionActionSummary message. Also converts values to other types if specified.
                         * @param message OfflineConversionUploadConversionActionSummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OfflineConversionUploadConversionActionSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineConversionUploadConversionActionSummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineConversionUploadConversionActionSummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineUserDataJob. */
                    interface IOfflineUserDataJob {

                        /** OfflineUserDataJob resource_name */
                        resource_name?: (string|null);

                        /** OfflineUserDataJob id */
                        id?: (number|null);

                        /** OfflineUserDataJob external_id */
                        external_id?: (number|null);

                        /** OfflineUserDataJob type */
                        type?: (google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType|null);

                        /** OfflineUserDataJob status */
                        status?: (google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus|null);

                        /** OfflineUserDataJob failure_reason */
                        failure_reason?: (google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason|null);

                        /** OfflineUserDataJob operation_metadata */
                        operation_metadata?: (google.ads.googleads.v23.resources.IOfflineUserDataJobMetadata|null);

                        /** OfflineUserDataJob customer_match_user_list_metadata */
                        customer_match_user_list_metadata?: (google.ads.googleads.v23.common.ICustomerMatchUserListMetadata|null);

                        /** OfflineUserDataJob store_sales_metadata */
                        store_sales_metadata?: (google.ads.googleads.v23.common.IStoreSalesMetadata|null);
                    }

                    /** Represents an OfflineUserDataJob. */
                    class OfflineUserDataJob implements IOfflineUserDataJob {

                        /**
                         * Constructs a new OfflineUserDataJob.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOfflineUserDataJob);

                        /** OfflineUserDataJob resource_name. */
                        public resource_name: string;

                        /** OfflineUserDataJob id. */
                        public id?: (number|null);

                        /** OfflineUserDataJob external_id. */
                        public external_id?: (number|null);

                        /** OfflineUserDataJob type. */
                        public type: (google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType);

                        /** OfflineUserDataJob status. */
                        public status: (google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus);

                        /** OfflineUserDataJob failure_reason. */
                        public failure_reason: (google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason);

                        /** OfflineUserDataJob operation_metadata. */
                        public operation_metadata?: (google.ads.googleads.v23.resources.IOfflineUserDataJobMetadata|null);

                        /** OfflineUserDataJob customer_match_user_list_metadata. */
                        public customer_match_user_list_metadata?: (google.ads.googleads.v23.common.ICustomerMatchUserListMetadata|null);

                        /** OfflineUserDataJob store_sales_metadata. */
                        public store_sales_metadata?: (google.ads.googleads.v23.common.IStoreSalesMetadata|null);

                        /** OfflineUserDataJob metadata. */
                        public metadata?: ("customer_match_user_list_metadata"|"store_sales_metadata");

                        /**
                         * Creates a new OfflineUserDataJob instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJob instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOfflineUserDataJob): google.ads.googleads.v23.resources.OfflineUserDataJob;

                        /**
                         * Encodes the specified OfflineUserDataJob message. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineUserDataJob.verify|verify} messages.
                         * @param message OfflineUserDataJob message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOfflineUserDataJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJob message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineUserDataJob.verify|verify} messages.
                         * @param message OfflineUserDataJob message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOfflineUserDataJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJob message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJob
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OfflineUserDataJob;

                        /**
                         * Decodes an OfflineUserDataJob message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJob
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OfflineUserDataJob;

                        /**
                         * Verifies an OfflineUserDataJob message.
                         * @param message Plain 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 OfflineUserDataJob message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJob
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OfflineUserDataJob;

                        /**
                         * Creates a plain object from an OfflineUserDataJob message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJob
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OfflineUserDataJob, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJob to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJob
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineUserDataJobMetadata. */
                    interface IOfflineUserDataJobMetadata {

                        /** OfflineUserDataJobMetadata match_rate_range */
                        match_rate_range?: (google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum.OfflineUserDataJobMatchRateRange|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum.OfflineUserDataJobMatchRateRange|null);
                    }

                    /** Represents an OfflineUserDataJobMetadata. */
                    class OfflineUserDataJobMetadata implements IOfflineUserDataJobMetadata {

                        /**
                         * Constructs a new OfflineUserDataJobMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOfflineUserDataJobMetadata);

                        /** OfflineUserDataJobMetadata match_rate_range. */
                        public match_rate_range: (google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum.OfflineUserDataJobMatchRateRange|keyof typeof google.ads.googleads.v23.enums.OfflineUserDataJobMatchRateRangeEnum.OfflineUserDataJobMatchRateRange);

                        /**
                         * Creates a new OfflineUserDataJobMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJobMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOfflineUserDataJobMetadata): google.ads.googleads.v23.resources.OfflineUserDataJobMetadata;

                        /**
                         * Encodes the specified OfflineUserDataJobMetadata message. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineUserDataJobMetadata.verify|verify} messages.
                         * @param message OfflineUserDataJobMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOfflineUserDataJobMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OfflineUserDataJobMetadata.verify|verify} messages.
                         * @param message OfflineUserDataJobMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOfflineUserDataJobMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJobMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OfflineUserDataJobMetadata;

                        /**
                         * Decodes an OfflineUserDataJobMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJobMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OfflineUserDataJobMetadata;

                        /**
                         * Verifies an OfflineUserDataJobMetadata message.
                         * @param message Plain 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 OfflineUserDataJobMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJobMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OfflineUserDataJobMetadata;

                        /**
                         * Creates a plain object from an OfflineUserDataJobMetadata message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJobMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OfflineUserDataJobMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJobMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OperatingSystemVersionConstant. */
                    interface IOperatingSystemVersionConstant {

                        /** OperatingSystemVersionConstant resource_name */
                        resource_name?: (string|null);

                        /** OperatingSystemVersionConstant id */
                        id?: (number|null);

                        /** OperatingSystemVersionConstant name */
                        name?: (string|null);

                        /** OperatingSystemVersionConstant os_major_version */
                        os_major_version?: (number|null);

                        /** OperatingSystemVersionConstant os_minor_version */
                        os_minor_version?: (number|null);

                        /** OperatingSystemVersionConstant operator_type */
                        operator_type?: (google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType|keyof typeof google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType|null);
                    }

                    /** Represents an OperatingSystemVersionConstant. */
                    class OperatingSystemVersionConstant implements IOperatingSystemVersionConstant {

                        /**
                         * Constructs a new OperatingSystemVersionConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IOperatingSystemVersionConstant);

                        /** OperatingSystemVersionConstant resource_name. */
                        public resource_name: string;

                        /** OperatingSystemVersionConstant id. */
                        public id?: (number|null);

                        /** OperatingSystemVersionConstant name. */
                        public name?: (string|null);

                        /** OperatingSystemVersionConstant os_major_version. */
                        public os_major_version?: (number|null);

                        /** OperatingSystemVersionConstant os_minor_version. */
                        public os_minor_version?: (number|null);

                        /** OperatingSystemVersionConstant operator_type. */
                        public operator_type: (google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType|keyof typeof google.ads.googleads.v23.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType);

                        /**
                         * Creates a new OperatingSystemVersionConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperatingSystemVersionConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IOperatingSystemVersionConstant): google.ads.googleads.v23.resources.OperatingSystemVersionConstant;

                        /**
                         * Encodes the specified OperatingSystemVersionConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.OperatingSystemVersionConstant.verify|verify} messages.
                         * @param message OperatingSystemVersionConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IOperatingSystemVersionConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatingSystemVersionConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.OperatingSystemVersionConstant.verify|verify} messages.
                         * @param message OperatingSystemVersionConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IOperatingSystemVersionConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatingSystemVersionConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperatingSystemVersionConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.OperatingSystemVersionConstant;

                        /**
                         * Decodes an OperatingSystemVersionConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperatingSystemVersionConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.OperatingSystemVersionConstant;

                        /**
                         * Verifies an OperatingSystemVersionConstant message.
                         * @param message Plain 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 OperatingSystemVersionConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OperatingSystemVersionConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.OperatingSystemVersionConstant;

                        /**
                         * Creates a plain object from an OperatingSystemVersionConstant message. Also converts values to other types if specified.
                         * @param message OperatingSystemVersionConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.OperatingSystemVersionConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatingSystemVersionConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OperatingSystemVersionConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PaidOrganicSearchTermView. */
                    interface IPaidOrganicSearchTermView {

                        /** PaidOrganicSearchTermView resource_name */
                        resource_name?: (string|null);

                        /** PaidOrganicSearchTermView search_term */
                        search_term?: (string|null);
                    }

                    /** Represents a PaidOrganicSearchTermView. */
                    class PaidOrganicSearchTermView implements IPaidOrganicSearchTermView {

                        /**
                         * Constructs a new PaidOrganicSearchTermView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IPaidOrganicSearchTermView);

                        /** PaidOrganicSearchTermView resource_name. */
                        public resource_name: string;

                        /** PaidOrganicSearchTermView search_term. */
                        public search_term?: (string|null);

                        /**
                         * Creates a new PaidOrganicSearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PaidOrganicSearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IPaidOrganicSearchTermView): google.ads.googleads.v23.resources.PaidOrganicSearchTermView;

                        /**
                         * Encodes the specified PaidOrganicSearchTermView message. Does not implicitly {@link google.ads.googleads.v23.resources.PaidOrganicSearchTermView.verify|verify} messages.
                         * @param message PaidOrganicSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IPaidOrganicSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaidOrganicSearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.PaidOrganicSearchTermView.verify|verify} messages.
                         * @param message PaidOrganicSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IPaidOrganicSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaidOrganicSearchTermView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PaidOrganicSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.PaidOrganicSearchTermView;

                        /**
                         * Decodes a PaidOrganicSearchTermView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PaidOrganicSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.PaidOrganicSearchTermView;

                        /**
                         * Verifies a PaidOrganicSearchTermView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaidOrganicSearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PaidOrganicSearchTermView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.PaidOrganicSearchTermView;

                        /**
                         * Creates a plain object from a PaidOrganicSearchTermView message. Also converts values to other types if specified.
                         * @param message PaidOrganicSearchTermView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.PaidOrganicSearchTermView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaidOrganicSearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PaidOrganicSearchTermView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ParentalStatusView. */
                    interface IParentalStatusView {

                        /** ParentalStatusView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a ParentalStatusView. */
                    class ParentalStatusView implements IParentalStatusView {

                        /**
                         * Constructs a new ParentalStatusView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IParentalStatusView);

                        /** ParentalStatusView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ParentalStatusView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ParentalStatusView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IParentalStatusView): google.ads.googleads.v23.resources.ParentalStatusView;

                        /**
                         * Encodes the specified ParentalStatusView message. Does not implicitly {@link google.ads.googleads.v23.resources.ParentalStatusView.verify|verify} messages.
                         * @param message ParentalStatusView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IParentalStatusView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ParentalStatusView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ParentalStatusView.verify|verify} messages.
                         * @param message ParentalStatusView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IParentalStatusView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ParentalStatusView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ParentalStatusView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ParentalStatusView;

                        /**
                         * Decodes a ParentalStatusView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ParentalStatusView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ParentalStatusView;

                        /**
                         * Verifies a ParentalStatusView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ParentalStatusView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ParentalStatusView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ParentalStatusView;

                        /**
                         * Creates a plain object from a ParentalStatusView message. Also converts values to other types if specified.
                         * @param message ParentalStatusView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ParentalStatusView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ParentalStatusView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ParentalStatusView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PaymentsAccount. */
                    interface IPaymentsAccount {

                        /** PaymentsAccount resource_name */
                        resource_name?: (string|null);

                        /** PaymentsAccount payments_account_id */
                        payments_account_id?: (string|null);

                        /** PaymentsAccount name */
                        name?: (string|null);

                        /** PaymentsAccount currency_code */
                        currency_code?: (string|null);

                        /** PaymentsAccount payments_profile_id */
                        payments_profile_id?: (string|null);

                        /** PaymentsAccount secondary_payments_profile_id */
                        secondary_payments_profile_id?: (string|null);

                        /** PaymentsAccount paying_manager_customer */
                        paying_manager_customer?: (string|null);
                    }

                    /** Represents a PaymentsAccount. */
                    class PaymentsAccount implements IPaymentsAccount {

                        /**
                         * Constructs a new PaymentsAccount.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IPaymentsAccount);

                        /** PaymentsAccount resource_name. */
                        public resource_name: string;

                        /** PaymentsAccount payments_account_id. */
                        public payments_account_id?: (string|null);

                        /** PaymentsAccount name. */
                        public name?: (string|null);

                        /** PaymentsAccount currency_code. */
                        public currency_code?: (string|null);

                        /** PaymentsAccount payments_profile_id. */
                        public payments_profile_id?: (string|null);

                        /** PaymentsAccount secondary_payments_profile_id. */
                        public secondary_payments_profile_id?: (string|null);

                        /** PaymentsAccount paying_manager_customer. */
                        public paying_manager_customer?: (string|null);

                        /**
                         * Creates a new PaymentsAccount instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PaymentsAccount instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IPaymentsAccount): google.ads.googleads.v23.resources.PaymentsAccount;

                        /**
                         * Encodes the specified PaymentsAccount message. Does not implicitly {@link google.ads.googleads.v23.resources.PaymentsAccount.verify|verify} messages.
                         * @param message PaymentsAccount message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IPaymentsAccount, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaymentsAccount message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.PaymentsAccount.verify|verify} messages.
                         * @param message PaymentsAccount message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IPaymentsAccount, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaymentsAccount message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PaymentsAccount
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.PaymentsAccount;

                        /**
                         * Decodes a PaymentsAccount message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PaymentsAccount
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.PaymentsAccount;

                        /**
                         * Verifies a PaymentsAccount message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaymentsAccount message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PaymentsAccount
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.PaymentsAccount;

                        /**
                         * Creates a plain object from a PaymentsAccount message. Also converts values to other types if specified.
                         * @param message PaymentsAccount
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.PaymentsAccount, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaymentsAccount to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PaymentsAccount
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PerStoreView. */
                    interface IPerStoreView {

                        /** PerStoreView resource_name */
                        resource_name?: (string|null);

                        /** PerStoreView place_id */
                        place_id?: (string|null);

                        /** PerStoreView address1 */
                        address1?: (string|null);

                        /** PerStoreView address2 */
                        address2?: (string|null);

                        /** PerStoreView business_name */
                        business_name?: (string|null);

                        /** PerStoreView city */
                        city?: (string|null);

                        /** PerStoreView country_code */
                        country_code?: (string|null);

                        /** PerStoreView phone_number */
                        phone_number?: (string|null);

                        /** PerStoreView postal_code */
                        postal_code?: (string|null);

                        /** PerStoreView province */
                        province?: (string|null);
                    }

                    /** Represents a PerStoreView. */
                    class PerStoreView implements IPerStoreView {

                        /**
                         * Constructs a new PerStoreView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IPerStoreView);

                        /** PerStoreView resource_name. */
                        public resource_name: string;

                        /** PerStoreView place_id. */
                        public place_id: string;

                        /** PerStoreView address1. */
                        public address1: string;

                        /** PerStoreView address2. */
                        public address2: string;

                        /** PerStoreView business_name. */
                        public business_name: string;

                        /** PerStoreView city. */
                        public city: string;

                        /** PerStoreView country_code. */
                        public country_code: string;

                        /** PerStoreView phone_number. */
                        public phone_number: string;

                        /** PerStoreView postal_code. */
                        public postal_code: string;

                        /** PerStoreView province. */
                        public province: string;

                        /**
                         * Creates a new PerStoreView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PerStoreView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IPerStoreView): google.ads.googleads.v23.resources.PerStoreView;

                        /**
                         * Encodes the specified PerStoreView message. Does not implicitly {@link google.ads.googleads.v23.resources.PerStoreView.verify|verify} messages.
                         * @param message PerStoreView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IPerStoreView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PerStoreView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.PerStoreView.verify|verify} messages.
                         * @param message PerStoreView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IPerStoreView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PerStoreView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PerStoreView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.PerStoreView;

                        /**
                         * Decodes a PerStoreView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PerStoreView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.PerStoreView;

                        /**
                         * Verifies a PerStoreView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PerStoreView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PerStoreView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.PerStoreView;

                        /**
                         * Creates a plain object from a PerStoreView message. Also converts values to other types if specified.
                         * @param message PerStoreView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.PerStoreView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PerStoreView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PerStoreView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PerformanceMaxPlacementView. */
                    interface IPerformanceMaxPlacementView {

                        /** PerformanceMaxPlacementView resource_name */
                        resource_name?: (string|null);

                        /** PerformanceMaxPlacementView placement */
                        placement?: (string|null);

                        /** PerformanceMaxPlacementView display_name */
                        display_name?: (string|null);

                        /** PerformanceMaxPlacementView target_url */
                        target_url?: (string|null);

                        /** PerformanceMaxPlacementView placement_type */
                        placement_type?: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|null);
                    }

                    /** Represents a PerformanceMaxPlacementView. */
                    class PerformanceMaxPlacementView implements IPerformanceMaxPlacementView {

                        /**
                         * Constructs a new PerformanceMaxPlacementView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IPerformanceMaxPlacementView);

                        /** PerformanceMaxPlacementView resource_name. */
                        public resource_name: string;

                        /** PerformanceMaxPlacementView placement. */
                        public placement?: (string|null);

                        /** PerformanceMaxPlacementView display_name. */
                        public display_name?: (string|null);

                        /** PerformanceMaxPlacementView target_url. */
                        public target_url?: (string|null);

                        /** PerformanceMaxPlacementView placement_type. */
                        public placement_type: (google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v23.enums.PlacementTypeEnum.PlacementType);

                        /**
                         * Creates a new PerformanceMaxPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PerformanceMaxPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IPerformanceMaxPlacementView): google.ads.googleads.v23.resources.PerformanceMaxPlacementView;

                        /**
                         * Encodes the specified PerformanceMaxPlacementView message. Does not implicitly {@link google.ads.googleads.v23.resources.PerformanceMaxPlacementView.verify|verify} messages.
                         * @param message PerformanceMaxPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IPerformanceMaxPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PerformanceMaxPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.PerformanceMaxPlacementView.verify|verify} messages.
                         * @param message PerformanceMaxPlacementView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IPerformanceMaxPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PerformanceMaxPlacementView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PerformanceMaxPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.PerformanceMaxPlacementView;

                        /**
                         * Decodes a PerformanceMaxPlacementView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PerformanceMaxPlacementView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.PerformanceMaxPlacementView;

                        /**
                         * Verifies a PerformanceMaxPlacementView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PerformanceMaxPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PerformanceMaxPlacementView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.PerformanceMaxPlacementView;

                        /**
                         * Creates a plain object from a PerformanceMaxPlacementView message. Also converts values to other types if specified.
                         * @param message PerformanceMaxPlacementView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.PerformanceMaxPlacementView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PerformanceMaxPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PerformanceMaxPlacementView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductCategoryConstant. */
                    interface IProductCategoryConstant {

                        /** ProductCategoryConstant resource_name */
                        resource_name?: (string|null);

                        /** ProductCategoryConstant category_id */
                        category_id?: (number|null);

                        /** ProductCategoryConstant product_category_constant_parent */
                        product_category_constant_parent?: (string|null);

                        /** ProductCategoryConstant level */
                        level?: (google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel|keyof typeof google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel|null);

                        /** ProductCategoryConstant state */
                        state?: (google.ads.googleads.v23.enums.ProductCategoryStateEnum.ProductCategoryState|keyof typeof google.ads.googleads.v23.enums.ProductCategoryStateEnum.ProductCategoryState|null);

                        /** ProductCategoryConstant localizations */
                        localizations?: (google.ads.googleads.v23.resources.ProductCategoryConstant.IProductCategoryLocalization[]|null);
                    }

                    /** Represents a ProductCategoryConstant. */
                    class ProductCategoryConstant implements IProductCategoryConstant {

                        /**
                         * Constructs a new ProductCategoryConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IProductCategoryConstant);

                        /** ProductCategoryConstant resource_name. */
                        public resource_name: string;

                        /** ProductCategoryConstant category_id. */
                        public category_id: number;

                        /** ProductCategoryConstant product_category_constant_parent. */
                        public product_category_constant_parent?: (string|null);

                        /** ProductCategoryConstant level. */
                        public level: (google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel|keyof typeof google.ads.googleads.v23.enums.ProductCategoryLevelEnum.ProductCategoryLevel);

                        /** ProductCategoryConstant state. */
                        public state: (google.ads.googleads.v23.enums.ProductCategoryStateEnum.ProductCategoryState|keyof typeof google.ads.googleads.v23.enums.ProductCategoryStateEnum.ProductCategoryState);

                        /** ProductCategoryConstant localizations. */
                        public localizations: google.ads.googleads.v23.resources.ProductCategoryConstant.IProductCategoryLocalization[];

                        /**
                         * Creates a new ProductCategoryConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductCategoryConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IProductCategoryConstant): google.ads.googleads.v23.resources.ProductCategoryConstant;

                        /**
                         * Encodes the specified ProductCategoryConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.ProductCategoryConstant.verify|verify} messages.
                         * @param message ProductCategoryConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IProductCategoryConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCategoryConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ProductCategoryConstant.verify|verify} messages.
                         * @param message ProductCategoryConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IProductCategoryConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCategoryConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductCategoryConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ProductCategoryConstant;

                        /**
                         * Decodes a ProductCategoryConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductCategoryConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ProductCategoryConstant;

                        /**
                         * Verifies a ProductCategoryConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductCategoryConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductCategoryConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ProductCategoryConstant;

                        /**
                         * Creates a plain object from a ProductCategoryConstant message. Also converts values to other types if specified.
                         * @param message ProductCategoryConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ProductCategoryConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCategoryConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductCategoryConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductCategoryConstant {

                        /** Properties of a ProductCategoryLocalization. */
                        interface IProductCategoryLocalization {

                            /** ProductCategoryLocalization region_code */
                            region_code?: (string|null);

                            /** ProductCategoryLocalization language_code */
                            language_code?: (string|null);

                            /** ProductCategoryLocalization value */
                            value?: (string|null);
                        }

                        /** Represents a ProductCategoryLocalization. */
                        class ProductCategoryLocalization implements IProductCategoryLocalization {

                            /**
                             * Constructs a new ProductCategoryLocalization.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ProductCategoryConstant.IProductCategoryLocalization);

                            /** ProductCategoryLocalization region_code. */
                            public region_code: string;

                            /** ProductCategoryLocalization language_code. */
                            public language_code: string;

                            /** ProductCategoryLocalization value. */
                            public value: string;

                            /**
                             * Creates a new ProductCategoryLocalization instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductCategoryLocalization instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ProductCategoryConstant.IProductCategoryLocalization): google.ads.googleads.v23.resources.ProductCategoryConstant.ProductCategoryLocalization;

                            /**
                             * Encodes the specified ProductCategoryLocalization message. Does not implicitly {@link google.ads.googleads.v23.resources.ProductCategoryConstant.ProductCategoryLocalization.verify|verify} messages.
                             * @param message ProductCategoryLocalization message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ProductCategoryConstant.IProductCategoryLocalization, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductCategoryLocalization message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ProductCategoryConstant.ProductCategoryLocalization.verify|verify} messages.
                             * @param message ProductCategoryLocalization message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ProductCategoryConstant.IProductCategoryLocalization, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductCategoryLocalization message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductCategoryLocalization
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ProductCategoryConstant.ProductCategoryLocalization;

                            /**
                             * Decodes a ProductCategoryLocalization message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductCategoryLocalization
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ProductCategoryConstant.ProductCategoryLocalization;

                            /**
                             * Verifies a ProductCategoryLocalization message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductCategoryLocalization message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductCategoryLocalization
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ProductCategoryConstant.ProductCategoryLocalization;

                            /**
                             * Creates a plain object from a ProductCategoryLocalization message. Also converts values to other types if specified.
                             * @param message ProductCategoryLocalization
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ProductCategoryConstant.ProductCategoryLocalization, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductCategoryLocalization to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductCategoryLocalization
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a ProductGroupView. */
                    interface IProductGroupView {

                        /** ProductGroupView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a ProductGroupView. */
                    class ProductGroupView implements IProductGroupView {

                        /**
                         * Constructs a new ProductGroupView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IProductGroupView);

                        /** ProductGroupView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ProductGroupView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductGroupView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IProductGroupView): google.ads.googleads.v23.resources.ProductGroupView;

                        /**
                         * Encodes the specified ProductGroupView message. Does not implicitly {@link google.ads.googleads.v23.resources.ProductGroupView.verify|verify} messages.
                         * @param message ProductGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IProductGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductGroupView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ProductGroupView.verify|verify} messages.
                         * @param message ProductGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IProductGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductGroupView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ProductGroupView;

                        /**
                         * Decodes a ProductGroupView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ProductGroupView;

                        /**
                         * Verifies a ProductGroupView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductGroupView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductGroupView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ProductGroupView;

                        /**
                         * Creates a plain object from a ProductGroupView message. Also converts values to other types if specified.
                         * @param message ProductGroupView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ProductGroupView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductGroupView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductGroupView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductLink. */
                    interface IProductLink {

                        /** ProductLink resource_name */
                        resource_name?: (string|null);

                        /** ProductLink product_link_id */
                        product_link_id?: (number|null);

                        /** ProductLink type */
                        type?: (google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType|keyof typeof google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType|null);

                        /** ProductLink data_partner */
                        data_partner?: (google.ads.googleads.v23.resources.IDataPartnerIdentifier|null);

                        /** ProductLink google_ads */
                        google_ads?: (google.ads.googleads.v23.resources.IGoogleAdsIdentifier|null);

                        /** ProductLink merchant_center */
                        merchant_center?: (google.ads.googleads.v23.resources.IMerchantCenterIdentifier|null);

                        /** ProductLink advertising_partner */
                        advertising_partner?: (google.ads.googleads.v23.resources.IAdvertisingPartnerIdentifier|null);
                    }

                    /** Represents a ProductLink. */
                    class ProductLink implements IProductLink {

                        /**
                         * Constructs a new ProductLink.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IProductLink);

                        /** ProductLink resource_name. */
                        public resource_name: string;

                        /** ProductLink product_link_id. */
                        public product_link_id?: (number|null);

                        /** ProductLink type. */
                        public type: (google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType|keyof typeof google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType);

                        /** ProductLink data_partner. */
                        public data_partner?: (google.ads.googleads.v23.resources.IDataPartnerIdentifier|null);

                        /** ProductLink google_ads. */
                        public google_ads?: (google.ads.googleads.v23.resources.IGoogleAdsIdentifier|null);

                        /** ProductLink merchant_center. */
                        public merchant_center?: (google.ads.googleads.v23.resources.IMerchantCenterIdentifier|null);

                        /** ProductLink advertising_partner. */
                        public advertising_partner?: (google.ads.googleads.v23.resources.IAdvertisingPartnerIdentifier|null);

                        /** ProductLink linked_product. */
                        public linked_product?: ("data_partner"|"google_ads"|"merchant_center"|"advertising_partner");

                        /**
                         * Creates a new ProductLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductLink instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IProductLink): google.ads.googleads.v23.resources.ProductLink;

                        /**
                         * Encodes the specified ProductLink message. Does not implicitly {@link google.ads.googleads.v23.resources.ProductLink.verify|verify} messages.
                         * @param message ProductLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IProductLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductLink message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ProductLink.verify|verify} messages.
                         * @param message ProductLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IProductLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductLink message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ProductLink;

                        /**
                         * Decodes a ProductLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ProductLink;

                        /**
                         * Verifies a ProductLink message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductLink message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductLink
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ProductLink;

                        /**
                         * Creates a plain object from a ProductLink message. Also converts values to other types if specified.
                         * @param message ProductLink
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ProductLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductLink
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DataPartnerIdentifier. */
                    interface IDataPartnerIdentifier {

                        /** DataPartnerIdentifier data_partner_id */
                        data_partner_id?: (number|null);
                    }

                    /** Represents a DataPartnerIdentifier. */
                    class DataPartnerIdentifier implements IDataPartnerIdentifier {

                        /**
                         * Constructs a new DataPartnerIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IDataPartnerIdentifier);

                        /** DataPartnerIdentifier data_partner_id. */
                        public data_partner_id?: (number|null);

                        /**
                         * Creates a new DataPartnerIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DataPartnerIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IDataPartnerIdentifier): google.ads.googleads.v23.resources.DataPartnerIdentifier;

                        /**
                         * Encodes the specified DataPartnerIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.DataPartnerIdentifier.verify|verify} messages.
                         * @param message DataPartnerIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IDataPartnerIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataPartnerIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.DataPartnerIdentifier.verify|verify} messages.
                         * @param message DataPartnerIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IDataPartnerIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataPartnerIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DataPartnerIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.DataPartnerIdentifier;

                        /**
                         * Decodes a DataPartnerIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DataPartnerIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.DataPartnerIdentifier;

                        /**
                         * Verifies a DataPartnerIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataPartnerIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DataPartnerIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.DataPartnerIdentifier;

                        /**
                         * Creates a plain object from a DataPartnerIdentifier message. Also converts values to other types if specified.
                         * @param message DataPartnerIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.DataPartnerIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataPartnerIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DataPartnerIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GoogleAdsIdentifier. */
                    interface IGoogleAdsIdentifier {

                        /** GoogleAdsIdentifier customer */
                        customer?: (string|null);
                    }

                    /** Represents a GoogleAdsIdentifier. */
                    class GoogleAdsIdentifier implements IGoogleAdsIdentifier {

                        /**
                         * Constructs a new GoogleAdsIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IGoogleAdsIdentifier);

                        /** GoogleAdsIdentifier customer. */
                        public customer?: (string|null);

                        /**
                         * Creates a new GoogleAdsIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IGoogleAdsIdentifier): google.ads.googleads.v23.resources.GoogleAdsIdentifier;

                        /**
                         * Encodes the specified GoogleAdsIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.GoogleAdsIdentifier.verify|verify} messages.
                         * @param message GoogleAdsIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IGoogleAdsIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.GoogleAdsIdentifier.verify|verify} messages.
                         * @param message GoogleAdsIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IGoogleAdsIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleAdsIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.GoogleAdsIdentifier;

                        /**
                         * Decodes a GoogleAdsIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.GoogleAdsIdentifier;

                        /**
                         * Verifies a GoogleAdsIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleAdsIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.GoogleAdsIdentifier;

                        /**
                         * Creates a plain object from a GoogleAdsIdentifier message. Also converts values to other types if specified.
                         * @param message GoogleAdsIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.GoogleAdsIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleAdsIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MerchantCenterIdentifier. */
                    interface IMerchantCenterIdentifier {

                        /** MerchantCenterIdentifier merchant_center_id */
                        merchant_center_id?: (number|null);
                    }

                    /** Represents a MerchantCenterIdentifier. */
                    class MerchantCenterIdentifier implements IMerchantCenterIdentifier {

                        /**
                         * Constructs a new MerchantCenterIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMerchantCenterIdentifier);

                        /** MerchantCenterIdentifier merchant_center_id. */
                        public merchant_center_id?: (number|null);

                        /**
                         * Creates a new MerchantCenterIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MerchantCenterIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMerchantCenterIdentifier): google.ads.googleads.v23.resources.MerchantCenterIdentifier;

                        /**
                         * Encodes the specified MerchantCenterIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.MerchantCenterIdentifier.verify|verify} messages.
                         * @param message MerchantCenterIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMerchantCenterIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MerchantCenterIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MerchantCenterIdentifier.verify|verify} messages.
                         * @param message MerchantCenterIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMerchantCenterIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MerchantCenterIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MerchantCenterIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MerchantCenterIdentifier;

                        /**
                         * Decodes a MerchantCenterIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MerchantCenterIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MerchantCenterIdentifier;

                        /**
                         * Verifies a MerchantCenterIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MerchantCenterIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MerchantCenterIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MerchantCenterIdentifier;

                        /**
                         * Creates a plain object from a MerchantCenterIdentifier message. Also converts values to other types if specified.
                         * @param message MerchantCenterIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MerchantCenterIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MerchantCenterIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MerchantCenterIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdvertisingPartnerIdentifier. */
                    interface IAdvertisingPartnerIdentifier {

                        /** AdvertisingPartnerIdentifier customer */
                        customer?: (string|null);
                    }

                    /** Represents an AdvertisingPartnerIdentifier. */
                    class AdvertisingPartnerIdentifier implements IAdvertisingPartnerIdentifier {

                        /**
                         * Constructs a new AdvertisingPartnerIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdvertisingPartnerIdentifier);

                        /** AdvertisingPartnerIdentifier customer. */
                        public customer?: (string|null);

                        /**
                         * Creates a new AdvertisingPartnerIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdvertisingPartnerIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdvertisingPartnerIdentifier): google.ads.googleads.v23.resources.AdvertisingPartnerIdentifier;

                        /**
                         * Encodes the specified AdvertisingPartnerIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.AdvertisingPartnerIdentifier.verify|verify} messages.
                         * @param message AdvertisingPartnerIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdvertisingPartnerIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdvertisingPartnerIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdvertisingPartnerIdentifier.verify|verify} messages.
                         * @param message AdvertisingPartnerIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdvertisingPartnerIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdvertisingPartnerIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdvertisingPartnerIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdvertisingPartnerIdentifier;

                        /**
                         * Decodes an AdvertisingPartnerIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdvertisingPartnerIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdvertisingPartnerIdentifier;

                        /**
                         * Verifies an AdvertisingPartnerIdentifier message.
                         * @param message Plain 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 AdvertisingPartnerIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdvertisingPartnerIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdvertisingPartnerIdentifier;

                        /**
                         * Creates a plain object from an AdvertisingPartnerIdentifier message. Also converts values to other types if specified.
                         * @param message AdvertisingPartnerIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdvertisingPartnerIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdvertisingPartnerIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdvertisingPartnerIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductLinkInvitation. */
                    interface IProductLinkInvitation {

                        /** ProductLinkInvitation resource_name */
                        resource_name?: (string|null);

                        /** ProductLinkInvitation product_link_invitation_id */
                        product_link_invitation_id?: (number|null);

                        /** ProductLinkInvitation status */
                        status?: (google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus|keyof typeof google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus|null);

                        /** ProductLinkInvitation type */
                        type?: (google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType|keyof typeof google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType|null);

                        /** ProductLinkInvitation hotel_center */
                        hotel_center?: (google.ads.googleads.v23.resources.IHotelCenterLinkInvitationIdentifier|null);

                        /** ProductLinkInvitation merchant_center */
                        merchant_center?: (google.ads.googleads.v23.resources.IMerchantCenterLinkInvitationIdentifier|null);

                        /** ProductLinkInvitation advertising_partner */
                        advertising_partner?: (google.ads.googleads.v23.resources.IAdvertisingPartnerLinkInvitationIdentifier|null);
                    }

                    /** Represents a ProductLinkInvitation. */
                    class ProductLinkInvitation implements IProductLinkInvitation {

                        /**
                         * Constructs a new ProductLinkInvitation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IProductLinkInvitation);

                        /** ProductLinkInvitation resource_name. */
                        public resource_name: string;

                        /** ProductLinkInvitation product_link_invitation_id. */
                        public product_link_invitation_id: number;

                        /** ProductLinkInvitation status. */
                        public status: (google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus|keyof typeof google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus);

                        /** ProductLinkInvitation type. */
                        public type: (google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType|keyof typeof google.ads.googleads.v23.enums.LinkedProductTypeEnum.LinkedProductType);

                        /** ProductLinkInvitation hotel_center. */
                        public hotel_center?: (google.ads.googleads.v23.resources.IHotelCenterLinkInvitationIdentifier|null);

                        /** ProductLinkInvitation merchant_center. */
                        public merchant_center?: (google.ads.googleads.v23.resources.IMerchantCenterLinkInvitationIdentifier|null);

                        /** ProductLinkInvitation advertising_partner. */
                        public advertising_partner?: (google.ads.googleads.v23.resources.IAdvertisingPartnerLinkInvitationIdentifier|null);

                        /** ProductLinkInvitation invited_account. */
                        public invited_account?: ("hotel_center"|"merchant_center"|"advertising_partner");

                        /**
                         * Creates a new ProductLinkInvitation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductLinkInvitation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IProductLinkInvitation): google.ads.googleads.v23.resources.ProductLinkInvitation;

                        /**
                         * Encodes the specified ProductLinkInvitation message. Does not implicitly {@link google.ads.googleads.v23.resources.ProductLinkInvitation.verify|verify} messages.
                         * @param message ProductLinkInvitation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IProductLinkInvitation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductLinkInvitation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ProductLinkInvitation.verify|verify} messages.
                         * @param message ProductLinkInvitation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IProductLinkInvitation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductLinkInvitation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductLinkInvitation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ProductLinkInvitation;

                        /**
                         * Decodes a ProductLinkInvitation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductLinkInvitation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ProductLinkInvitation;

                        /**
                         * Verifies a ProductLinkInvitation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductLinkInvitation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductLinkInvitation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ProductLinkInvitation;

                        /**
                         * Creates a plain object from a ProductLinkInvitation message. Also converts values to other types if specified.
                         * @param message ProductLinkInvitation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ProductLinkInvitation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductLinkInvitation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductLinkInvitation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelCenterLinkInvitationIdentifier. */
                    interface IHotelCenterLinkInvitationIdentifier {

                        /** HotelCenterLinkInvitationIdentifier hotel_center_id */
                        hotel_center_id?: (number|null);
                    }

                    /** Represents a HotelCenterLinkInvitationIdentifier. */
                    class HotelCenterLinkInvitationIdentifier implements IHotelCenterLinkInvitationIdentifier {

                        /**
                         * Constructs a new HotelCenterLinkInvitationIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IHotelCenterLinkInvitationIdentifier);

                        /** HotelCenterLinkInvitationIdentifier hotel_center_id. */
                        public hotel_center_id: number;

                        /**
                         * Creates a new HotelCenterLinkInvitationIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelCenterLinkInvitationIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IHotelCenterLinkInvitationIdentifier): google.ads.googleads.v23.resources.HotelCenterLinkInvitationIdentifier;

                        /**
                         * Encodes the specified HotelCenterLinkInvitationIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.HotelCenterLinkInvitationIdentifier.verify|verify} messages.
                         * @param message HotelCenterLinkInvitationIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IHotelCenterLinkInvitationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelCenterLinkInvitationIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.HotelCenterLinkInvitationIdentifier.verify|verify} messages.
                         * @param message HotelCenterLinkInvitationIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IHotelCenterLinkInvitationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCenterLinkInvitationIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelCenterLinkInvitationIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.HotelCenterLinkInvitationIdentifier;

                        /**
                         * Decodes a HotelCenterLinkInvitationIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelCenterLinkInvitationIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.HotelCenterLinkInvitationIdentifier;

                        /**
                         * Verifies a HotelCenterLinkInvitationIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelCenterLinkInvitationIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelCenterLinkInvitationIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.HotelCenterLinkInvitationIdentifier;

                        /**
                         * Creates a plain object from a HotelCenterLinkInvitationIdentifier message. Also converts values to other types if specified.
                         * @param message HotelCenterLinkInvitationIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.HotelCenterLinkInvitationIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelCenterLinkInvitationIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelCenterLinkInvitationIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MerchantCenterLinkInvitationIdentifier. */
                    interface IMerchantCenterLinkInvitationIdentifier {

                        /** MerchantCenterLinkInvitationIdentifier merchant_center_id */
                        merchant_center_id?: (number|null);
                    }

                    /** Represents a MerchantCenterLinkInvitationIdentifier. */
                    class MerchantCenterLinkInvitationIdentifier implements IMerchantCenterLinkInvitationIdentifier {

                        /**
                         * Constructs a new MerchantCenterLinkInvitationIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IMerchantCenterLinkInvitationIdentifier);

                        /** MerchantCenterLinkInvitationIdentifier merchant_center_id. */
                        public merchant_center_id: number;

                        /**
                         * Creates a new MerchantCenterLinkInvitationIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MerchantCenterLinkInvitationIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IMerchantCenterLinkInvitationIdentifier): google.ads.googleads.v23.resources.MerchantCenterLinkInvitationIdentifier;

                        /**
                         * Encodes the specified MerchantCenterLinkInvitationIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.MerchantCenterLinkInvitationIdentifier.verify|verify} messages.
                         * @param message MerchantCenterLinkInvitationIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IMerchantCenterLinkInvitationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MerchantCenterLinkInvitationIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.MerchantCenterLinkInvitationIdentifier.verify|verify} messages.
                         * @param message MerchantCenterLinkInvitationIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IMerchantCenterLinkInvitationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MerchantCenterLinkInvitationIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MerchantCenterLinkInvitationIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.MerchantCenterLinkInvitationIdentifier;

                        /**
                         * Decodes a MerchantCenterLinkInvitationIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MerchantCenterLinkInvitationIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.MerchantCenterLinkInvitationIdentifier;

                        /**
                         * Verifies a MerchantCenterLinkInvitationIdentifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MerchantCenterLinkInvitationIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MerchantCenterLinkInvitationIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.MerchantCenterLinkInvitationIdentifier;

                        /**
                         * Creates a plain object from a MerchantCenterLinkInvitationIdentifier message. Also converts values to other types if specified.
                         * @param message MerchantCenterLinkInvitationIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.MerchantCenterLinkInvitationIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MerchantCenterLinkInvitationIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MerchantCenterLinkInvitationIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdvertisingPartnerLinkInvitationIdentifier. */
                    interface IAdvertisingPartnerLinkInvitationIdentifier {

                        /** AdvertisingPartnerLinkInvitationIdentifier customer */
                        customer?: (string|null);
                    }

                    /** Represents an AdvertisingPartnerLinkInvitationIdentifier. */
                    class AdvertisingPartnerLinkInvitationIdentifier implements IAdvertisingPartnerLinkInvitationIdentifier {

                        /**
                         * Constructs a new AdvertisingPartnerLinkInvitationIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IAdvertisingPartnerLinkInvitationIdentifier);

                        /** AdvertisingPartnerLinkInvitationIdentifier customer. */
                        public customer?: (string|null);

                        /**
                         * Creates a new AdvertisingPartnerLinkInvitationIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdvertisingPartnerLinkInvitationIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IAdvertisingPartnerLinkInvitationIdentifier): google.ads.googleads.v23.resources.AdvertisingPartnerLinkInvitationIdentifier;

                        /**
                         * Encodes the specified AdvertisingPartnerLinkInvitationIdentifier message. Does not implicitly {@link google.ads.googleads.v23.resources.AdvertisingPartnerLinkInvitationIdentifier.verify|verify} messages.
                         * @param message AdvertisingPartnerLinkInvitationIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IAdvertisingPartnerLinkInvitationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdvertisingPartnerLinkInvitationIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.AdvertisingPartnerLinkInvitationIdentifier.verify|verify} messages.
                         * @param message AdvertisingPartnerLinkInvitationIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IAdvertisingPartnerLinkInvitationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdvertisingPartnerLinkInvitationIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdvertisingPartnerLinkInvitationIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.AdvertisingPartnerLinkInvitationIdentifier;

                        /**
                         * Decodes an AdvertisingPartnerLinkInvitationIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdvertisingPartnerLinkInvitationIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.AdvertisingPartnerLinkInvitationIdentifier;

                        /**
                         * Verifies an AdvertisingPartnerLinkInvitationIdentifier message.
                         * @param message Plain 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 AdvertisingPartnerLinkInvitationIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdvertisingPartnerLinkInvitationIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.AdvertisingPartnerLinkInvitationIdentifier;

                        /**
                         * Creates a plain object from an AdvertisingPartnerLinkInvitationIdentifier message. Also converts values to other types if specified.
                         * @param message AdvertisingPartnerLinkInvitationIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.AdvertisingPartnerLinkInvitationIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdvertisingPartnerLinkInvitationIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdvertisingPartnerLinkInvitationIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a QualifyingQuestion. */
                    interface IQualifyingQuestion {

                        /** QualifyingQuestion resource_name */
                        resource_name?: (string|null);

                        /** QualifyingQuestion qualifying_question_id */
                        qualifying_question_id?: (number|null);

                        /** QualifyingQuestion locale */
                        locale?: (string|null);

                        /** QualifyingQuestion text */
                        text?: (string|null);
                    }

                    /** Represents a QualifyingQuestion. */
                    class QualifyingQuestion implements IQualifyingQuestion {

                        /**
                         * Constructs a new QualifyingQuestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IQualifyingQuestion);

                        /** QualifyingQuestion resource_name. */
                        public resource_name: string;

                        /** QualifyingQuestion qualifying_question_id. */
                        public qualifying_question_id: number;

                        /** QualifyingQuestion locale. */
                        public locale: string;

                        /** QualifyingQuestion text. */
                        public text: string;

                        /**
                         * Creates a new QualifyingQuestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QualifyingQuestion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IQualifyingQuestion): google.ads.googleads.v23.resources.QualifyingQuestion;

                        /**
                         * Encodes the specified QualifyingQuestion message. Does not implicitly {@link google.ads.googleads.v23.resources.QualifyingQuestion.verify|verify} messages.
                         * @param message QualifyingQuestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IQualifyingQuestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QualifyingQuestion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.QualifyingQuestion.verify|verify} messages.
                         * @param message QualifyingQuestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IQualifyingQuestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QualifyingQuestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QualifyingQuestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.QualifyingQuestion;

                        /**
                         * Decodes a QualifyingQuestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QualifyingQuestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.QualifyingQuestion;

                        /**
                         * Verifies a QualifyingQuestion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QualifyingQuestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QualifyingQuestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.QualifyingQuestion;

                        /**
                         * Creates a plain object from a QualifyingQuestion message. Also converts values to other types if specified.
                         * @param message QualifyingQuestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.QualifyingQuestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QualifyingQuestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QualifyingQuestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Recommendation. */
                    interface IRecommendation {

                        /** Recommendation resource_name */
                        resource_name?: (string|null);

                        /** Recommendation type */
                        type?: (google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|null);

                        /** Recommendation impact */
                        impact?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact|null);

                        /** Recommendation campaign_budget */
                        campaign_budget?: (string|null);

                        /** Recommendation campaign */
                        campaign?: (string|null);

                        /** Recommendation ad_group */
                        ad_group?: (string|null);

                        /** Recommendation dismissed */
                        dismissed?: (boolean|null);

                        /** Recommendation campaigns */
                        campaigns?: (string[]|null);

                        /** Recommendation campaign_budget_recommendation */
                        campaign_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation forecasting_campaign_budget_recommendation */
                        forecasting_campaign_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation keyword_recommendation */
                        keyword_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IKeywordRecommendation|null);

                        /** Recommendation text_ad_recommendation */
                        text_ad_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ITextAdRecommendation|null);

                        /** Recommendation target_cpa_opt_in_recommendation */
                        target_cpa_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ITargetCpaOptInRecommendation|null);

                        /** Recommendation maximize_conversions_opt_in_recommendation */
                        maximize_conversions_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionsOptInRecommendation|null);

                        /** Recommendation enhanced_cpc_opt_in_recommendation */
                        enhanced_cpc_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IEnhancedCpcOptInRecommendation|null);

                        /** Recommendation search_partners_opt_in_recommendation */
                        search_partners_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ISearchPartnersOptInRecommendation|null);

                        /** Recommendation maximize_clicks_opt_in_recommendation */
                        maximize_clicks_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMaximizeClicksOptInRecommendation|null);

                        /** Recommendation optimize_ad_rotation_recommendation */
                        optimize_ad_rotation_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IOptimizeAdRotationRecommendation|null);

                        /** Recommendation keyword_match_type_recommendation */
                        keyword_match_type_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IKeywordMatchTypeRecommendation|null);

                        /** Recommendation move_unused_budget_recommendation */
                        move_unused_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMoveUnusedBudgetRecommendation|null);

                        /** Recommendation target_roas_opt_in_recommendation */
                        target_roas_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ITargetRoasOptInRecommendation|null);

                        /** Recommendation responsive_search_ad_recommendation */
                        responsive_search_ad_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdRecommendation|null);

                        /** Recommendation marginal_roi_campaign_budget_recommendation */
                        marginal_roi_campaign_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation use_broad_match_keyword_recommendation */
                        use_broad_match_keyword_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IUseBroadMatchKeywordRecommendation|null);

                        /** Recommendation responsive_search_ad_asset_recommendation */
                        responsive_search_ad_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdAssetRecommendation|null);

                        /** Recommendation upgrade_smart_shopping_campaign_to_performance_max_recommendation */
                        upgrade_smart_shopping_campaign_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation|null);

                        /** Recommendation responsive_search_ad_improve_ad_strength_recommendation */
                        responsive_search_ad_improve_ad_strength_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdImproveAdStrengthRecommendation|null);

                        /** Recommendation display_expansion_opt_in_recommendation */
                        display_expansion_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IDisplayExpansionOptInRecommendation|null);

                        /** Recommendation upgrade_local_campaign_to_performance_max_recommendation */
                        upgrade_local_campaign_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IUpgradeLocalCampaignToPerformanceMaxRecommendation|null);

                        /** Recommendation raise_target_cpa_bid_too_low_recommendation */
                        raise_target_cpa_bid_too_low_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaBidTooLowRecommendation|null);

                        /** Recommendation forecasting_set_target_roas_recommendation */
                        forecasting_set_target_roas_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation|null);

                        /** Recommendation callout_asset_recommendation */
                        callout_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICalloutAssetRecommendation|null);

                        /** Recommendation sitelink_asset_recommendation */
                        sitelink_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ISitelinkAssetRecommendation|null);

                        /** Recommendation call_asset_recommendation */
                        call_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICallAssetRecommendation|null);

                        /** Recommendation shopping_add_age_group_recommendation */
                        shopping_add_age_group_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_color_recommendation */
                        shopping_add_color_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_gender_recommendation */
                        shopping_add_gender_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_gtin_recommendation */
                        shopping_add_gtin_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_more_identifiers_recommendation */
                        shopping_add_more_identifiers_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_size_recommendation */
                        shopping_add_size_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_products_to_campaign_recommendation */
                        shopping_add_products_to_campaign_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingAddProductsToCampaignRecommendation|null);

                        /** Recommendation shopping_fix_disapproved_products_recommendation */
                        shopping_fix_disapproved_products_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingFixDisapprovedProductsRecommendation|null);

                        /** Recommendation shopping_target_all_offers_recommendation */
                        shopping_target_all_offers_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingTargetAllOffersRecommendation|null);

                        /** Recommendation shopping_fix_suspended_merchant_center_account_recommendation */
                        shopping_fix_suspended_merchant_center_account_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation|null);

                        /** Recommendation shopping_fix_merchant_center_account_suspension_warning_recommendation */
                        shopping_fix_merchant_center_account_suspension_warning_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation|null);

                        /** Recommendation shopping_migrate_regular_shopping_campaign_offers_to_performance_max_recommendation */
                        shopping_migrate_regular_shopping_campaign_offers_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation|null);

                        /** Recommendation dynamic_image_extension_opt_in_recommendation */
                        dynamic_image_extension_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IDynamicImageExtensionOptInRecommendation|null);

                        /** Recommendation raise_target_cpa_recommendation */
                        raise_target_cpa_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaRecommendation|null);

                        /** Recommendation lower_target_roas_recommendation */
                        lower_target_roas_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ILowerTargetRoasRecommendation|null);

                        /** Recommendation performance_max_opt_in_recommendation */
                        performance_max_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxOptInRecommendation|null);

                        /** Recommendation improve_performance_max_ad_strength_recommendation */
                        improve_performance_max_ad_strength_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IImprovePerformanceMaxAdStrengthRecommendation|null);

                        /** Recommendation migrate_dynamic_search_ads_campaign_to_performance_max_recommendation */
                        migrate_dynamic_search_ads_campaign_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation|null);

                        /** Recommendation forecasting_set_target_cpa_recommendation */
                        forecasting_set_target_cpa_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation|null);

                        /** Recommendation set_target_cpa_recommendation */
                        set_target_cpa_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation|null);

                        /** Recommendation set_target_roas_recommendation */
                        set_target_roas_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation|null);

                        /** Recommendation maximize_conversion_value_opt_in_recommendation */
                        maximize_conversion_value_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionValueOptInRecommendation|null);

                        /** Recommendation improve_google_tag_coverage_recommendation */
                        improve_google_tag_coverage_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IImproveGoogleTagCoverageRecommendation|null);

                        /** Recommendation performance_max_final_url_opt_in_recommendation */
                        performance_max_final_url_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxFinalUrlOptInRecommendation|null);

                        /** Recommendation refresh_customer_match_list_recommendation */
                        refresh_customer_match_list_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IRefreshCustomerMatchListRecommendation|null);

                        /** Recommendation custom_audience_opt_in_recommendation */
                        custom_audience_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICustomAudienceOptInRecommendation|null);

                        /** Recommendation lead_form_asset_recommendation */
                        lead_form_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ILeadFormAssetRecommendation|null);

                        /** Recommendation improve_demand_gen_ad_strength_recommendation */
                        improve_demand_gen_ad_strength_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IImproveDemandGenAdStrengthRecommendation|null);
                    }

                    /** Represents a Recommendation. */
                    class Recommendation implements IRecommendation {

                        /**
                         * Constructs a new Recommendation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IRecommendation);

                        /** Recommendation resource_name. */
                        public resource_name: string;

                        /** Recommendation type. */
                        public type: (google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType);

                        /** Recommendation impact. */
                        public impact?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact|null);

                        /** Recommendation campaign_budget. */
                        public campaign_budget?: (string|null);

                        /** Recommendation campaign. */
                        public campaign?: (string|null);

                        /** Recommendation ad_group. */
                        public ad_group?: (string|null);

                        /** Recommendation dismissed. */
                        public dismissed?: (boolean|null);

                        /** Recommendation campaigns. */
                        public campaigns: string[];

                        /** Recommendation campaign_budget_recommendation. */
                        public campaign_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation forecasting_campaign_budget_recommendation. */
                        public forecasting_campaign_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation keyword_recommendation. */
                        public keyword_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IKeywordRecommendation|null);

                        /** Recommendation text_ad_recommendation. */
                        public text_ad_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ITextAdRecommendation|null);

                        /** Recommendation target_cpa_opt_in_recommendation. */
                        public target_cpa_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ITargetCpaOptInRecommendation|null);

                        /** Recommendation maximize_conversions_opt_in_recommendation. */
                        public maximize_conversions_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionsOptInRecommendation|null);

                        /** Recommendation enhanced_cpc_opt_in_recommendation. */
                        public enhanced_cpc_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IEnhancedCpcOptInRecommendation|null);

                        /** Recommendation search_partners_opt_in_recommendation. */
                        public search_partners_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ISearchPartnersOptInRecommendation|null);

                        /** Recommendation maximize_clicks_opt_in_recommendation. */
                        public maximize_clicks_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMaximizeClicksOptInRecommendation|null);

                        /** Recommendation optimize_ad_rotation_recommendation. */
                        public optimize_ad_rotation_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IOptimizeAdRotationRecommendation|null);

                        /** Recommendation keyword_match_type_recommendation. */
                        public keyword_match_type_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IKeywordMatchTypeRecommendation|null);

                        /** Recommendation move_unused_budget_recommendation. */
                        public move_unused_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMoveUnusedBudgetRecommendation|null);

                        /** Recommendation target_roas_opt_in_recommendation. */
                        public target_roas_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ITargetRoasOptInRecommendation|null);

                        /** Recommendation responsive_search_ad_recommendation. */
                        public responsive_search_ad_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdRecommendation|null);

                        /** Recommendation marginal_roi_campaign_budget_recommendation. */
                        public marginal_roi_campaign_budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation use_broad_match_keyword_recommendation. */
                        public use_broad_match_keyword_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IUseBroadMatchKeywordRecommendation|null);

                        /** Recommendation responsive_search_ad_asset_recommendation. */
                        public responsive_search_ad_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdAssetRecommendation|null);

                        /** Recommendation upgrade_smart_shopping_campaign_to_performance_max_recommendation. */
                        public upgrade_smart_shopping_campaign_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation|null);

                        /** Recommendation responsive_search_ad_improve_ad_strength_recommendation. */
                        public responsive_search_ad_improve_ad_strength_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdImproveAdStrengthRecommendation|null);

                        /** Recommendation display_expansion_opt_in_recommendation. */
                        public display_expansion_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IDisplayExpansionOptInRecommendation|null);

                        /** Recommendation upgrade_local_campaign_to_performance_max_recommendation. */
                        public upgrade_local_campaign_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IUpgradeLocalCampaignToPerformanceMaxRecommendation|null);

                        /** Recommendation raise_target_cpa_bid_too_low_recommendation. */
                        public raise_target_cpa_bid_too_low_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaBidTooLowRecommendation|null);

                        /** Recommendation forecasting_set_target_roas_recommendation. */
                        public forecasting_set_target_roas_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation|null);

                        /** Recommendation callout_asset_recommendation. */
                        public callout_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICalloutAssetRecommendation|null);

                        /** Recommendation sitelink_asset_recommendation. */
                        public sitelink_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ISitelinkAssetRecommendation|null);

                        /** Recommendation call_asset_recommendation. */
                        public call_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICallAssetRecommendation|null);

                        /** Recommendation shopping_add_age_group_recommendation. */
                        public shopping_add_age_group_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_color_recommendation. */
                        public shopping_add_color_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_gender_recommendation. */
                        public shopping_add_gender_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_gtin_recommendation. */
                        public shopping_add_gtin_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_more_identifiers_recommendation. */
                        public shopping_add_more_identifiers_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_size_recommendation. */
                        public shopping_add_size_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation|null);

                        /** Recommendation shopping_add_products_to_campaign_recommendation. */
                        public shopping_add_products_to_campaign_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingAddProductsToCampaignRecommendation|null);

                        /** Recommendation shopping_fix_disapproved_products_recommendation. */
                        public shopping_fix_disapproved_products_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingFixDisapprovedProductsRecommendation|null);

                        /** Recommendation shopping_target_all_offers_recommendation. */
                        public shopping_target_all_offers_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingTargetAllOffersRecommendation|null);

                        /** Recommendation shopping_fix_suspended_merchant_center_account_recommendation. */
                        public shopping_fix_suspended_merchant_center_account_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation|null);

                        /** Recommendation shopping_fix_merchant_center_account_suspension_warning_recommendation. */
                        public shopping_fix_merchant_center_account_suspension_warning_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation|null);

                        /** Recommendation shopping_migrate_regular_shopping_campaign_offers_to_performance_max_recommendation. */
                        public shopping_migrate_regular_shopping_campaign_offers_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation|null);

                        /** Recommendation dynamic_image_extension_opt_in_recommendation. */
                        public dynamic_image_extension_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IDynamicImageExtensionOptInRecommendation|null);

                        /** Recommendation raise_target_cpa_recommendation. */
                        public raise_target_cpa_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaRecommendation|null);

                        /** Recommendation lower_target_roas_recommendation. */
                        public lower_target_roas_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ILowerTargetRoasRecommendation|null);

                        /** Recommendation performance_max_opt_in_recommendation. */
                        public performance_max_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxOptInRecommendation|null);

                        /** Recommendation improve_performance_max_ad_strength_recommendation. */
                        public improve_performance_max_ad_strength_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IImprovePerformanceMaxAdStrengthRecommendation|null);

                        /** Recommendation migrate_dynamic_search_ads_campaign_to_performance_max_recommendation. */
                        public migrate_dynamic_search_ads_campaign_to_performance_max_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation|null);

                        /** Recommendation forecasting_set_target_cpa_recommendation. */
                        public forecasting_set_target_cpa_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation|null);

                        /** Recommendation set_target_cpa_recommendation. */
                        public set_target_cpa_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation|null);

                        /** Recommendation set_target_roas_recommendation. */
                        public set_target_roas_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation|null);

                        /** Recommendation maximize_conversion_value_opt_in_recommendation. */
                        public maximize_conversion_value_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionValueOptInRecommendation|null);

                        /** Recommendation improve_google_tag_coverage_recommendation. */
                        public improve_google_tag_coverage_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IImproveGoogleTagCoverageRecommendation|null);

                        /** Recommendation performance_max_final_url_opt_in_recommendation. */
                        public performance_max_final_url_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxFinalUrlOptInRecommendation|null);

                        /** Recommendation refresh_customer_match_list_recommendation. */
                        public refresh_customer_match_list_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IRefreshCustomerMatchListRecommendation|null);

                        /** Recommendation custom_audience_opt_in_recommendation. */
                        public custom_audience_opt_in_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICustomAudienceOptInRecommendation|null);

                        /** Recommendation lead_form_asset_recommendation. */
                        public lead_form_asset_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ILeadFormAssetRecommendation|null);

                        /** Recommendation improve_demand_gen_ad_strength_recommendation. */
                        public improve_demand_gen_ad_strength_recommendation?: (google.ads.googleads.v23.resources.Recommendation.IImproveDemandGenAdStrengthRecommendation|null);

                        /** Recommendation recommendation. */
                        public recommendation?: ("campaign_budget_recommendation"|"forecasting_campaign_budget_recommendation"|"keyword_recommendation"|"text_ad_recommendation"|"target_cpa_opt_in_recommendation"|"maximize_conversions_opt_in_recommendation"|"enhanced_cpc_opt_in_recommendation"|"search_partners_opt_in_recommendation"|"maximize_clicks_opt_in_recommendation"|"optimize_ad_rotation_recommendation"|"keyword_match_type_recommendation"|"move_unused_budget_recommendation"|"target_roas_opt_in_recommendation"|"responsive_search_ad_recommendation"|"marginal_roi_campaign_budget_recommendation"|"use_broad_match_keyword_recommendation"|"responsive_search_ad_asset_recommendation"|"upgrade_smart_shopping_campaign_to_performance_max_recommendation"|"responsive_search_ad_improve_ad_strength_recommendation"|"display_expansion_opt_in_recommendation"|"upgrade_local_campaign_to_performance_max_recommendation"|"raise_target_cpa_bid_too_low_recommendation"|"forecasting_set_target_roas_recommendation"|"callout_asset_recommendation"|"sitelink_asset_recommendation"|"call_asset_recommendation"|"shopping_add_age_group_recommendation"|"shopping_add_color_recommendation"|"shopping_add_gender_recommendation"|"shopping_add_gtin_recommendation"|"shopping_add_more_identifiers_recommendation"|"shopping_add_size_recommendation"|"shopping_add_products_to_campaign_recommendation"|"shopping_fix_disapproved_products_recommendation"|"shopping_target_all_offers_recommendation"|"shopping_fix_suspended_merchant_center_account_recommendation"|"shopping_fix_merchant_center_account_suspension_warning_recommendation"|"shopping_migrate_regular_shopping_campaign_offers_to_performance_max_recommendation"|"dynamic_image_extension_opt_in_recommendation"|"raise_target_cpa_recommendation"|"lower_target_roas_recommendation"|"performance_max_opt_in_recommendation"|"improve_performance_max_ad_strength_recommendation"|"migrate_dynamic_search_ads_campaign_to_performance_max_recommendation"|"forecasting_set_target_cpa_recommendation"|"set_target_cpa_recommendation"|"set_target_roas_recommendation"|"maximize_conversion_value_opt_in_recommendation"|"improve_google_tag_coverage_recommendation"|"performance_max_final_url_opt_in_recommendation"|"refresh_customer_match_list_recommendation"|"custom_audience_opt_in_recommendation"|"lead_form_asset_recommendation"|"improve_demand_gen_ad_strength_recommendation");

                        /**
                         * Creates a new Recommendation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Recommendation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IRecommendation): google.ads.googleads.v23.resources.Recommendation;

                        /**
                         * Encodes the specified Recommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.verify|verify} messages.
                         * @param message Recommendation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Recommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.verify|verify} messages.
                         * @param message Recommendation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Recommendation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Recommendation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation;

                        /**
                         * Decodes a Recommendation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Recommendation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation;

                        /**
                         * Verifies a Recommendation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Recommendation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Recommendation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation;

                        /**
                         * Creates a plain object from a Recommendation message. Also converts values to other types if specified.
                         * @param message Recommendation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Recommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Recommendation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Recommendation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Recommendation {

                        /** Properties of a MerchantInfo. */
                        interface IMerchantInfo {

                            /** MerchantInfo id */
                            id?: (number|null);

                            /** MerchantInfo name */
                            name?: (string|null);

                            /** MerchantInfo multi_client */
                            multi_client?: (boolean|null);
                        }

                        /** Represents a MerchantInfo. */
                        class MerchantInfo implements IMerchantInfo {

                            /**
                             * Constructs a new MerchantInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IMerchantInfo);

                            /** MerchantInfo id. */
                            public id: number;

                            /** MerchantInfo name. */
                            public name: string;

                            /** MerchantInfo multi_client. */
                            public multi_client: boolean;

                            /**
                             * Creates a new MerchantInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MerchantInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IMerchantInfo): google.ads.googleads.v23.resources.Recommendation.MerchantInfo;

                            /**
                             * Encodes the specified MerchantInfo message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MerchantInfo.verify|verify} messages.
                             * @param message MerchantInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IMerchantInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MerchantInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MerchantInfo.verify|verify} messages.
                             * @param message MerchantInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IMerchantInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MerchantInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MerchantInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.MerchantInfo;

                            /**
                             * Decodes a MerchantInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MerchantInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.MerchantInfo;

                            /**
                             * Verifies a MerchantInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MerchantInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MerchantInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.MerchantInfo;

                            /**
                             * Creates a plain object from a MerchantInfo message. Also converts values to other types if specified.
                             * @param message MerchantInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.MerchantInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MerchantInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MerchantInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RecommendationImpact. */
                        interface IRecommendationImpact {

                            /** RecommendationImpact base_metrics */
                            base_metrics?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics|null);

                            /** RecommendationImpact potential_metrics */
                            potential_metrics?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics|null);
                        }

                        /** Represents a RecommendationImpact. */
                        class RecommendationImpact implements IRecommendationImpact {

                            /**
                             * Constructs a new RecommendationImpact.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact);

                            /** RecommendationImpact base_metrics. */
                            public base_metrics?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics|null);

                            /** RecommendationImpact potential_metrics. */
                            public potential_metrics?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics|null);

                            /**
                             * Creates a new RecommendationImpact instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RecommendationImpact instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact): google.ads.googleads.v23.resources.Recommendation.RecommendationImpact;

                            /**
                             * Encodes the specified RecommendationImpact message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RecommendationImpact.verify|verify} messages.
                             * @param message RecommendationImpact message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RecommendationImpact message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RecommendationImpact.verify|verify} messages.
                             * @param message RecommendationImpact message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RecommendationImpact message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RecommendationImpact
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.RecommendationImpact;

                            /**
                             * Decodes a RecommendationImpact message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RecommendationImpact
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.RecommendationImpact;

                            /**
                             * Verifies a RecommendationImpact message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RecommendationImpact message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RecommendationImpact
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.RecommendationImpact;

                            /**
                             * Creates a plain object from a RecommendationImpact message. Also converts values to other types if specified.
                             * @param message RecommendationImpact
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.RecommendationImpact, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RecommendationImpact to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RecommendationImpact
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RecommendationMetrics. */
                        interface IRecommendationMetrics {

                            /** RecommendationMetrics impressions */
                            impressions?: (number|null);

                            /** RecommendationMetrics clicks */
                            clicks?: (number|null);

                            /** RecommendationMetrics cost_micros */
                            cost_micros?: (number|null);

                            /** RecommendationMetrics conversions */
                            conversions?: (number|null);

                            /** RecommendationMetrics conversions_value */
                            conversions_value?: (number|null);

                            /** RecommendationMetrics video_views */
                            video_views?: (number|null);
                        }

                        /** Represents a RecommendationMetrics. */
                        class RecommendationMetrics implements IRecommendationMetrics {

                            /**
                             * Constructs a new RecommendationMetrics.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics);

                            /** RecommendationMetrics impressions. */
                            public impressions?: (number|null);

                            /** RecommendationMetrics clicks. */
                            public clicks?: (number|null);

                            /** RecommendationMetrics cost_micros. */
                            public cost_micros?: (number|null);

                            /** RecommendationMetrics conversions. */
                            public conversions?: (number|null);

                            /** RecommendationMetrics conversions_value. */
                            public conversions_value?: (number|null);

                            /** RecommendationMetrics video_views. */
                            public video_views?: (number|null);

                            /**
                             * Creates a new RecommendationMetrics instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RecommendationMetrics instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics): google.ads.googleads.v23.resources.Recommendation.RecommendationMetrics;

                            /**
                             * Encodes the specified RecommendationMetrics message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RecommendationMetrics.verify|verify} messages.
                             * @param message RecommendationMetrics message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RecommendationMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RecommendationMetrics.verify|verify} messages.
                             * @param message RecommendationMetrics message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IRecommendationMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RecommendationMetrics message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RecommendationMetrics
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.RecommendationMetrics;

                            /**
                             * Decodes a RecommendationMetrics message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RecommendationMetrics
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.RecommendationMetrics;

                            /**
                             * Verifies a RecommendationMetrics message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RecommendationMetrics message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RecommendationMetrics
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.RecommendationMetrics;

                            /**
                             * Creates a plain object from a RecommendationMetrics message. Also converts values to other types if specified.
                             * @param message RecommendationMetrics
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.RecommendationMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RecommendationMetrics to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RecommendationMetrics
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CampaignBudgetRecommendation. */
                        interface ICampaignBudgetRecommendation {

                            /** CampaignBudgetRecommendation current_budget_amount_micros */
                            current_budget_amount_micros?: (number|null);

                            /** CampaignBudgetRecommendation recommended_budget_amount_micros */
                            recommended_budget_amount_micros?: (number|null);

                            /** CampaignBudgetRecommendation budget_options */
                            budget_options?: (google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption[]|null);
                        }

                        /** Represents a CampaignBudgetRecommendation. */
                        class CampaignBudgetRecommendation implements ICampaignBudgetRecommendation {

                            /**
                             * Constructs a new CampaignBudgetRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation);

                            /** CampaignBudgetRecommendation current_budget_amount_micros. */
                            public current_budget_amount_micros?: (number|null);

                            /** CampaignBudgetRecommendation recommended_budget_amount_micros. */
                            public recommended_budget_amount_micros?: (number|null);

                            /** CampaignBudgetRecommendation budget_options. */
                            public budget_options: google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption[];

                            /**
                             * Creates a new CampaignBudgetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignBudgetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation;

                            /**
                             * Encodes the specified CampaignBudgetRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.verify|verify} messages.
                             * @param message CampaignBudgetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignBudgetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.verify|verify} messages.
                             * @param message CampaignBudgetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignBudgetRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CampaignBudgetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation;

                            /**
                             * Decodes a CampaignBudgetRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CampaignBudgetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation;

                            /**
                             * Verifies a CampaignBudgetRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignBudgetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CampaignBudgetRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation;

                            /**
                             * Creates a plain object from a CampaignBudgetRecommendation message. Also converts values to other types if specified.
                             * @param message CampaignBudgetRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignBudgetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CampaignBudgetRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace CampaignBudgetRecommendation {

                            /** Properties of a CampaignBudgetRecommendationOption. */
                            interface ICampaignBudgetRecommendationOption {

                                /** CampaignBudgetRecommendationOption budget_amount_micros */
                                budget_amount_micros?: (number|null);

                                /** CampaignBudgetRecommendationOption impact */
                                impact?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact|null);
                            }

                            /** Represents a CampaignBudgetRecommendationOption. */
                            class CampaignBudgetRecommendationOption implements ICampaignBudgetRecommendationOption {

                                /**
                                 * Constructs a new CampaignBudgetRecommendationOption.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption);

                                /** CampaignBudgetRecommendationOption budget_amount_micros. */
                                public budget_amount_micros?: (number|null);

                                /** CampaignBudgetRecommendationOption impact. */
                                public impact?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact|null);

                                /**
                                 * Creates a new CampaignBudgetRecommendationOption instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns CampaignBudgetRecommendationOption instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption;

                                /**
                                 * Encodes the specified CampaignBudgetRecommendationOption message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption.verify|verify} messages.
                                 * @param message CampaignBudgetRecommendationOption message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified CampaignBudgetRecommendationOption message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption.verify|verify} messages.
                                 * @param message CampaignBudgetRecommendationOption message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a CampaignBudgetRecommendationOption message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns CampaignBudgetRecommendationOption
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption;

                                /**
                                 * Decodes a CampaignBudgetRecommendationOption message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns CampaignBudgetRecommendationOption
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption;

                                /**
                                 * Verifies a CampaignBudgetRecommendationOption message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a CampaignBudgetRecommendationOption message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns CampaignBudgetRecommendationOption
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption;

                                /**
                                 * Creates a plain object from a CampaignBudgetRecommendationOption message. Also converts values to other types if specified.
                                 * @param message CampaignBudgetRecommendationOption
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this CampaignBudgetRecommendationOption to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for CampaignBudgetRecommendationOption
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of a KeywordRecommendation. */
                        interface IKeywordRecommendation {

                            /** KeywordRecommendation keyword */
                            keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                            /** KeywordRecommendation search_terms */
                            search_terms?: (google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.ISearchTerm[]|null);

                            /** KeywordRecommendation recommended_cpc_bid_micros */
                            recommended_cpc_bid_micros?: (number|null);
                        }

                        /** Represents a KeywordRecommendation. */
                        class KeywordRecommendation implements IKeywordRecommendation {

                            /**
                             * Constructs a new KeywordRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IKeywordRecommendation);

                            /** KeywordRecommendation keyword. */
                            public keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                            /** KeywordRecommendation search_terms. */
                            public search_terms: google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.ISearchTerm[];

                            /** KeywordRecommendation recommended_cpc_bid_micros. */
                            public recommended_cpc_bid_micros?: (number|null);

                            /**
                             * Creates a new KeywordRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns KeywordRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IKeywordRecommendation): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation;

                            /**
                             * Encodes the specified KeywordRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.verify|verify} messages.
                             * @param message KeywordRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IKeywordRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified KeywordRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.verify|verify} messages.
                             * @param message KeywordRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IKeywordRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a KeywordRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns KeywordRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation;

                            /**
                             * Decodes a KeywordRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns KeywordRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation;

                            /**
                             * Verifies a KeywordRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a KeywordRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns KeywordRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation;

                            /**
                             * Creates a plain object from a KeywordRecommendation message. Also converts values to other types if specified.
                             * @param message KeywordRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this KeywordRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for KeywordRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace KeywordRecommendation {

                            /** Properties of a SearchTerm. */
                            interface ISearchTerm {

                                /** SearchTerm text */
                                text?: (string|null);

                                /** SearchTerm estimated_weekly_search_count */
                                estimated_weekly_search_count?: (number|null);
                            }

                            /** Represents a SearchTerm. */
                            class SearchTerm implements ISearchTerm {

                                /**
                                 * Constructs a new SearchTerm.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.ISearchTerm);

                                /** SearchTerm text. */
                                public text: string;

                                /** SearchTerm estimated_weekly_search_count. */
                                public estimated_weekly_search_count: number;

                                /**
                                 * Creates a new SearchTerm instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns SearchTerm instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.ISearchTerm): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.SearchTerm;

                                /**
                                 * Encodes the specified SearchTerm message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.SearchTerm.verify|verify} messages.
                                 * @param message SearchTerm message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.ISearchTerm, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified SearchTerm message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.SearchTerm.verify|verify} messages.
                                 * @param message SearchTerm message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.ISearchTerm, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a SearchTerm message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns SearchTerm
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.SearchTerm;

                                /**
                                 * Decodes a SearchTerm message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns SearchTerm
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.SearchTerm;

                                /**
                                 * Verifies a SearchTerm message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a SearchTerm message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns SearchTerm
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.SearchTerm;

                                /**
                                 * Creates a plain object from a SearchTerm message. Also converts values to other types if specified.
                                 * @param message SearchTerm
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Recommendation.KeywordRecommendation.SearchTerm, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this SearchTerm to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for SearchTerm
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of a TextAdRecommendation. */
                        interface ITextAdRecommendation {

                            /** TextAdRecommendation ad */
                            ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** TextAdRecommendation creation_date */
                            creation_date?: (string|null);

                            /** TextAdRecommendation auto_apply_date */
                            auto_apply_date?: (string|null);
                        }

                        /** Represents a TextAdRecommendation. */
                        class TextAdRecommendation implements ITextAdRecommendation {

                            /**
                             * Constructs a new TextAdRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ITextAdRecommendation);

                            /** TextAdRecommendation ad. */
                            public ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** TextAdRecommendation creation_date. */
                            public creation_date?: (string|null);

                            /** TextAdRecommendation auto_apply_date. */
                            public auto_apply_date?: (string|null);

                            /**
                             * Creates a new TextAdRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TextAdRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ITextAdRecommendation): google.ads.googleads.v23.resources.Recommendation.TextAdRecommendation;

                            /**
                             * Encodes the specified TextAdRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TextAdRecommendation.verify|verify} messages.
                             * @param message TextAdRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ITextAdRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TextAdRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TextAdRecommendation.verify|verify} messages.
                             * @param message TextAdRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ITextAdRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TextAdRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TextAdRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.TextAdRecommendation;

                            /**
                             * Decodes a TextAdRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TextAdRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.TextAdRecommendation;

                            /**
                             * Verifies a TextAdRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TextAdRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TextAdRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.TextAdRecommendation;

                            /**
                             * Creates a plain object from a TextAdRecommendation message. Also converts values to other types if specified.
                             * @param message TextAdRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.TextAdRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TextAdRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TextAdRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetCpaOptInRecommendation. */
                        interface ITargetCpaOptInRecommendation {

                            /** TargetCpaOptInRecommendation options */
                            options?: (google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption[]|null);

                            /** TargetCpaOptInRecommendation recommended_target_cpa_micros */
                            recommended_target_cpa_micros?: (number|null);
                        }

                        /** Represents a TargetCpaOptInRecommendation. */
                        class TargetCpaOptInRecommendation implements ITargetCpaOptInRecommendation {

                            /**
                             * Constructs a new TargetCpaOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ITargetCpaOptInRecommendation);

                            /** TargetCpaOptInRecommendation options. */
                            public options: google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption[];

                            /** TargetCpaOptInRecommendation recommended_target_cpa_micros. */
                            public recommended_target_cpa_micros?: (number|null);

                            /**
                             * Creates a new TargetCpaOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetCpaOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ITargetCpaOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation;

                            /**
                             * Encodes the specified TargetCpaOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.verify|verify} messages.
                             * @param message TargetCpaOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ITargetCpaOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetCpaOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.verify|verify} messages.
                             * @param message TargetCpaOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ITargetCpaOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetCpaOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetCpaOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation;

                            /**
                             * Decodes a TargetCpaOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetCpaOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation;

                            /**
                             * Verifies a TargetCpaOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetCpaOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetCpaOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation;

                            /**
                             * Creates a plain object from a TargetCpaOptInRecommendation message. Also converts values to other types if specified.
                             * @param message TargetCpaOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetCpaOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetCpaOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace TargetCpaOptInRecommendation {

                            /** Properties of a TargetCpaOptInRecommendationOption. */
                            interface ITargetCpaOptInRecommendationOption {

                                /** TargetCpaOptInRecommendationOption goal */
                                goal?: (google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoal|keyof typeof google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoal|null);

                                /** TargetCpaOptInRecommendationOption target_cpa_micros */
                                target_cpa_micros?: (number|null);

                                /** TargetCpaOptInRecommendationOption required_campaign_budget_amount_micros */
                                required_campaign_budget_amount_micros?: (number|null);

                                /** TargetCpaOptInRecommendationOption impact */
                                impact?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact|null);
                            }

                            /** Represents a TargetCpaOptInRecommendationOption. */
                            class TargetCpaOptInRecommendationOption implements ITargetCpaOptInRecommendationOption {

                                /**
                                 * Constructs a new TargetCpaOptInRecommendationOption.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption);

                                /** TargetCpaOptInRecommendationOption goal. */
                                public goal: (google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoal|keyof typeof google.ads.googleads.v23.enums.TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoal);

                                /** TargetCpaOptInRecommendationOption target_cpa_micros. */
                                public target_cpa_micros?: (number|null);

                                /** TargetCpaOptInRecommendationOption required_campaign_budget_amount_micros. */
                                public required_campaign_budget_amount_micros?: (number|null);

                                /** TargetCpaOptInRecommendationOption impact. */
                                public impact?: (google.ads.googleads.v23.resources.Recommendation.IRecommendationImpact|null);

                                /**
                                 * Creates a new TargetCpaOptInRecommendationOption instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns TargetCpaOptInRecommendationOption instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption;

                                /**
                                 * Encodes the specified TargetCpaOptInRecommendationOption message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption.verify|verify} messages.
                                 * @param message TargetCpaOptInRecommendationOption message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified TargetCpaOptInRecommendationOption message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption.verify|verify} messages.
                                 * @param message TargetCpaOptInRecommendationOption message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a TargetCpaOptInRecommendationOption message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns TargetCpaOptInRecommendationOption
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption;

                                /**
                                 * Decodes a TargetCpaOptInRecommendationOption message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns TargetCpaOptInRecommendationOption
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption;

                                /**
                                 * Verifies a TargetCpaOptInRecommendationOption message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a TargetCpaOptInRecommendationOption message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns TargetCpaOptInRecommendationOption
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption;

                                /**
                                 * Creates a plain object from a TargetCpaOptInRecommendationOption message. Also converts values to other types if specified.
                                 * @param message TargetCpaOptInRecommendationOption
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this TargetCpaOptInRecommendationOption to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for TargetCpaOptInRecommendationOption
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of a MaximizeConversionsOptInRecommendation. */
                        interface IMaximizeConversionsOptInRecommendation {

                            /** MaximizeConversionsOptInRecommendation recommended_budget_amount_micros */
                            recommended_budget_amount_micros?: (number|null);
                        }

                        /** Represents a MaximizeConversionsOptInRecommendation. */
                        class MaximizeConversionsOptInRecommendation implements IMaximizeConversionsOptInRecommendation {

                            /**
                             * Constructs a new MaximizeConversionsOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionsOptInRecommendation);

                            /** MaximizeConversionsOptInRecommendation recommended_budget_amount_micros. */
                            public recommended_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new MaximizeConversionsOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MaximizeConversionsOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionsOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionsOptInRecommendation;

                            /**
                             * Encodes the specified MaximizeConversionsOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MaximizeConversionsOptInRecommendation.verify|verify} messages.
                             * @param message MaximizeConversionsOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionsOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeConversionsOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MaximizeConversionsOptInRecommendation.verify|verify} messages.
                             * @param message MaximizeConversionsOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionsOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeConversionsOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MaximizeConversionsOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionsOptInRecommendation;

                            /**
                             * Decodes a MaximizeConversionsOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MaximizeConversionsOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionsOptInRecommendation;

                            /**
                             * Verifies a MaximizeConversionsOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeConversionsOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MaximizeConversionsOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionsOptInRecommendation;

                            /**
                             * Creates a plain object from a MaximizeConversionsOptInRecommendation message. Also converts values to other types if specified.
                             * @param message MaximizeConversionsOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.MaximizeConversionsOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeConversionsOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MaximizeConversionsOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an EnhancedCpcOptInRecommendation. */
                        interface IEnhancedCpcOptInRecommendation {
                        }

                        /** Represents an EnhancedCpcOptInRecommendation. */
                        class EnhancedCpcOptInRecommendation implements IEnhancedCpcOptInRecommendation {

                            /**
                             * Constructs a new EnhancedCpcOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IEnhancedCpcOptInRecommendation);

                            /**
                             * Creates a new EnhancedCpcOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns EnhancedCpcOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IEnhancedCpcOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.EnhancedCpcOptInRecommendation;

                            /**
                             * Encodes the specified EnhancedCpcOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.EnhancedCpcOptInRecommendation.verify|verify} messages.
                             * @param message EnhancedCpcOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IEnhancedCpcOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified EnhancedCpcOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.EnhancedCpcOptInRecommendation.verify|verify} messages.
                             * @param message EnhancedCpcOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IEnhancedCpcOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an EnhancedCpcOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns EnhancedCpcOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.EnhancedCpcOptInRecommendation;

                            /**
                             * Decodes an EnhancedCpcOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns EnhancedCpcOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.EnhancedCpcOptInRecommendation;

                            /**
                             * Verifies an EnhancedCpcOptInRecommendation message.
                             * @param message Plain 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 EnhancedCpcOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns EnhancedCpcOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.EnhancedCpcOptInRecommendation;

                            /**
                             * Creates a plain object from an EnhancedCpcOptInRecommendation message. Also converts values to other types if specified.
                             * @param message EnhancedCpcOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.EnhancedCpcOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this EnhancedCpcOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for EnhancedCpcOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SearchPartnersOptInRecommendation. */
                        interface ISearchPartnersOptInRecommendation {
                        }

                        /** Represents a SearchPartnersOptInRecommendation. */
                        class SearchPartnersOptInRecommendation implements ISearchPartnersOptInRecommendation {

                            /**
                             * Constructs a new SearchPartnersOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ISearchPartnersOptInRecommendation);

                            /**
                             * Creates a new SearchPartnersOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SearchPartnersOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ISearchPartnersOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.SearchPartnersOptInRecommendation;

                            /**
                             * Encodes the specified SearchPartnersOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.SearchPartnersOptInRecommendation.verify|verify} messages.
                             * @param message SearchPartnersOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ISearchPartnersOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SearchPartnersOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.SearchPartnersOptInRecommendation.verify|verify} messages.
                             * @param message SearchPartnersOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ISearchPartnersOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SearchPartnersOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SearchPartnersOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.SearchPartnersOptInRecommendation;

                            /**
                             * Decodes a SearchPartnersOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SearchPartnersOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.SearchPartnersOptInRecommendation;

                            /**
                             * Verifies a SearchPartnersOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SearchPartnersOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SearchPartnersOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.SearchPartnersOptInRecommendation;

                            /**
                             * Creates a plain object from a SearchPartnersOptInRecommendation message. Also converts values to other types if specified.
                             * @param message SearchPartnersOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.SearchPartnersOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SearchPartnersOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SearchPartnersOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MaximizeClicksOptInRecommendation. */
                        interface IMaximizeClicksOptInRecommendation {

                            /** MaximizeClicksOptInRecommendation recommended_budget_amount_micros */
                            recommended_budget_amount_micros?: (number|null);
                        }

                        /** Represents a MaximizeClicksOptInRecommendation. */
                        class MaximizeClicksOptInRecommendation implements IMaximizeClicksOptInRecommendation {

                            /**
                             * Constructs a new MaximizeClicksOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IMaximizeClicksOptInRecommendation);

                            /** MaximizeClicksOptInRecommendation recommended_budget_amount_micros. */
                            public recommended_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new MaximizeClicksOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MaximizeClicksOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IMaximizeClicksOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.MaximizeClicksOptInRecommendation;

                            /**
                             * Encodes the specified MaximizeClicksOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MaximizeClicksOptInRecommendation.verify|verify} messages.
                             * @param message MaximizeClicksOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IMaximizeClicksOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeClicksOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MaximizeClicksOptInRecommendation.verify|verify} messages.
                             * @param message MaximizeClicksOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IMaximizeClicksOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeClicksOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MaximizeClicksOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.MaximizeClicksOptInRecommendation;

                            /**
                             * Decodes a MaximizeClicksOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MaximizeClicksOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.MaximizeClicksOptInRecommendation;

                            /**
                             * Verifies a MaximizeClicksOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeClicksOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MaximizeClicksOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.MaximizeClicksOptInRecommendation;

                            /**
                             * Creates a plain object from a MaximizeClicksOptInRecommendation message. Also converts values to other types if specified.
                             * @param message MaximizeClicksOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.MaximizeClicksOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeClicksOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MaximizeClicksOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an OptimizeAdRotationRecommendation. */
                        interface IOptimizeAdRotationRecommendation {
                        }

                        /** Represents an OptimizeAdRotationRecommendation. */
                        class OptimizeAdRotationRecommendation implements IOptimizeAdRotationRecommendation {

                            /**
                             * Constructs a new OptimizeAdRotationRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IOptimizeAdRotationRecommendation);

                            /**
                             * Creates a new OptimizeAdRotationRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns OptimizeAdRotationRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IOptimizeAdRotationRecommendation): google.ads.googleads.v23.resources.Recommendation.OptimizeAdRotationRecommendation;

                            /**
                             * Encodes the specified OptimizeAdRotationRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.OptimizeAdRotationRecommendation.verify|verify} messages.
                             * @param message OptimizeAdRotationRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IOptimizeAdRotationRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified OptimizeAdRotationRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.OptimizeAdRotationRecommendation.verify|verify} messages.
                             * @param message OptimizeAdRotationRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IOptimizeAdRotationRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an OptimizeAdRotationRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns OptimizeAdRotationRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.OptimizeAdRotationRecommendation;

                            /**
                             * Decodes an OptimizeAdRotationRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns OptimizeAdRotationRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.OptimizeAdRotationRecommendation;

                            /**
                             * Verifies an OptimizeAdRotationRecommendation message.
                             * @param message Plain 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 OptimizeAdRotationRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns OptimizeAdRotationRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.OptimizeAdRotationRecommendation;

                            /**
                             * Creates a plain object from an OptimizeAdRotationRecommendation message. Also converts values to other types if specified.
                             * @param message OptimizeAdRotationRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.OptimizeAdRotationRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this OptimizeAdRotationRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for OptimizeAdRotationRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CalloutAssetRecommendation. */
                        interface ICalloutAssetRecommendation {

                            /** CalloutAssetRecommendation recommended_campaign_callout_assets */
                            recommended_campaign_callout_assets?: (google.ads.googleads.v23.resources.IAsset[]|null);

                            /** CalloutAssetRecommendation recommended_customer_callout_assets */
                            recommended_customer_callout_assets?: (google.ads.googleads.v23.resources.IAsset[]|null);
                        }

                        /** Represents a CalloutAssetRecommendation. */
                        class CalloutAssetRecommendation implements ICalloutAssetRecommendation {

                            /**
                             * Constructs a new CalloutAssetRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ICalloutAssetRecommendation);

                            /** CalloutAssetRecommendation recommended_campaign_callout_assets. */
                            public recommended_campaign_callout_assets: google.ads.googleads.v23.resources.IAsset[];

                            /** CalloutAssetRecommendation recommended_customer_callout_assets. */
                            public recommended_customer_callout_assets: google.ads.googleads.v23.resources.IAsset[];

                            /**
                             * Creates a new CalloutAssetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CalloutAssetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ICalloutAssetRecommendation): google.ads.googleads.v23.resources.Recommendation.CalloutAssetRecommendation;

                            /**
                             * Encodes the specified CalloutAssetRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CalloutAssetRecommendation.verify|verify} messages.
                             * @param message CalloutAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ICalloutAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CalloutAssetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CalloutAssetRecommendation.verify|verify} messages.
                             * @param message CalloutAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ICalloutAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CalloutAssetRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CalloutAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.CalloutAssetRecommendation;

                            /**
                             * Decodes a CalloutAssetRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CalloutAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.CalloutAssetRecommendation;

                            /**
                             * Verifies a CalloutAssetRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CalloutAssetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CalloutAssetRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.CalloutAssetRecommendation;

                            /**
                             * Creates a plain object from a CalloutAssetRecommendation message. Also converts values to other types if specified.
                             * @param message CalloutAssetRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.CalloutAssetRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CalloutAssetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CalloutAssetRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SitelinkAssetRecommendation. */
                        interface ISitelinkAssetRecommendation {

                            /** SitelinkAssetRecommendation recommended_campaign_sitelink_assets */
                            recommended_campaign_sitelink_assets?: (google.ads.googleads.v23.resources.IAsset[]|null);

                            /** SitelinkAssetRecommendation recommended_customer_sitelink_assets */
                            recommended_customer_sitelink_assets?: (google.ads.googleads.v23.resources.IAsset[]|null);
                        }

                        /** Represents a SitelinkAssetRecommendation. */
                        class SitelinkAssetRecommendation implements ISitelinkAssetRecommendation {

                            /**
                             * Constructs a new SitelinkAssetRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ISitelinkAssetRecommendation);

                            /** SitelinkAssetRecommendation recommended_campaign_sitelink_assets. */
                            public recommended_campaign_sitelink_assets: google.ads.googleads.v23.resources.IAsset[];

                            /** SitelinkAssetRecommendation recommended_customer_sitelink_assets. */
                            public recommended_customer_sitelink_assets: google.ads.googleads.v23.resources.IAsset[];

                            /**
                             * Creates a new SitelinkAssetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SitelinkAssetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ISitelinkAssetRecommendation): google.ads.googleads.v23.resources.Recommendation.SitelinkAssetRecommendation;

                            /**
                             * Encodes the specified SitelinkAssetRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.SitelinkAssetRecommendation.verify|verify} messages.
                             * @param message SitelinkAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ISitelinkAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SitelinkAssetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.SitelinkAssetRecommendation.verify|verify} messages.
                             * @param message SitelinkAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ISitelinkAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SitelinkAssetRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SitelinkAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.SitelinkAssetRecommendation;

                            /**
                             * Decodes a SitelinkAssetRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SitelinkAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.SitelinkAssetRecommendation;

                            /**
                             * Verifies a SitelinkAssetRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SitelinkAssetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SitelinkAssetRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.SitelinkAssetRecommendation;

                            /**
                             * Creates a plain object from a SitelinkAssetRecommendation message. Also converts values to other types if specified.
                             * @param message SitelinkAssetRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.SitelinkAssetRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SitelinkAssetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SitelinkAssetRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CallAssetRecommendation. */
                        interface ICallAssetRecommendation {
                        }

                        /** Represents a CallAssetRecommendation. */
                        class CallAssetRecommendation implements ICallAssetRecommendation {

                            /**
                             * Constructs a new CallAssetRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ICallAssetRecommendation);

                            /**
                             * Creates a new CallAssetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CallAssetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ICallAssetRecommendation): google.ads.googleads.v23.resources.Recommendation.CallAssetRecommendation;

                            /**
                             * Encodes the specified CallAssetRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CallAssetRecommendation.verify|verify} messages.
                             * @param message CallAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ICallAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CallAssetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CallAssetRecommendation.verify|verify} messages.
                             * @param message CallAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ICallAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CallAssetRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CallAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.CallAssetRecommendation;

                            /**
                             * Decodes a CallAssetRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CallAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.CallAssetRecommendation;

                            /**
                             * Verifies a CallAssetRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CallAssetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CallAssetRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.CallAssetRecommendation;

                            /**
                             * Creates a plain object from a CallAssetRecommendation message. Also converts values to other types if specified.
                             * @param message CallAssetRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.CallAssetRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CallAssetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CallAssetRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a KeywordMatchTypeRecommendation. */
                        interface IKeywordMatchTypeRecommendation {

                            /** KeywordMatchTypeRecommendation keyword */
                            keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                            /** KeywordMatchTypeRecommendation recommended_match_type */
                            recommended_match_type?: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|null);
                        }

                        /** Represents a KeywordMatchTypeRecommendation. */
                        class KeywordMatchTypeRecommendation implements IKeywordMatchTypeRecommendation {

                            /**
                             * Constructs a new KeywordMatchTypeRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IKeywordMatchTypeRecommendation);

                            /** KeywordMatchTypeRecommendation keyword. */
                            public keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                            /** KeywordMatchTypeRecommendation recommended_match_type. */
                            public recommended_match_type: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType);

                            /**
                             * Creates a new KeywordMatchTypeRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns KeywordMatchTypeRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IKeywordMatchTypeRecommendation): google.ads.googleads.v23.resources.Recommendation.KeywordMatchTypeRecommendation;

                            /**
                             * Encodes the specified KeywordMatchTypeRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.KeywordMatchTypeRecommendation.verify|verify} messages.
                             * @param message KeywordMatchTypeRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IKeywordMatchTypeRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified KeywordMatchTypeRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.KeywordMatchTypeRecommendation.verify|verify} messages.
                             * @param message KeywordMatchTypeRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IKeywordMatchTypeRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a KeywordMatchTypeRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns KeywordMatchTypeRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.KeywordMatchTypeRecommendation;

                            /**
                             * Decodes a KeywordMatchTypeRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns KeywordMatchTypeRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.KeywordMatchTypeRecommendation;

                            /**
                             * Verifies a KeywordMatchTypeRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a KeywordMatchTypeRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns KeywordMatchTypeRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.KeywordMatchTypeRecommendation;

                            /**
                             * Creates a plain object from a KeywordMatchTypeRecommendation message. Also converts values to other types if specified.
                             * @param message KeywordMatchTypeRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.KeywordMatchTypeRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this KeywordMatchTypeRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for KeywordMatchTypeRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MoveUnusedBudgetRecommendation. */
                        interface IMoveUnusedBudgetRecommendation {

                            /** MoveUnusedBudgetRecommendation excess_campaign_budget */
                            excess_campaign_budget?: (string|null);

                            /** MoveUnusedBudgetRecommendation budget_recommendation */
                            budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);
                        }

                        /** Represents a MoveUnusedBudgetRecommendation. */
                        class MoveUnusedBudgetRecommendation implements IMoveUnusedBudgetRecommendation {

                            /**
                             * Constructs a new MoveUnusedBudgetRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IMoveUnusedBudgetRecommendation);

                            /** MoveUnusedBudgetRecommendation excess_campaign_budget. */
                            public excess_campaign_budget?: (string|null);

                            /** MoveUnusedBudgetRecommendation budget_recommendation. */
                            public budget_recommendation?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudgetRecommendation|null);

                            /**
                             * Creates a new MoveUnusedBudgetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MoveUnusedBudgetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IMoveUnusedBudgetRecommendation): google.ads.googleads.v23.resources.Recommendation.MoveUnusedBudgetRecommendation;

                            /**
                             * Encodes the specified MoveUnusedBudgetRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MoveUnusedBudgetRecommendation.verify|verify} messages.
                             * @param message MoveUnusedBudgetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IMoveUnusedBudgetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MoveUnusedBudgetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MoveUnusedBudgetRecommendation.verify|verify} messages.
                             * @param message MoveUnusedBudgetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IMoveUnusedBudgetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MoveUnusedBudgetRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MoveUnusedBudgetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.MoveUnusedBudgetRecommendation;

                            /**
                             * Decodes a MoveUnusedBudgetRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MoveUnusedBudgetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.MoveUnusedBudgetRecommendation;

                            /**
                             * Verifies a MoveUnusedBudgetRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MoveUnusedBudgetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MoveUnusedBudgetRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.MoveUnusedBudgetRecommendation;

                            /**
                             * Creates a plain object from a MoveUnusedBudgetRecommendation message. Also converts values to other types if specified.
                             * @param message MoveUnusedBudgetRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.MoveUnusedBudgetRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MoveUnusedBudgetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MoveUnusedBudgetRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetRoasOptInRecommendation. */
                        interface ITargetRoasOptInRecommendation {

                            /** TargetRoasOptInRecommendation recommended_target_roas */
                            recommended_target_roas?: (number|null);

                            /** TargetRoasOptInRecommendation required_campaign_budget_amount_micros */
                            required_campaign_budget_amount_micros?: (number|null);
                        }

                        /** Represents a TargetRoasOptInRecommendation. */
                        class TargetRoasOptInRecommendation implements ITargetRoasOptInRecommendation {

                            /**
                             * Constructs a new TargetRoasOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ITargetRoasOptInRecommendation);

                            /** TargetRoasOptInRecommendation recommended_target_roas. */
                            public recommended_target_roas?: (number|null);

                            /** TargetRoasOptInRecommendation required_campaign_budget_amount_micros. */
                            public required_campaign_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new TargetRoasOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetRoasOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ITargetRoasOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.TargetRoasOptInRecommendation;

                            /**
                             * Encodes the specified TargetRoasOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetRoasOptInRecommendation.verify|verify} messages.
                             * @param message TargetRoasOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ITargetRoasOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetRoasOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetRoasOptInRecommendation.verify|verify} messages.
                             * @param message TargetRoasOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ITargetRoasOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetRoasOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetRoasOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.TargetRoasOptInRecommendation;

                            /**
                             * Decodes a TargetRoasOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetRoasOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.TargetRoasOptInRecommendation;

                            /**
                             * Verifies a TargetRoasOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetRoasOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetRoasOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.TargetRoasOptInRecommendation;

                            /**
                             * Creates a plain object from a TargetRoasOptInRecommendation message. Also converts values to other types if specified.
                             * @param message TargetRoasOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.TargetRoasOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetRoasOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetRoasOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ResponsiveSearchAdAssetRecommendation. */
                        interface IResponsiveSearchAdAssetRecommendation {

                            /** ResponsiveSearchAdAssetRecommendation current_ad */
                            current_ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** ResponsiveSearchAdAssetRecommendation recommended_assets */
                            recommended_assets?: (google.ads.googleads.v23.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdAssetRecommendation. */
                        class ResponsiveSearchAdAssetRecommendation implements IResponsiveSearchAdAssetRecommendation {

                            /**
                             * Constructs a new ResponsiveSearchAdAssetRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdAssetRecommendation);

                            /** ResponsiveSearchAdAssetRecommendation current_ad. */
                            public current_ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** ResponsiveSearchAdAssetRecommendation recommended_assets. */
                            public recommended_assets?: (google.ads.googleads.v23.resources.IAd|null);

                            /**
                             * Creates a new ResponsiveSearchAdAssetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ResponsiveSearchAdAssetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdAssetRecommendation): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdAssetRecommendation;

                            /**
                             * Encodes the specified ResponsiveSearchAdAssetRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdAssetRecommendation.verify|verify} messages.
                             * @param message ResponsiveSearchAdAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdAssetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdAssetRecommendation.verify|verify} messages.
                             * @param message ResponsiveSearchAdAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdAssetRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ResponsiveSearchAdAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdAssetRecommendation;

                            /**
                             * Decodes a ResponsiveSearchAdAssetRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ResponsiveSearchAdAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdAssetRecommendation;

                            /**
                             * Verifies a ResponsiveSearchAdAssetRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdAssetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ResponsiveSearchAdAssetRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdAssetRecommendation;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdAssetRecommendation message. Also converts values to other types if specified.
                             * @param message ResponsiveSearchAdAssetRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdAssetRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdAssetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ResponsiveSearchAdAssetRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ResponsiveSearchAdImproveAdStrengthRecommendation. */
                        interface IResponsiveSearchAdImproveAdStrengthRecommendation {

                            /** ResponsiveSearchAdImproveAdStrengthRecommendation current_ad */
                            current_ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** ResponsiveSearchAdImproveAdStrengthRecommendation recommended_ad */
                            recommended_ad?: (google.ads.googleads.v23.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdImproveAdStrengthRecommendation. */
                        class ResponsiveSearchAdImproveAdStrengthRecommendation implements IResponsiveSearchAdImproveAdStrengthRecommendation {

                            /**
                             * Constructs a new ResponsiveSearchAdImproveAdStrengthRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdImproveAdStrengthRecommendation);

                            /** ResponsiveSearchAdImproveAdStrengthRecommendation current_ad. */
                            public current_ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /** ResponsiveSearchAdImproveAdStrengthRecommendation recommended_ad. */
                            public recommended_ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /**
                             * Creates a new ResponsiveSearchAdImproveAdStrengthRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ResponsiveSearchAdImproveAdStrengthRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdImproveAdStrengthRecommendation): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdImproveAdStrengthRecommendation;

                            /**
                             * Encodes the specified ResponsiveSearchAdImproveAdStrengthRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdImproveAdStrengthRecommendation.verify|verify} messages.
                             * @param message ResponsiveSearchAdImproveAdStrengthRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdImproveAdStrengthRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdImproveAdStrengthRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdImproveAdStrengthRecommendation.verify|verify} messages.
                             * @param message ResponsiveSearchAdImproveAdStrengthRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdImproveAdStrengthRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdImproveAdStrengthRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ResponsiveSearchAdImproveAdStrengthRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdImproveAdStrengthRecommendation;

                            /**
                             * Decodes a ResponsiveSearchAdImproveAdStrengthRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ResponsiveSearchAdImproveAdStrengthRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdImproveAdStrengthRecommendation;

                            /**
                             * Verifies a ResponsiveSearchAdImproveAdStrengthRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdImproveAdStrengthRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ResponsiveSearchAdImproveAdStrengthRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdImproveAdStrengthRecommendation;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdImproveAdStrengthRecommendation message. Also converts values to other types if specified.
                             * @param message ResponsiveSearchAdImproveAdStrengthRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdImproveAdStrengthRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdImproveAdStrengthRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ResponsiveSearchAdImproveAdStrengthRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ResponsiveSearchAdRecommendation. */
                        interface IResponsiveSearchAdRecommendation {

                            /** ResponsiveSearchAdRecommendation ad */
                            ad?: (google.ads.googleads.v23.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdRecommendation. */
                        class ResponsiveSearchAdRecommendation implements IResponsiveSearchAdRecommendation {

                            /**
                             * Constructs a new ResponsiveSearchAdRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdRecommendation);

                            /** ResponsiveSearchAdRecommendation ad. */
                            public ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /**
                             * Creates a new ResponsiveSearchAdRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ResponsiveSearchAdRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdRecommendation): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdRecommendation;

                            /**
                             * Encodes the specified ResponsiveSearchAdRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdRecommendation.verify|verify} messages.
                             * @param message ResponsiveSearchAdRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdRecommendation.verify|verify} messages.
                             * @param message ResponsiveSearchAdRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IResponsiveSearchAdRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ResponsiveSearchAdRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdRecommendation;

                            /**
                             * Decodes a ResponsiveSearchAdRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ResponsiveSearchAdRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdRecommendation;

                            /**
                             * Verifies a ResponsiveSearchAdRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ResponsiveSearchAdRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdRecommendation;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdRecommendation message. Also converts values to other types if specified.
                             * @param message ResponsiveSearchAdRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ResponsiveSearchAdRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ResponsiveSearchAdRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a UseBroadMatchKeywordRecommendation. */
                        interface IUseBroadMatchKeywordRecommendation {

                            /** UseBroadMatchKeywordRecommendation keyword */
                            keyword?: (google.ads.googleads.v23.common.IKeywordInfo[]|null);

                            /** UseBroadMatchKeywordRecommendation suggested_keywords_count */
                            suggested_keywords_count?: (number|null);

                            /** UseBroadMatchKeywordRecommendation campaign_keywords_count */
                            campaign_keywords_count?: (number|null);

                            /** UseBroadMatchKeywordRecommendation campaign_uses_shared_budget */
                            campaign_uses_shared_budget?: (boolean|null);

                            /** UseBroadMatchKeywordRecommendation required_campaign_budget_amount_micros */
                            required_campaign_budget_amount_micros?: (number|null);
                        }

                        /** Represents a UseBroadMatchKeywordRecommendation. */
                        class UseBroadMatchKeywordRecommendation implements IUseBroadMatchKeywordRecommendation {

                            /**
                             * Constructs a new UseBroadMatchKeywordRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IUseBroadMatchKeywordRecommendation);

                            /** UseBroadMatchKeywordRecommendation keyword. */
                            public keyword: google.ads.googleads.v23.common.IKeywordInfo[];

                            /** UseBroadMatchKeywordRecommendation suggested_keywords_count. */
                            public suggested_keywords_count: number;

                            /** UseBroadMatchKeywordRecommendation campaign_keywords_count. */
                            public campaign_keywords_count: number;

                            /** UseBroadMatchKeywordRecommendation campaign_uses_shared_budget. */
                            public campaign_uses_shared_budget: boolean;

                            /** UseBroadMatchKeywordRecommendation required_campaign_budget_amount_micros. */
                            public required_campaign_budget_amount_micros: number;

                            /**
                             * Creates a new UseBroadMatchKeywordRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns UseBroadMatchKeywordRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IUseBroadMatchKeywordRecommendation): google.ads.googleads.v23.resources.Recommendation.UseBroadMatchKeywordRecommendation;

                            /**
                             * Encodes the specified UseBroadMatchKeywordRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.UseBroadMatchKeywordRecommendation.verify|verify} messages.
                             * @param message UseBroadMatchKeywordRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IUseBroadMatchKeywordRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified UseBroadMatchKeywordRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.UseBroadMatchKeywordRecommendation.verify|verify} messages.
                             * @param message UseBroadMatchKeywordRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IUseBroadMatchKeywordRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a UseBroadMatchKeywordRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns UseBroadMatchKeywordRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.UseBroadMatchKeywordRecommendation;

                            /**
                             * Decodes a UseBroadMatchKeywordRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns UseBroadMatchKeywordRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.UseBroadMatchKeywordRecommendation;

                            /**
                             * Verifies a UseBroadMatchKeywordRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a UseBroadMatchKeywordRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns UseBroadMatchKeywordRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.UseBroadMatchKeywordRecommendation;

                            /**
                             * Creates a plain object from a UseBroadMatchKeywordRecommendation message. Also converts values to other types if specified.
                             * @param message UseBroadMatchKeywordRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.UseBroadMatchKeywordRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this UseBroadMatchKeywordRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for UseBroadMatchKeywordRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation. */
                        interface IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation {

                            /** UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation merchant_id */
                            merchant_id?: (number|null);

                            /** UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation sales_country_code */
                            sales_country_code?: (string|null);
                        }

                        /** Represents an UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation. */
                        class UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation implements IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation {

                            /**
                             * Constructs a new UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation);

                            /** UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation merchant_id. */
                            public merchant_id: number;

                            /** UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation sales_country_code. */
                            public sales_country_code: string;

                            /**
                             * Creates a new UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation): google.ads.googleads.v23.resources.Recommendation.UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation;

                            /**
                             * Encodes the specified UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation;

                            /**
                             * Decodes an UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation;

                            /**
                             * Verifies an UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message.
                             * @param message Plain 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 UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation;

                            /**
                             * Creates a plain object from an UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation message. Also converts values to other types if specified.
                             * @param message UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RaiseTargetCpaBidTooLowRecommendation. */
                        interface IRaiseTargetCpaBidTooLowRecommendation {

                            /** RaiseTargetCpaBidTooLowRecommendation recommended_target_multiplier */
                            recommended_target_multiplier?: (number|null);

                            /** RaiseTargetCpaBidTooLowRecommendation average_target_cpa_micros */
                            average_target_cpa_micros?: (number|null);
                        }

                        /** Represents a RaiseTargetCpaBidTooLowRecommendation. */
                        class RaiseTargetCpaBidTooLowRecommendation implements IRaiseTargetCpaBidTooLowRecommendation {

                            /**
                             * Constructs a new RaiseTargetCpaBidTooLowRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaBidTooLowRecommendation);

                            /** RaiseTargetCpaBidTooLowRecommendation recommended_target_multiplier. */
                            public recommended_target_multiplier?: (number|null);

                            /** RaiseTargetCpaBidTooLowRecommendation average_target_cpa_micros. */
                            public average_target_cpa_micros?: (number|null);

                            /**
                             * Creates a new RaiseTargetCpaBidTooLowRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RaiseTargetCpaBidTooLowRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaBidTooLowRecommendation): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaBidTooLowRecommendation;

                            /**
                             * Encodes the specified RaiseTargetCpaBidTooLowRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaBidTooLowRecommendation.verify|verify} messages.
                             * @param message RaiseTargetCpaBidTooLowRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaBidTooLowRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RaiseTargetCpaBidTooLowRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaBidTooLowRecommendation.verify|verify} messages.
                             * @param message RaiseTargetCpaBidTooLowRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaBidTooLowRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RaiseTargetCpaBidTooLowRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RaiseTargetCpaBidTooLowRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaBidTooLowRecommendation;

                            /**
                             * Decodes a RaiseTargetCpaBidTooLowRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RaiseTargetCpaBidTooLowRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaBidTooLowRecommendation;

                            /**
                             * Verifies a RaiseTargetCpaBidTooLowRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RaiseTargetCpaBidTooLowRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RaiseTargetCpaBidTooLowRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaBidTooLowRecommendation;

                            /**
                             * Creates a plain object from a RaiseTargetCpaBidTooLowRecommendation message. Also converts values to other types if specified.
                             * @param message RaiseTargetCpaBidTooLowRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaBidTooLowRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RaiseTargetCpaBidTooLowRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RaiseTargetCpaBidTooLowRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a DisplayExpansionOptInRecommendation. */
                        interface IDisplayExpansionOptInRecommendation {
                        }

                        /** Represents a DisplayExpansionOptInRecommendation. */
                        class DisplayExpansionOptInRecommendation implements IDisplayExpansionOptInRecommendation {

                            /**
                             * Constructs a new DisplayExpansionOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IDisplayExpansionOptInRecommendation);

                            /**
                             * Creates a new DisplayExpansionOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DisplayExpansionOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IDisplayExpansionOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.DisplayExpansionOptInRecommendation;

                            /**
                             * Encodes the specified DisplayExpansionOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.DisplayExpansionOptInRecommendation.verify|verify} messages.
                             * @param message DisplayExpansionOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IDisplayExpansionOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DisplayExpansionOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.DisplayExpansionOptInRecommendation.verify|verify} messages.
                             * @param message DisplayExpansionOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IDisplayExpansionOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DisplayExpansionOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DisplayExpansionOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.DisplayExpansionOptInRecommendation;

                            /**
                             * Decodes a DisplayExpansionOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DisplayExpansionOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.DisplayExpansionOptInRecommendation;

                            /**
                             * Verifies a DisplayExpansionOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DisplayExpansionOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DisplayExpansionOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.DisplayExpansionOptInRecommendation;

                            /**
                             * Creates a plain object from a DisplayExpansionOptInRecommendation message. Also converts values to other types if specified.
                             * @param message DisplayExpansionOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.DisplayExpansionOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DisplayExpansionOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DisplayExpansionOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an UpgradeLocalCampaignToPerformanceMaxRecommendation. */
                        interface IUpgradeLocalCampaignToPerformanceMaxRecommendation {
                        }

                        /** Represents an UpgradeLocalCampaignToPerformanceMaxRecommendation. */
                        class UpgradeLocalCampaignToPerformanceMaxRecommendation implements IUpgradeLocalCampaignToPerformanceMaxRecommendation {

                            /**
                             * Constructs a new UpgradeLocalCampaignToPerformanceMaxRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IUpgradeLocalCampaignToPerformanceMaxRecommendation);

                            /**
                             * Creates a new UpgradeLocalCampaignToPerformanceMaxRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns UpgradeLocalCampaignToPerformanceMaxRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IUpgradeLocalCampaignToPerformanceMaxRecommendation): google.ads.googleads.v23.resources.Recommendation.UpgradeLocalCampaignToPerformanceMaxRecommendation;

                            /**
                             * Encodes the specified UpgradeLocalCampaignToPerformanceMaxRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.UpgradeLocalCampaignToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message UpgradeLocalCampaignToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IUpgradeLocalCampaignToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified UpgradeLocalCampaignToPerformanceMaxRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.UpgradeLocalCampaignToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message UpgradeLocalCampaignToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IUpgradeLocalCampaignToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an UpgradeLocalCampaignToPerformanceMaxRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns UpgradeLocalCampaignToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.UpgradeLocalCampaignToPerformanceMaxRecommendation;

                            /**
                             * Decodes an UpgradeLocalCampaignToPerformanceMaxRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns UpgradeLocalCampaignToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.UpgradeLocalCampaignToPerformanceMaxRecommendation;

                            /**
                             * Verifies an UpgradeLocalCampaignToPerformanceMaxRecommendation message.
                             * @param message Plain 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 UpgradeLocalCampaignToPerformanceMaxRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns UpgradeLocalCampaignToPerformanceMaxRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.UpgradeLocalCampaignToPerformanceMaxRecommendation;

                            /**
                             * Creates a plain object from an UpgradeLocalCampaignToPerformanceMaxRecommendation message. Also converts values to other types if specified.
                             * @param message UpgradeLocalCampaignToPerformanceMaxRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.UpgradeLocalCampaignToPerformanceMaxRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this UpgradeLocalCampaignToPerformanceMaxRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for UpgradeLocalCampaignToPerformanceMaxRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ForecastingSetTargetRoasRecommendation. */
                        interface IForecastingSetTargetRoasRecommendation {

                            /** ForecastingSetTargetRoasRecommendation recommended_target_roas */
                            recommended_target_roas?: (number|null);

                            /** ForecastingSetTargetRoasRecommendation campaign_budget */
                            campaign_budget?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudget|null);
                        }

                        /** Represents a ForecastingSetTargetRoasRecommendation. */
                        class ForecastingSetTargetRoasRecommendation implements IForecastingSetTargetRoasRecommendation {

                            /**
                             * Constructs a new ForecastingSetTargetRoasRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation);

                            /** ForecastingSetTargetRoasRecommendation recommended_target_roas. */
                            public recommended_target_roas: number;

                            /** ForecastingSetTargetRoasRecommendation campaign_budget. */
                            public campaign_budget?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudget|null);

                            /**
                             * Creates a new ForecastingSetTargetRoasRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ForecastingSetTargetRoasRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetRoasRecommendation;

                            /**
                             * Encodes the specified ForecastingSetTargetRoasRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetRoasRecommendation.verify|verify} messages.
                             * @param message ForecastingSetTargetRoasRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ForecastingSetTargetRoasRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetRoasRecommendation.verify|verify} messages.
                             * @param message ForecastingSetTargetRoasRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetRoasRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ForecastingSetTargetRoasRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ForecastingSetTargetRoasRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetRoasRecommendation;

                            /**
                             * Decodes a ForecastingSetTargetRoasRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ForecastingSetTargetRoasRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetRoasRecommendation;

                            /**
                             * Verifies a ForecastingSetTargetRoasRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ForecastingSetTargetRoasRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ForecastingSetTargetRoasRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetRoasRecommendation;

                            /**
                             * Creates a plain object from a ForecastingSetTargetRoasRecommendation message. Also converts values to other types if specified.
                             * @param message ForecastingSetTargetRoasRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetRoasRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ForecastingSetTargetRoasRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ForecastingSetTargetRoasRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ShoppingOfferAttributeRecommendation. */
                        interface IShoppingOfferAttributeRecommendation {

                            /** ShoppingOfferAttributeRecommendation merchant */
                            merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingOfferAttributeRecommendation feed_label */
                            feed_label?: (string|null);

                            /** ShoppingOfferAttributeRecommendation offers_count */
                            offers_count?: (number|null);

                            /** ShoppingOfferAttributeRecommendation demoted_offers_count */
                            demoted_offers_count?: (number|null);
                        }

                        /** Represents a ShoppingOfferAttributeRecommendation. */
                        class ShoppingOfferAttributeRecommendation implements IShoppingOfferAttributeRecommendation {

                            /**
                             * Constructs a new ShoppingOfferAttributeRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation);

                            /** ShoppingOfferAttributeRecommendation merchant. */
                            public merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingOfferAttributeRecommendation feed_label. */
                            public feed_label: string;

                            /** ShoppingOfferAttributeRecommendation offers_count. */
                            public offers_count: number;

                            /** ShoppingOfferAttributeRecommendation demoted_offers_count. */
                            public demoted_offers_count: number;

                            /**
                             * Creates a new ShoppingOfferAttributeRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingOfferAttributeRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation): google.ads.googleads.v23.resources.Recommendation.ShoppingOfferAttributeRecommendation;

                            /**
                             * Encodes the specified ShoppingOfferAttributeRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingOfferAttributeRecommendation.verify|verify} messages.
                             * @param message ShoppingOfferAttributeRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingOfferAttributeRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingOfferAttributeRecommendation.verify|verify} messages.
                             * @param message ShoppingOfferAttributeRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IShoppingOfferAttributeRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingOfferAttributeRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ShoppingOfferAttributeRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ShoppingOfferAttributeRecommendation;

                            /**
                             * Decodes a ShoppingOfferAttributeRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ShoppingOfferAttributeRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ShoppingOfferAttributeRecommendation;

                            /**
                             * Verifies a ShoppingOfferAttributeRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingOfferAttributeRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ShoppingOfferAttributeRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ShoppingOfferAttributeRecommendation;

                            /**
                             * Creates a plain object from a ShoppingOfferAttributeRecommendation message. Also converts values to other types if specified.
                             * @param message ShoppingOfferAttributeRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ShoppingOfferAttributeRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingOfferAttributeRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ShoppingOfferAttributeRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ShoppingFixDisapprovedProductsRecommendation. */
                        interface IShoppingFixDisapprovedProductsRecommendation {

                            /** ShoppingFixDisapprovedProductsRecommendation merchant */
                            merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingFixDisapprovedProductsRecommendation feed_label */
                            feed_label?: (string|null);

                            /** ShoppingFixDisapprovedProductsRecommendation products_count */
                            products_count?: (number|null);

                            /** ShoppingFixDisapprovedProductsRecommendation disapproved_products_count */
                            disapproved_products_count?: (number|null);
                        }

                        /** Represents a ShoppingFixDisapprovedProductsRecommendation. */
                        class ShoppingFixDisapprovedProductsRecommendation implements IShoppingFixDisapprovedProductsRecommendation {

                            /**
                             * Constructs a new ShoppingFixDisapprovedProductsRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingFixDisapprovedProductsRecommendation);

                            /** ShoppingFixDisapprovedProductsRecommendation merchant. */
                            public merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingFixDisapprovedProductsRecommendation feed_label. */
                            public feed_label: string;

                            /** ShoppingFixDisapprovedProductsRecommendation products_count. */
                            public products_count: number;

                            /** ShoppingFixDisapprovedProductsRecommendation disapproved_products_count. */
                            public disapproved_products_count: number;

                            /**
                             * Creates a new ShoppingFixDisapprovedProductsRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingFixDisapprovedProductsRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingFixDisapprovedProductsRecommendation): google.ads.googleads.v23.resources.Recommendation.ShoppingFixDisapprovedProductsRecommendation;

                            /**
                             * Encodes the specified ShoppingFixDisapprovedProductsRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingFixDisapprovedProductsRecommendation.verify|verify} messages.
                             * @param message ShoppingFixDisapprovedProductsRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IShoppingFixDisapprovedProductsRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingFixDisapprovedProductsRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingFixDisapprovedProductsRecommendation.verify|verify} messages.
                             * @param message ShoppingFixDisapprovedProductsRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IShoppingFixDisapprovedProductsRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingFixDisapprovedProductsRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ShoppingFixDisapprovedProductsRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ShoppingFixDisapprovedProductsRecommendation;

                            /**
                             * Decodes a ShoppingFixDisapprovedProductsRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ShoppingFixDisapprovedProductsRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ShoppingFixDisapprovedProductsRecommendation;

                            /**
                             * Verifies a ShoppingFixDisapprovedProductsRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingFixDisapprovedProductsRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ShoppingFixDisapprovedProductsRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ShoppingFixDisapprovedProductsRecommendation;

                            /**
                             * Creates a plain object from a ShoppingFixDisapprovedProductsRecommendation message. Also converts values to other types if specified.
                             * @param message ShoppingFixDisapprovedProductsRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ShoppingFixDisapprovedProductsRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingFixDisapprovedProductsRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ShoppingFixDisapprovedProductsRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ShoppingTargetAllOffersRecommendation. */
                        interface IShoppingTargetAllOffersRecommendation {

                            /** ShoppingTargetAllOffersRecommendation merchant */
                            merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingTargetAllOffersRecommendation untargeted_offers_count */
                            untargeted_offers_count?: (number|null);

                            /** ShoppingTargetAllOffersRecommendation feed_label */
                            feed_label?: (string|null);
                        }

                        /** Represents a ShoppingTargetAllOffersRecommendation. */
                        class ShoppingTargetAllOffersRecommendation implements IShoppingTargetAllOffersRecommendation {

                            /**
                             * Constructs a new ShoppingTargetAllOffersRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingTargetAllOffersRecommendation);

                            /** ShoppingTargetAllOffersRecommendation merchant. */
                            public merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingTargetAllOffersRecommendation untargeted_offers_count. */
                            public untargeted_offers_count: number;

                            /** ShoppingTargetAllOffersRecommendation feed_label. */
                            public feed_label: string;

                            /**
                             * Creates a new ShoppingTargetAllOffersRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingTargetAllOffersRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingTargetAllOffersRecommendation): google.ads.googleads.v23.resources.Recommendation.ShoppingTargetAllOffersRecommendation;

                            /**
                             * Encodes the specified ShoppingTargetAllOffersRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingTargetAllOffersRecommendation.verify|verify} messages.
                             * @param message ShoppingTargetAllOffersRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IShoppingTargetAllOffersRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingTargetAllOffersRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingTargetAllOffersRecommendation.verify|verify} messages.
                             * @param message ShoppingTargetAllOffersRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IShoppingTargetAllOffersRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingTargetAllOffersRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ShoppingTargetAllOffersRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ShoppingTargetAllOffersRecommendation;

                            /**
                             * Decodes a ShoppingTargetAllOffersRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ShoppingTargetAllOffersRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ShoppingTargetAllOffersRecommendation;

                            /**
                             * Verifies a ShoppingTargetAllOffersRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingTargetAllOffersRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ShoppingTargetAllOffersRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ShoppingTargetAllOffersRecommendation;

                            /**
                             * Creates a plain object from a ShoppingTargetAllOffersRecommendation message. Also converts values to other types if specified.
                             * @param message ShoppingTargetAllOffersRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ShoppingTargetAllOffersRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingTargetAllOffersRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ShoppingTargetAllOffersRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ShoppingAddProductsToCampaignRecommendation. */
                        interface IShoppingAddProductsToCampaignRecommendation {

                            /** ShoppingAddProductsToCampaignRecommendation merchant */
                            merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingAddProductsToCampaignRecommendation feed_label */
                            feed_label?: (string|null);

                            /** ShoppingAddProductsToCampaignRecommendation reason */
                            reason?: (google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum.Reason|keyof typeof google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum.Reason|null);
                        }

                        /** Represents a ShoppingAddProductsToCampaignRecommendation. */
                        class ShoppingAddProductsToCampaignRecommendation implements IShoppingAddProductsToCampaignRecommendation {

                            /**
                             * Constructs a new ShoppingAddProductsToCampaignRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingAddProductsToCampaignRecommendation);

                            /** ShoppingAddProductsToCampaignRecommendation merchant. */
                            public merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingAddProductsToCampaignRecommendation feed_label. */
                            public feed_label: string;

                            /** ShoppingAddProductsToCampaignRecommendation reason. */
                            public reason: (google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum.Reason|keyof typeof google.ads.googleads.v23.enums.ShoppingAddProductsToCampaignRecommendationEnum.Reason);

                            /**
                             * Creates a new ShoppingAddProductsToCampaignRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingAddProductsToCampaignRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingAddProductsToCampaignRecommendation): google.ads.googleads.v23.resources.Recommendation.ShoppingAddProductsToCampaignRecommendation;

                            /**
                             * Encodes the specified ShoppingAddProductsToCampaignRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingAddProductsToCampaignRecommendation.verify|verify} messages.
                             * @param message ShoppingAddProductsToCampaignRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IShoppingAddProductsToCampaignRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingAddProductsToCampaignRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingAddProductsToCampaignRecommendation.verify|verify} messages.
                             * @param message ShoppingAddProductsToCampaignRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IShoppingAddProductsToCampaignRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingAddProductsToCampaignRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ShoppingAddProductsToCampaignRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ShoppingAddProductsToCampaignRecommendation;

                            /**
                             * Decodes a ShoppingAddProductsToCampaignRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ShoppingAddProductsToCampaignRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ShoppingAddProductsToCampaignRecommendation;

                            /**
                             * Verifies a ShoppingAddProductsToCampaignRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingAddProductsToCampaignRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ShoppingAddProductsToCampaignRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ShoppingAddProductsToCampaignRecommendation;

                            /**
                             * Creates a plain object from a ShoppingAddProductsToCampaignRecommendation message. Also converts values to other types if specified.
                             * @param message ShoppingAddProductsToCampaignRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ShoppingAddProductsToCampaignRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingAddProductsToCampaignRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ShoppingAddProductsToCampaignRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ShoppingMerchantCenterAccountSuspensionRecommendation. */
                        interface IShoppingMerchantCenterAccountSuspensionRecommendation {

                            /** ShoppingMerchantCenterAccountSuspensionRecommendation merchant */
                            merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingMerchantCenterAccountSuspensionRecommendation feed_label */
                            feed_label?: (string|null);
                        }

                        /** Represents a ShoppingMerchantCenterAccountSuspensionRecommendation. */
                        class ShoppingMerchantCenterAccountSuspensionRecommendation implements IShoppingMerchantCenterAccountSuspensionRecommendation {

                            /**
                             * Constructs a new ShoppingMerchantCenterAccountSuspensionRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation);

                            /** ShoppingMerchantCenterAccountSuspensionRecommendation merchant. */
                            public merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingMerchantCenterAccountSuspensionRecommendation feed_label. */
                            public feed_label: string;

                            /**
                             * Creates a new ShoppingMerchantCenterAccountSuspensionRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingMerchantCenterAccountSuspensionRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation): google.ads.googleads.v23.resources.Recommendation.ShoppingMerchantCenterAccountSuspensionRecommendation;

                            /**
                             * Encodes the specified ShoppingMerchantCenterAccountSuspensionRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingMerchantCenterAccountSuspensionRecommendation.verify|verify} messages.
                             * @param message ShoppingMerchantCenterAccountSuspensionRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingMerchantCenterAccountSuspensionRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingMerchantCenterAccountSuspensionRecommendation.verify|verify} messages.
                             * @param message ShoppingMerchantCenterAccountSuspensionRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IShoppingMerchantCenterAccountSuspensionRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingMerchantCenterAccountSuspensionRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ShoppingMerchantCenterAccountSuspensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ShoppingMerchantCenterAccountSuspensionRecommendation;

                            /**
                             * Decodes a ShoppingMerchantCenterAccountSuspensionRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ShoppingMerchantCenterAccountSuspensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ShoppingMerchantCenterAccountSuspensionRecommendation;

                            /**
                             * Verifies a ShoppingMerchantCenterAccountSuspensionRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingMerchantCenterAccountSuspensionRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ShoppingMerchantCenterAccountSuspensionRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ShoppingMerchantCenterAccountSuspensionRecommendation;

                            /**
                             * Creates a plain object from a ShoppingMerchantCenterAccountSuspensionRecommendation message. Also converts values to other types if specified.
                             * @param message ShoppingMerchantCenterAccountSuspensionRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ShoppingMerchantCenterAccountSuspensionRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingMerchantCenterAccountSuspensionRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ShoppingMerchantCenterAccountSuspensionRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation. */
                        interface IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation {

                            /** ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation merchant */
                            merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation feed_label */
                            feed_label?: (string|null);
                        }

                        /** Represents a ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation. */
                        class ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation implements IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation {

                            /**
                             * Constructs a new ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation);

                            /** ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation merchant. */
                            public merchant?: (google.ads.googleads.v23.resources.Recommendation.IMerchantInfo|null);

                            /** ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation feed_label. */
                            public feed_label: string;

                            /**
                             * Creates a new ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation): google.ads.googleads.v23.resources.Recommendation.ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation;

                            /**
                             * Encodes the specified ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation;

                            /**
                             * Decodes a ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation;

                            /**
                             * Verifies a ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation;

                            /**
                             * Creates a plain object from a ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation message. Also converts values to other types if specified.
                             * @param message ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetAdjustmentInfo. */
                        interface ITargetAdjustmentInfo {

                            /** TargetAdjustmentInfo shared_set */
                            shared_set?: (string|null);

                            /** TargetAdjustmentInfo recommended_target_multiplier */
                            recommended_target_multiplier?: (number|null);

                            /** TargetAdjustmentInfo current_average_target_micros */
                            current_average_target_micros?: (number|null);
                        }

                        /** Represents a TargetAdjustmentInfo. */
                        class TargetAdjustmentInfo implements ITargetAdjustmentInfo {

                            /**
                             * Constructs a new TargetAdjustmentInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo);

                            /** TargetAdjustmentInfo shared_set. */
                            public shared_set?: (string|null);

                            /** TargetAdjustmentInfo recommended_target_multiplier. */
                            public recommended_target_multiplier: number;

                            /** TargetAdjustmentInfo current_average_target_micros. */
                            public current_average_target_micros: number;

                            /**
                             * Creates a new TargetAdjustmentInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetAdjustmentInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo): google.ads.googleads.v23.resources.Recommendation.TargetAdjustmentInfo;

                            /**
                             * Encodes the specified TargetAdjustmentInfo message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetAdjustmentInfo.verify|verify} messages.
                             * @param message TargetAdjustmentInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetAdjustmentInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.TargetAdjustmentInfo.verify|verify} messages.
                             * @param message TargetAdjustmentInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetAdjustmentInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetAdjustmentInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.TargetAdjustmentInfo;

                            /**
                             * Decodes a TargetAdjustmentInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetAdjustmentInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.TargetAdjustmentInfo;

                            /**
                             * Verifies a TargetAdjustmentInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetAdjustmentInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetAdjustmentInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.TargetAdjustmentInfo;

                            /**
                             * Creates a plain object from a TargetAdjustmentInfo message. Also converts values to other types if specified.
                             * @param message TargetAdjustmentInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.TargetAdjustmentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetAdjustmentInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetAdjustmentInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RaiseTargetCpaRecommendation. */
                        interface IRaiseTargetCpaRecommendation {

                            /** RaiseTargetCpaRecommendation target_adjustment */
                            target_adjustment?: (google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo|null);

                            /** RaiseTargetCpaRecommendation app_bidding_goal */
                            app_bidding_goal?: (google.ads.googleads.v23.enums.AppBiddingGoalEnum.AppBiddingGoal|keyof typeof google.ads.googleads.v23.enums.AppBiddingGoalEnum.AppBiddingGoal|null);
                        }

                        /** Represents a RaiseTargetCpaRecommendation. */
                        class RaiseTargetCpaRecommendation implements IRaiseTargetCpaRecommendation {

                            /**
                             * Constructs a new RaiseTargetCpaRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaRecommendation);

                            /** RaiseTargetCpaRecommendation target_adjustment. */
                            public target_adjustment?: (google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo|null);

                            /** RaiseTargetCpaRecommendation app_bidding_goal. */
                            public app_bidding_goal?: (google.ads.googleads.v23.enums.AppBiddingGoalEnum.AppBiddingGoal|keyof typeof google.ads.googleads.v23.enums.AppBiddingGoalEnum.AppBiddingGoal|null);

                            /**
                             * Creates a new RaiseTargetCpaRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RaiseTargetCpaRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaRecommendation): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaRecommendation;

                            /**
                             * Encodes the specified RaiseTargetCpaRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaRecommendation.verify|verify} messages.
                             * @param message RaiseTargetCpaRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RaiseTargetCpaRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaRecommendation.verify|verify} messages.
                             * @param message RaiseTargetCpaRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IRaiseTargetCpaRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RaiseTargetCpaRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RaiseTargetCpaRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaRecommendation;

                            /**
                             * Decodes a RaiseTargetCpaRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RaiseTargetCpaRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaRecommendation;

                            /**
                             * Verifies a RaiseTargetCpaRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RaiseTargetCpaRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RaiseTargetCpaRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaRecommendation;

                            /**
                             * Creates a plain object from a RaiseTargetCpaRecommendation message. Also converts values to other types if specified.
                             * @param message RaiseTargetCpaRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.RaiseTargetCpaRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RaiseTargetCpaRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RaiseTargetCpaRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a LowerTargetRoasRecommendation. */
                        interface ILowerTargetRoasRecommendation {

                            /** LowerTargetRoasRecommendation target_adjustment */
                            target_adjustment?: (google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo|null);
                        }

                        /** Represents a LowerTargetRoasRecommendation. */
                        class LowerTargetRoasRecommendation implements ILowerTargetRoasRecommendation {

                            /**
                             * Constructs a new LowerTargetRoasRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ILowerTargetRoasRecommendation);

                            /** LowerTargetRoasRecommendation target_adjustment. */
                            public target_adjustment?: (google.ads.googleads.v23.resources.Recommendation.ITargetAdjustmentInfo|null);

                            /**
                             * Creates a new LowerTargetRoasRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LowerTargetRoasRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ILowerTargetRoasRecommendation): google.ads.googleads.v23.resources.Recommendation.LowerTargetRoasRecommendation;

                            /**
                             * Encodes the specified LowerTargetRoasRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.LowerTargetRoasRecommendation.verify|verify} messages.
                             * @param message LowerTargetRoasRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ILowerTargetRoasRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LowerTargetRoasRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.LowerTargetRoasRecommendation.verify|verify} messages.
                             * @param message LowerTargetRoasRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ILowerTargetRoasRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LowerTargetRoasRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LowerTargetRoasRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.LowerTargetRoasRecommendation;

                            /**
                             * Decodes a LowerTargetRoasRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LowerTargetRoasRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.LowerTargetRoasRecommendation;

                            /**
                             * Verifies a LowerTargetRoasRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LowerTargetRoasRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LowerTargetRoasRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.LowerTargetRoasRecommendation;

                            /**
                             * Creates a plain object from a LowerTargetRoasRecommendation message. Also converts values to other types if specified.
                             * @param message LowerTargetRoasRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.LowerTargetRoasRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LowerTargetRoasRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LowerTargetRoasRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a DynamicImageExtensionOptInRecommendation. */
                        interface IDynamicImageExtensionOptInRecommendation {
                        }

                        /** Represents a DynamicImageExtensionOptInRecommendation. */
                        class DynamicImageExtensionOptInRecommendation implements IDynamicImageExtensionOptInRecommendation {

                            /**
                             * Constructs a new DynamicImageExtensionOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IDynamicImageExtensionOptInRecommendation);

                            /**
                             * Creates a new DynamicImageExtensionOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DynamicImageExtensionOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IDynamicImageExtensionOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.DynamicImageExtensionOptInRecommendation;

                            /**
                             * Encodes the specified DynamicImageExtensionOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.DynamicImageExtensionOptInRecommendation.verify|verify} messages.
                             * @param message DynamicImageExtensionOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IDynamicImageExtensionOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DynamicImageExtensionOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.DynamicImageExtensionOptInRecommendation.verify|verify} messages.
                             * @param message DynamicImageExtensionOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IDynamicImageExtensionOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DynamicImageExtensionOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DynamicImageExtensionOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.DynamicImageExtensionOptInRecommendation;

                            /**
                             * Decodes a DynamicImageExtensionOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DynamicImageExtensionOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.DynamicImageExtensionOptInRecommendation;

                            /**
                             * Verifies a DynamicImageExtensionOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DynamicImageExtensionOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DynamicImageExtensionOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.DynamicImageExtensionOptInRecommendation;

                            /**
                             * Creates a plain object from a DynamicImageExtensionOptInRecommendation message. Also converts values to other types if specified.
                             * @param message DynamicImageExtensionOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.DynamicImageExtensionOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DynamicImageExtensionOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DynamicImageExtensionOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CampaignBudget. */
                        interface ICampaignBudget {

                            /** CampaignBudget current_amount_micros */
                            current_amount_micros?: (number|null);

                            /** CampaignBudget recommended_new_amount_micros */
                            recommended_new_amount_micros?: (number|null);

                            /** CampaignBudget new_start_date */
                            new_start_date?: (string|null);
                        }

                        /** Represents a CampaignBudget. */
                        class CampaignBudget implements ICampaignBudget {

                            /**
                             * Constructs a new CampaignBudget.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ICampaignBudget);

                            /** CampaignBudget current_amount_micros. */
                            public current_amount_micros: number;

                            /** CampaignBudget recommended_new_amount_micros. */
                            public recommended_new_amount_micros: number;

                            /** CampaignBudget new_start_date. */
                            public new_start_date: string;

                            /**
                             * Creates a new CampaignBudget instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignBudget instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ICampaignBudget): google.ads.googleads.v23.resources.Recommendation.CampaignBudget;

                            /**
                             * Encodes the specified CampaignBudget message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CampaignBudget.verify|verify} messages.
                             * @param message CampaignBudget message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ICampaignBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignBudget message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CampaignBudget.verify|verify} messages.
                             * @param message CampaignBudget message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ICampaignBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignBudget message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CampaignBudget
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.CampaignBudget;

                            /**
                             * Decodes a CampaignBudget message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CampaignBudget
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.CampaignBudget;

                            /**
                             * Verifies a CampaignBudget message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignBudget message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CampaignBudget
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.CampaignBudget;

                            /**
                             * Creates a plain object from a CampaignBudget message. Also converts values to other types if specified.
                             * @param message CampaignBudget
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.CampaignBudget, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignBudget to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CampaignBudget
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a PerformanceMaxOptInRecommendation. */
                        interface IPerformanceMaxOptInRecommendation {
                        }

                        /** Represents a PerformanceMaxOptInRecommendation. */
                        class PerformanceMaxOptInRecommendation implements IPerformanceMaxOptInRecommendation {

                            /**
                             * Constructs a new PerformanceMaxOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxOptInRecommendation);

                            /**
                             * Creates a new PerformanceMaxOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PerformanceMaxOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxOptInRecommendation;

                            /**
                             * Encodes the specified PerformanceMaxOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.PerformanceMaxOptInRecommendation.verify|verify} messages.
                             * @param message PerformanceMaxOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PerformanceMaxOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.PerformanceMaxOptInRecommendation.verify|verify} messages.
                             * @param message PerformanceMaxOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PerformanceMaxOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PerformanceMaxOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxOptInRecommendation;

                            /**
                             * Decodes a PerformanceMaxOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PerformanceMaxOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxOptInRecommendation;

                            /**
                             * Verifies a PerformanceMaxOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PerformanceMaxOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PerformanceMaxOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxOptInRecommendation;

                            /**
                             * Creates a plain object from a PerformanceMaxOptInRecommendation message. Also converts values to other types if specified.
                             * @param message PerformanceMaxOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.PerformanceMaxOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PerformanceMaxOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PerformanceMaxOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an ImprovePerformanceMaxAdStrengthRecommendation. */
                        interface IImprovePerformanceMaxAdStrengthRecommendation {

                            /** ImprovePerformanceMaxAdStrengthRecommendation asset_group */
                            asset_group?: (string|null);

                            /** ImprovePerformanceMaxAdStrengthRecommendation ad_strength */
                            ad_strength?: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|null);
                        }

                        /** Represents an ImprovePerformanceMaxAdStrengthRecommendation. */
                        class ImprovePerformanceMaxAdStrengthRecommendation implements IImprovePerformanceMaxAdStrengthRecommendation {

                            /**
                             * Constructs a new ImprovePerformanceMaxAdStrengthRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IImprovePerformanceMaxAdStrengthRecommendation);

                            /** ImprovePerformanceMaxAdStrengthRecommendation asset_group. */
                            public asset_group: string;

                            /** ImprovePerformanceMaxAdStrengthRecommendation ad_strength. */
                            public ad_strength: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength);

                            /**
                             * Creates a new ImprovePerformanceMaxAdStrengthRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ImprovePerformanceMaxAdStrengthRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IImprovePerformanceMaxAdStrengthRecommendation): google.ads.googleads.v23.resources.Recommendation.ImprovePerformanceMaxAdStrengthRecommendation;

                            /**
                             * Encodes the specified ImprovePerformanceMaxAdStrengthRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ImprovePerformanceMaxAdStrengthRecommendation.verify|verify} messages.
                             * @param message ImprovePerformanceMaxAdStrengthRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IImprovePerformanceMaxAdStrengthRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ImprovePerformanceMaxAdStrengthRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ImprovePerformanceMaxAdStrengthRecommendation.verify|verify} messages.
                             * @param message ImprovePerformanceMaxAdStrengthRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IImprovePerformanceMaxAdStrengthRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an ImprovePerformanceMaxAdStrengthRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ImprovePerformanceMaxAdStrengthRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ImprovePerformanceMaxAdStrengthRecommendation;

                            /**
                             * Decodes an ImprovePerformanceMaxAdStrengthRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ImprovePerformanceMaxAdStrengthRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ImprovePerformanceMaxAdStrengthRecommendation;

                            /**
                             * Verifies an ImprovePerformanceMaxAdStrengthRecommendation message.
                             * @param message Plain 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 ImprovePerformanceMaxAdStrengthRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ImprovePerformanceMaxAdStrengthRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ImprovePerformanceMaxAdStrengthRecommendation;

                            /**
                             * Creates a plain object from an ImprovePerformanceMaxAdStrengthRecommendation message. Also converts values to other types if specified.
                             * @param message ImprovePerformanceMaxAdStrengthRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ImprovePerformanceMaxAdStrengthRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ImprovePerformanceMaxAdStrengthRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ImprovePerformanceMaxAdStrengthRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation. */
                        interface IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation {

                            /** MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation apply_link */
                            apply_link?: (string|null);
                        }

                        /** Represents a MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation. */
                        class MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation implements IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation {

                            /**
                             * Constructs a new MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation);

                            /** MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation apply_link. */
                            public apply_link: string;

                            /**
                             * Creates a new MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation): google.ads.googleads.v23.resources.Recommendation.MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation;

                            /**
                             * Encodes the specified MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation.verify|verify} messages.
                             * @param message MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation;

                            /**
                             * Decodes a MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation;

                            /**
                             * Verifies a MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation;

                            /**
                             * Creates a plain object from a MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation message. Also converts values to other types if specified.
                             * @param message MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ForecastingSetTargetCpaRecommendation. */
                        interface IForecastingSetTargetCpaRecommendation {

                            /** ForecastingSetTargetCpaRecommendation recommended_target_cpa_micros */
                            recommended_target_cpa_micros?: (number|null);

                            /** ForecastingSetTargetCpaRecommendation campaign_budget */
                            campaign_budget?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudget|null);
                        }

                        /** Represents a ForecastingSetTargetCpaRecommendation. */
                        class ForecastingSetTargetCpaRecommendation implements IForecastingSetTargetCpaRecommendation {

                            /**
                             * Constructs a new ForecastingSetTargetCpaRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation);

                            /** ForecastingSetTargetCpaRecommendation recommended_target_cpa_micros. */
                            public recommended_target_cpa_micros: number;

                            /** ForecastingSetTargetCpaRecommendation campaign_budget. */
                            public campaign_budget?: (google.ads.googleads.v23.resources.Recommendation.ICampaignBudget|null);

                            /**
                             * Creates a new ForecastingSetTargetCpaRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ForecastingSetTargetCpaRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetCpaRecommendation;

                            /**
                             * Encodes the specified ForecastingSetTargetCpaRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetCpaRecommendation.verify|verify} messages.
                             * @param message ForecastingSetTargetCpaRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ForecastingSetTargetCpaRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetCpaRecommendation.verify|verify} messages.
                             * @param message ForecastingSetTargetCpaRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IForecastingSetTargetCpaRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ForecastingSetTargetCpaRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ForecastingSetTargetCpaRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetCpaRecommendation;

                            /**
                             * Decodes a ForecastingSetTargetCpaRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ForecastingSetTargetCpaRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetCpaRecommendation;

                            /**
                             * Verifies a ForecastingSetTargetCpaRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ForecastingSetTargetCpaRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ForecastingSetTargetCpaRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetCpaRecommendation;

                            /**
                             * Creates a plain object from a ForecastingSetTargetCpaRecommendation message. Also converts values to other types if specified.
                             * @param message ForecastingSetTargetCpaRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ForecastingSetTargetCpaRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ForecastingSetTargetCpaRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ForecastingSetTargetCpaRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MaximizeConversionValueOptInRecommendation. */
                        interface IMaximizeConversionValueOptInRecommendation {
                        }

                        /** Represents a MaximizeConversionValueOptInRecommendation. */
                        class MaximizeConversionValueOptInRecommendation implements IMaximizeConversionValueOptInRecommendation {

                            /**
                             * Constructs a new MaximizeConversionValueOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionValueOptInRecommendation);

                            /**
                             * Creates a new MaximizeConversionValueOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MaximizeConversionValueOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionValueOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionValueOptInRecommendation;

                            /**
                             * Encodes the specified MaximizeConversionValueOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MaximizeConversionValueOptInRecommendation.verify|verify} messages.
                             * @param message MaximizeConversionValueOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionValueOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeConversionValueOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.MaximizeConversionValueOptInRecommendation.verify|verify} messages.
                             * @param message MaximizeConversionValueOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IMaximizeConversionValueOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeConversionValueOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MaximizeConversionValueOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionValueOptInRecommendation;

                            /**
                             * Decodes a MaximizeConversionValueOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MaximizeConversionValueOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionValueOptInRecommendation;

                            /**
                             * Verifies a MaximizeConversionValueOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeConversionValueOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MaximizeConversionValueOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.MaximizeConversionValueOptInRecommendation;

                            /**
                             * Creates a plain object from a MaximizeConversionValueOptInRecommendation message. Also converts values to other types if specified.
                             * @param message MaximizeConversionValueOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.MaximizeConversionValueOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeConversionValueOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MaximizeConversionValueOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an ImproveGoogleTagCoverageRecommendation. */
                        interface IImproveGoogleTagCoverageRecommendation {
                        }

                        /** Represents an ImproveGoogleTagCoverageRecommendation. */
                        class ImproveGoogleTagCoverageRecommendation implements IImproveGoogleTagCoverageRecommendation {

                            /**
                             * Constructs a new ImproveGoogleTagCoverageRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IImproveGoogleTagCoverageRecommendation);

                            /**
                             * Creates a new ImproveGoogleTagCoverageRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ImproveGoogleTagCoverageRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IImproveGoogleTagCoverageRecommendation): google.ads.googleads.v23.resources.Recommendation.ImproveGoogleTagCoverageRecommendation;

                            /**
                             * Encodes the specified ImproveGoogleTagCoverageRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ImproveGoogleTagCoverageRecommendation.verify|verify} messages.
                             * @param message ImproveGoogleTagCoverageRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IImproveGoogleTagCoverageRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ImproveGoogleTagCoverageRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ImproveGoogleTagCoverageRecommendation.verify|verify} messages.
                             * @param message ImproveGoogleTagCoverageRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IImproveGoogleTagCoverageRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an ImproveGoogleTagCoverageRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ImproveGoogleTagCoverageRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ImproveGoogleTagCoverageRecommendation;

                            /**
                             * Decodes an ImproveGoogleTagCoverageRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ImproveGoogleTagCoverageRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ImproveGoogleTagCoverageRecommendation;

                            /**
                             * Verifies an ImproveGoogleTagCoverageRecommendation message.
                             * @param message Plain 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 ImproveGoogleTagCoverageRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ImproveGoogleTagCoverageRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ImproveGoogleTagCoverageRecommendation;

                            /**
                             * Creates a plain object from an ImproveGoogleTagCoverageRecommendation message. Also converts values to other types if specified.
                             * @param message ImproveGoogleTagCoverageRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ImproveGoogleTagCoverageRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ImproveGoogleTagCoverageRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ImproveGoogleTagCoverageRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a PerformanceMaxFinalUrlOptInRecommendation. */
                        interface IPerformanceMaxFinalUrlOptInRecommendation {
                        }

                        /** Represents a PerformanceMaxFinalUrlOptInRecommendation. */
                        class PerformanceMaxFinalUrlOptInRecommendation implements IPerformanceMaxFinalUrlOptInRecommendation {

                            /**
                             * Constructs a new PerformanceMaxFinalUrlOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxFinalUrlOptInRecommendation);

                            /**
                             * Creates a new PerformanceMaxFinalUrlOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PerformanceMaxFinalUrlOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxFinalUrlOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxFinalUrlOptInRecommendation;

                            /**
                             * Encodes the specified PerformanceMaxFinalUrlOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.PerformanceMaxFinalUrlOptInRecommendation.verify|verify} messages.
                             * @param message PerformanceMaxFinalUrlOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxFinalUrlOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PerformanceMaxFinalUrlOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.PerformanceMaxFinalUrlOptInRecommendation.verify|verify} messages.
                             * @param message PerformanceMaxFinalUrlOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IPerformanceMaxFinalUrlOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PerformanceMaxFinalUrlOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PerformanceMaxFinalUrlOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxFinalUrlOptInRecommendation;

                            /**
                             * Decodes a PerformanceMaxFinalUrlOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PerformanceMaxFinalUrlOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxFinalUrlOptInRecommendation;

                            /**
                             * Verifies a PerformanceMaxFinalUrlOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PerformanceMaxFinalUrlOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PerformanceMaxFinalUrlOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.PerformanceMaxFinalUrlOptInRecommendation;

                            /**
                             * Creates a plain object from a PerformanceMaxFinalUrlOptInRecommendation message. Also converts values to other types if specified.
                             * @param message PerformanceMaxFinalUrlOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.PerformanceMaxFinalUrlOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PerformanceMaxFinalUrlOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PerformanceMaxFinalUrlOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RefreshCustomerMatchListRecommendation. */
                        interface IRefreshCustomerMatchListRecommendation {

                            /** RefreshCustomerMatchListRecommendation user_list_id */
                            user_list_id?: (number|null);

                            /** RefreshCustomerMatchListRecommendation user_list_name */
                            user_list_name?: (string|null);

                            /** RefreshCustomerMatchListRecommendation days_since_last_refresh */
                            days_since_last_refresh?: (number|null);

                            /** RefreshCustomerMatchListRecommendation top_spending_account */
                            top_spending_account?: (google.ads.googleads.v23.resources.Recommendation.IAccountInfo[]|null);

                            /** RefreshCustomerMatchListRecommendation targeting_accounts_count */
                            targeting_accounts_count?: (number|null);

                            /** RefreshCustomerMatchListRecommendation owner_account */
                            owner_account?: (google.ads.googleads.v23.resources.Recommendation.IAccountInfo|null);
                        }

                        /** Represents a RefreshCustomerMatchListRecommendation. */
                        class RefreshCustomerMatchListRecommendation implements IRefreshCustomerMatchListRecommendation {

                            /**
                             * Constructs a new RefreshCustomerMatchListRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IRefreshCustomerMatchListRecommendation);

                            /** RefreshCustomerMatchListRecommendation user_list_id. */
                            public user_list_id: number;

                            /** RefreshCustomerMatchListRecommendation user_list_name. */
                            public user_list_name: string;

                            /** RefreshCustomerMatchListRecommendation days_since_last_refresh. */
                            public days_since_last_refresh: number;

                            /** RefreshCustomerMatchListRecommendation top_spending_account. */
                            public top_spending_account: google.ads.googleads.v23.resources.Recommendation.IAccountInfo[];

                            /** RefreshCustomerMatchListRecommendation targeting_accounts_count. */
                            public targeting_accounts_count: number;

                            /** RefreshCustomerMatchListRecommendation owner_account. */
                            public owner_account?: (google.ads.googleads.v23.resources.Recommendation.IAccountInfo|null);

                            /**
                             * Creates a new RefreshCustomerMatchListRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RefreshCustomerMatchListRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IRefreshCustomerMatchListRecommendation): google.ads.googleads.v23.resources.Recommendation.RefreshCustomerMatchListRecommendation;

                            /**
                             * Encodes the specified RefreshCustomerMatchListRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RefreshCustomerMatchListRecommendation.verify|verify} messages.
                             * @param message RefreshCustomerMatchListRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IRefreshCustomerMatchListRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RefreshCustomerMatchListRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.RefreshCustomerMatchListRecommendation.verify|verify} messages.
                             * @param message RefreshCustomerMatchListRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IRefreshCustomerMatchListRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RefreshCustomerMatchListRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RefreshCustomerMatchListRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.RefreshCustomerMatchListRecommendation;

                            /**
                             * Decodes a RefreshCustomerMatchListRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RefreshCustomerMatchListRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.RefreshCustomerMatchListRecommendation;

                            /**
                             * Verifies a RefreshCustomerMatchListRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RefreshCustomerMatchListRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RefreshCustomerMatchListRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.RefreshCustomerMatchListRecommendation;

                            /**
                             * Creates a plain object from a RefreshCustomerMatchListRecommendation message. Also converts values to other types if specified.
                             * @param message RefreshCustomerMatchListRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.RefreshCustomerMatchListRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RefreshCustomerMatchListRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RefreshCustomerMatchListRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AccountInfo. */
                        interface IAccountInfo {

                            /** AccountInfo customer_id */
                            customer_id?: (number|null);

                            /** AccountInfo descriptive_name */
                            descriptive_name?: (string|null);
                        }

                        /** Represents an AccountInfo. */
                        class AccountInfo implements IAccountInfo {

                            /**
                             * Constructs a new AccountInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IAccountInfo);

                            /** AccountInfo customer_id. */
                            public customer_id: number;

                            /** AccountInfo descriptive_name. */
                            public descriptive_name: string;

                            /**
                             * Creates a new AccountInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AccountInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IAccountInfo): google.ads.googleads.v23.resources.Recommendation.AccountInfo;

                            /**
                             * Encodes the specified AccountInfo message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.AccountInfo.verify|verify} messages.
                             * @param message AccountInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IAccountInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AccountInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.AccountInfo.verify|verify} messages.
                             * @param message AccountInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IAccountInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AccountInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AccountInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.AccountInfo;

                            /**
                             * Decodes an AccountInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AccountInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.AccountInfo;

                            /**
                             * Verifies an AccountInfo message.
                             * @param message Plain 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 AccountInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AccountInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.AccountInfo;

                            /**
                             * Creates a plain object from an AccountInfo message. Also converts values to other types if specified.
                             * @param message AccountInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.AccountInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AccountInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AccountInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CustomAudienceOptInRecommendation. */
                        interface ICustomAudienceOptInRecommendation {

                            /** CustomAudienceOptInRecommendation keywords */
                            keywords?: (google.ads.googleads.v23.common.IKeywordInfo[]|null);
                        }

                        /** Represents a CustomAudienceOptInRecommendation. */
                        class CustomAudienceOptInRecommendation implements ICustomAudienceOptInRecommendation {

                            /**
                             * Constructs a new CustomAudienceOptInRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ICustomAudienceOptInRecommendation);

                            /** CustomAudienceOptInRecommendation keywords. */
                            public keywords: google.ads.googleads.v23.common.IKeywordInfo[];

                            /**
                             * Creates a new CustomAudienceOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CustomAudienceOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ICustomAudienceOptInRecommendation): google.ads.googleads.v23.resources.Recommendation.CustomAudienceOptInRecommendation;

                            /**
                             * Encodes the specified CustomAudienceOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CustomAudienceOptInRecommendation.verify|verify} messages.
                             * @param message CustomAudienceOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ICustomAudienceOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CustomAudienceOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.CustomAudienceOptInRecommendation.verify|verify} messages.
                             * @param message CustomAudienceOptInRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ICustomAudienceOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CustomAudienceOptInRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CustomAudienceOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.CustomAudienceOptInRecommendation;

                            /**
                             * Decodes a CustomAudienceOptInRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CustomAudienceOptInRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.CustomAudienceOptInRecommendation;

                            /**
                             * Verifies a CustomAudienceOptInRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CustomAudienceOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CustomAudienceOptInRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.CustomAudienceOptInRecommendation;

                            /**
                             * Creates a plain object from a CustomAudienceOptInRecommendation message. Also converts values to other types if specified.
                             * @param message CustomAudienceOptInRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.CustomAudienceOptInRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CustomAudienceOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CustomAudienceOptInRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a LeadFormAssetRecommendation. */
                        interface ILeadFormAssetRecommendation {
                        }

                        /** Represents a LeadFormAssetRecommendation. */
                        class LeadFormAssetRecommendation implements ILeadFormAssetRecommendation {

                            /**
                             * Constructs a new LeadFormAssetRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.ILeadFormAssetRecommendation);

                            /**
                             * Creates a new LeadFormAssetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LeadFormAssetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.ILeadFormAssetRecommendation): google.ads.googleads.v23.resources.Recommendation.LeadFormAssetRecommendation;

                            /**
                             * Encodes the specified LeadFormAssetRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.LeadFormAssetRecommendation.verify|verify} messages.
                             * @param message LeadFormAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.ILeadFormAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LeadFormAssetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.LeadFormAssetRecommendation.verify|verify} messages.
                             * @param message LeadFormAssetRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.ILeadFormAssetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LeadFormAssetRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LeadFormAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.LeadFormAssetRecommendation;

                            /**
                             * Decodes a LeadFormAssetRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LeadFormAssetRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.LeadFormAssetRecommendation;

                            /**
                             * Verifies a LeadFormAssetRecommendation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LeadFormAssetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LeadFormAssetRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.LeadFormAssetRecommendation;

                            /**
                             * Creates a plain object from a LeadFormAssetRecommendation message. Also converts values to other types if specified.
                             * @param message LeadFormAssetRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.LeadFormAssetRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LeadFormAssetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LeadFormAssetRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an ImproveDemandGenAdStrengthRecommendation. */
                        interface IImproveDemandGenAdStrengthRecommendation {

                            /** ImproveDemandGenAdStrengthRecommendation ad */
                            ad?: (string|null);

                            /** ImproveDemandGenAdStrengthRecommendation ad_strength */
                            ad_strength?: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|null);

                            /** ImproveDemandGenAdStrengthRecommendation demand_gen_asset_action_items */
                            demand_gen_asset_action_items?: (string[]|null);
                        }

                        /** Represents an ImproveDemandGenAdStrengthRecommendation. */
                        class ImproveDemandGenAdStrengthRecommendation implements IImproveDemandGenAdStrengthRecommendation {

                            /**
                             * Constructs a new ImproveDemandGenAdStrengthRecommendation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.Recommendation.IImproveDemandGenAdStrengthRecommendation);

                            /** ImproveDemandGenAdStrengthRecommendation ad. */
                            public ad: string;

                            /** ImproveDemandGenAdStrengthRecommendation ad_strength. */
                            public ad_strength: (google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength);

                            /** ImproveDemandGenAdStrengthRecommendation demand_gen_asset_action_items. */
                            public demand_gen_asset_action_items: string[];

                            /**
                             * Creates a new ImproveDemandGenAdStrengthRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ImproveDemandGenAdStrengthRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.Recommendation.IImproveDemandGenAdStrengthRecommendation): google.ads.googleads.v23.resources.Recommendation.ImproveDemandGenAdStrengthRecommendation;

                            /**
                             * Encodes the specified ImproveDemandGenAdStrengthRecommendation message. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ImproveDemandGenAdStrengthRecommendation.verify|verify} messages.
                             * @param message ImproveDemandGenAdStrengthRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.Recommendation.IImproveDemandGenAdStrengthRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ImproveDemandGenAdStrengthRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Recommendation.ImproveDemandGenAdStrengthRecommendation.verify|verify} messages.
                             * @param message ImproveDemandGenAdStrengthRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.Recommendation.IImproveDemandGenAdStrengthRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an ImproveDemandGenAdStrengthRecommendation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ImproveDemandGenAdStrengthRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Recommendation.ImproveDemandGenAdStrengthRecommendation;

                            /**
                             * Decodes an ImproveDemandGenAdStrengthRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ImproveDemandGenAdStrengthRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Recommendation.ImproveDemandGenAdStrengthRecommendation;

                            /**
                             * Verifies an ImproveDemandGenAdStrengthRecommendation message.
                             * @param message Plain 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 ImproveDemandGenAdStrengthRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ImproveDemandGenAdStrengthRecommendation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Recommendation.ImproveDemandGenAdStrengthRecommendation;

                            /**
                             * Creates a plain object from an ImproveDemandGenAdStrengthRecommendation message. Also converts values to other types if specified.
                             * @param message ImproveDemandGenAdStrengthRecommendation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.Recommendation.ImproveDemandGenAdStrengthRecommendation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ImproveDemandGenAdStrengthRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ImproveDemandGenAdStrengthRecommendation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a RecommendationSubscription. */
                    interface IRecommendationSubscription {

                        /** RecommendationSubscription resource_name */
                        resource_name?: (string|null);

                        /** RecommendationSubscription type */
                        type?: (google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|null);

                        /** RecommendationSubscription create_date_time */
                        create_date_time?: (string|null);

                        /** RecommendationSubscription modify_date_time */
                        modify_date_time?: (string|null);

                        /** RecommendationSubscription status */
                        status?: (google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum.RecommendationSubscriptionStatus|keyof typeof google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum.RecommendationSubscriptionStatus|null);
                    }

                    /** Represents a RecommendationSubscription. */
                    class RecommendationSubscription implements IRecommendationSubscription {

                        /**
                         * Constructs a new RecommendationSubscription.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IRecommendationSubscription);

                        /** RecommendationSubscription resource_name. */
                        public resource_name: string;

                        /** RecommendationSubscription type. */
                        public type: (google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType);

                        /** RecommendationSubscription create_date_time. */
                        public create_date_time?: (string|null);

                        /** RecommendationSubscription modify_date_time. */
                        public modify_date_time?: (string|null);

                        /** RecommendationSubscription status. */
                        public status?: (google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum.RecommendationSubscriptionStatus|keyof typeof google.ads.googleads.v23.enums.RecommendationSubscriptionStatusEnum.RecommendationSubscriptionStatus|null);

                        /**
                         * Creates a new RecommendationSubscription instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecommendationSubscription instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IRecommendationSubscription): google.ads.googleads.v23.resources.RecommendationSubscription;

                        /**
                         * Encodes the specified RecommendationSubscription message. Does not implicitly {@link google.ads.googleads.v23.resources.RecommendationSubscription.verify|verify} messages.
                         * @param message RecommendationSubscription message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IRecommendationSubscription, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationSubscription message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.RecommendationSubscription.verify|verify} messages.
                         * @param message RecommendationSubscription message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IRecommendationSubscription, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationSubscription message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecommendationSubscription
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.RecommendationSubscription;

                        /**
                         * Decodes a RecommendationSubscription message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecommendationSubscription
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.RecommendationSubscription;

                        /**
                         * Verifies a RecommendationSubscription message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationSubscription message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecommendationSubscription
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.RecommendationSubscription;

                        /**
                         * Creates a plain object from a RecommendationSubscription message. Also converts values to other types if specified.
                         * @param message RecommendationSubscription
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.RecommendationSubscription, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationSubscription to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecommendationSubscription
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemarketingAction. */
                    interface IRemarketingAction {

                        /** RemarketingAction resource_name */
                        resource_name?: (string|null);

                        /** RemarketingAction id */
                        id?: (number|null);

                        /** RemarketingAction name */
                        name?: (string|null);

                        /** RemarketingAction tag_snippets */
                        tag_snippets?: (google.ads.googleads.v23.common.ITagSnippet[]|null);
                    }

                    /** Represents a RemarketingAction. */
                    class RemarketingAction implements IRemarketingAction {

                        /**
                         * Constructs a new RemarketingAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IRemarketingAction);

                        /** RemarketingAction resource_name. */
                        public resource_name: string;

                        /** RemarketingAction id. */
                        public id?: (number|null);

                        /** RemarketingAction name. */
                        public name?: (string|null);

                        /** RemarketingAction tag_snippets. */
                        public tag_snippets: google.ads.googleads.v23.common.ITagSnippet[];

                        /**
                         * Creates a new RemarketingAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemarketingAction instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IRemarketingAction): google.ads.googleads.v23.resources.RemarketingAction;

                        /**
                         * Encodes the specified RemarketingAction message. Does not implicitly {@link google.ads.googleads.v23.resources.RemarketingAction.verify|verify} messages.
                         * @param message RemarketingAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IRemarketingAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemarketingAction message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.RemarketingAction.verify|verify} messages.
                         * @param message RemarketingAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IRemarketingAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemarketingAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemarketingAction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.RemarketingAction;

                        /**
                         * Decodes a RemarketingAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemarketingAction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.RemarketingAction;

                        /**
                         * Verifies a RemarketingAction message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemarketingAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemarketingAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.RemarketingAction;

                        /**
                         * Creates a plain object from a RemarketingAction message. Also converts values to other types if specified.
                         * @param message RemarketingAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.RemarketingAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemarketingAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemarketingAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchTermView. */
                    interface ISearchTermView {

                        /** SearchTermView resource_name */
                        resource_name?: (string|null);

                        /** SearchTermView search_term */
                        search_term?: (string|null);

                        /** SearchTermView ad_group */
                        ad_group?: (string|null);

                        /** SearchTermView status */
                        status?: (google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|keyof typeof google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|null);
                    }

                    /** Represents a SearchTermView. */
                    class SearchTermView implements ISearchTermView {

                        /**
                         * Constructs a new SearchTermView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ISearchTermView);

                        /** SearchTermView resource_name. */
                        public resource_name: string;

                        /** SearchTermView search_term. */
                        public search_term?: (string|null);

                        /** SearchTermView ad_group. */
                        public ad_group?: (string|null);

                        /** SearchTermView status. */
                        public status: (google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|keyof typeof google.ads.googleads.v23.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus);

                        /**
                         * Creates a new SearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ISearchTermView): google.ads.googleads.v23.resources.SearchTermView;

                        /**
                         * Encodes the specified SearchTermView message. Does not implicitly {@link google.ads.googleads.v23.resources.SearchTermView.verify|verify} messages.
                         * @param message SearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ISearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.SearchTermView.verify|verify} messages.
                         * @param message SearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ISearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.SearchTermView;

                        /**
                         * Decodes a SearchTermView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.SearchTermView;

                        /**
                         * Verifies a SearchTermView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchTermView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.SearchTermView;

                        /**
                         * Creates a plain object from a SearchTermView message. Also converts values to other types if specified.
                         * @param message SearchTermView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.SearchTermView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchTermView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SharedCriterion. */
                    interface ISharedCriterion {

                        /** SharedCriterion resource_name */
                        resource_name?: (string|null);

                        /** SharedCriterion shared_set */
                        shared_set?: (string|null);

                        /** SharedCriterion criterion_id */
                        criterion_id?: (number|null);

                        /** SharedCriterion type */
                        type?: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|null);

                        /** SharedCriterion negative */
                        negative?: (boolean|null);

                        /** SharedCriterion keyword */
                        keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** SharedCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** SharedCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** SharedCriterion placement */
                        placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** SharedCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** SharedCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** SharedCriterion brand */
                        brand?: (google.ads.googleads.v23.common.IBrandInfo|null);

                        /** SharedCriterion webpage */
                        webpage?: (google.ads.googleads.v23.common.IWebpageInfo|null);

                        /** SharedCriterion vertical_ads_item_group_rule */
                        vertical_ads_item_group_rule?: (google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleInfo|null);
                    }

                    /** Represents a SharedCriterion. */
                    class SharedCriterion implements ISharedCriterion {

                        /**
                         * Constructs a new SharedCriterion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ISharedCriterion);

                        /** SharedCriterion resource_name. */
                        public resource_name: string;

                        /** SharedCriterion shared_set. */
                        public shared_set?: (string|null);

                        /** SharedCriterion criterion_id. */
                        public criterion_id?: (number|null);

                        /** SharedCriterion type. */
                        public type: (google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v23.enums.CriterionTypeEnum.CriterionType);

                        /** SharedCriterion negative. */
                        public negative?: (boolean|null);

                        /** SharedCriterion keyword. */
                        public keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** SharedCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v23.common.IYouTubeVideoInfo|null);

                        /** SharedCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** SharedCriterion placement. */
                        public placement?: (google.ads.googleads.v23.common.IPlacementInfo|null);

                        /** SharedCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v23.common.IMobileAppCategoryInfo|null);

                        /** SharedCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v23.common.IMobileApplicationInfo|null);

                        /** SharedCriterion brand. */
                        public brand?: (google.ads.googleads.v23.common.IBrandInfo|null);

                        /** SharedCriterion webpage. */
                        public webpage?: (google.ads.googleads.v23.common.IWebpageInfo|null);

                        /** SharedCriterion vertical_ads_item_group_rule. */
                        public vertical_ads_item_group_rule?: (google.ads.googleads.v23.common.IVerticalAdsItemGroupRuleInfo|null);

                        /** SharedCriterion criterion. */
                        public criterion?: ("keyword"|"youtube_video"|"youtube_channel"|"placement"|"mobile_app_category"|"mobile_application"|"brand"|"webpage"|"vertical_ads_item_group_rule");

                        /**
                         * Creates a new SharedCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ISharedCriterion): google.ads.googleads.v23.resources.SharedCriterion;

                        /**
                         * Encodes the specified SharedCriterion message. Does not implicitly {@link google.ads.googleads.v23.resources.SharedCriterion.verify|verify} messages.
                         * @param message SharedCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ISharedCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.SharedCriterion.verify|verify} messages.
                         * @param message SharedCriterion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ISharedCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedCriterion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.SharedCriterion;

                        /**
                         * Decodes a SharedCriterion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedCriterion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.SharedCriterion;

                        /**
                         * Verifies a SharedCriterion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedCriterion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.SharedCriterion;

                        /**
                         * Creates a plain object from a SharedCriterion message. Also converts values to other types if specified.
                         * @param message SharedCriterion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.SharedCriterion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedCriterion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SharedSet. */
                    interface ISharedSet {

                        /** SharedSet resource_name */
                        resource_name?: (string|null);

                        /** SharedSet id */
                        id?: (number|null);

                        /** SharedSet type */
                        type?: (google.ads.googleads.v23.enums.SharedSetTypeEnum.SharedSetType|keyof typeof google.ads.googleads.v23.enums.SharedSetTypeEnum.SharedSetType|null);

                        /** SharedSet name */
                        name?: (string|null);

                        /** SharedSet status */
                        status?: (google.ads.googleads.v23.enums.SharedSetStatusEnum.SharedSetStatus|keyof typeof google.ads.googleads.v23.enums.SharedSetStatusEnum.SharedSetStatus|null);

                        /** SharedSet member_count */
                        member_count?: (number|null);

                        /** SharedSet reference_count */
                        reference_count?: (number|null);

                        /** SharedSet vertical_ads_item_vertical_type */
                        vertical_ads_item_vertical_type?: (google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|keyof typeof google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|null);
                    }

                    /** Represents a SharedSet. */
                    class SharedSet implements ISharedSet {

                        /**
                         * Constructs a new SharedSet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ISharedSet);

                        /** SharedSet resource_name. */
                        public resource_name: string;

                        /** SharedSet id. */
                        public id?: (number|null);

                        /** SharedSet type. */
                        public type: (google.ads.googleads.v23.enums.SharedSetTypeEnum.SharedSetType|keyof typeof google.ads.googleads.v23.enums.SharedSetTypeEnum.SharedSetType);

                        /** SharedSet name. */
                        public name?: (string|null);

                        /** SharedSet status. */
                        public status: (google.ads.googleads.v23.enums.SharedSetStatusEnum.SharedSetStatus|keyof typeof google.ads.googleads.v23.enums.SharedSetStatusEnum.SharedSetStatus);

                        /** SharedSet member_count. */
                        public member_count?: (number|null);

                        /** SharedSet reference_count. */
                        public reference_count?: (number|null);

                        /** SharedSet vertical_ads_item_vertical_type. */
                        public vertical_ads_item_vertical_type?: (google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|keyof typeof google.ads.googleads.v23.enums.VerticalAdsItemVerticalTypeEnum.VerticalAdsItemVerticalType|null);

                        /**
                         * Creates a new SharedSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedSet instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ISharedSet): google.ads.googleads.v23.resources.SharedSet;

                        /**
                         * Encodes the specified SharedSet message. Does not implicitly {@link google.ads.googleads.v23.resources.SharedSet.verify|verify} messages.
                         * @param message SharedSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ISharedSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSet message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.SharedSet.verify|verify} messages.
                         * @param message SharedSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ISharedSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.SharedSet;

                        /**
                         * Decodes a SharedSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.SharedSet;

                        /**
                         * Verifies a SharedSet message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedSet
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.SharedSet;

                        /**
                         * Creates a plain object from a SharedSet message. Also converts values to other types if specified.
                         * @param message SharedSet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.SharedSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedSet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ShoppingPerformanceView. */
                    interface IShoppingPerformanceView {

                        /** ShoppingPerformanceView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a ShoppingPerformanceView. */
                    class ShoppingPerformanceView implements IShoppingPerformanceView {

                        /**
                         * Constructs a new ShoppingPerformanceView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IShoppingPerformanceView);

                        /** ShoppingPerformanceView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ShoppingPerformanceView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingPerformanceView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IShoppingPerformanceView): google.ads.googleads.v23.resources.ShoppingPerformanceView;

                        /**
                         * Encodes the specified ShoppingPerformanceView message. Does not implicitly {@link google.ads.googleads.v23.resources.ShoppingPerformanceView.verify|verify} messages.
                         * @param message ShoppingPerformanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IShoppingPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingPerformanceView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ShoppingPerformanceView.verify|verify} messages.
                         * @param message ShoppingPerformanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IShoppingPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingPerformanceView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShoppingPerformanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ShoppingPerformanceView;

                        /**
                         * Decodes a ShoppingPerformanceView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShoppingPerformanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ShoppingPerformanceView;

                        /**
                         * Verifies a ShoppingPerformanceView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShoppingPerformanceView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShoppingPerformanceView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ShoppingPerformanceView;

                        /**
                         * Creates a plain object from a ShoppingPerformanceView message. Also converts values to other types if specified.
                         * @param message ShoppingPerformanceView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ShoppingPerformanceView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShoppingPerformanceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShoppingPerformanceView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ShoppingProduct. */
                    interface IShoppingProduct {

                        /** ShoppingProduct resource_name */
                        resource_name?: (string|null);

                        /** ShoppingProduct merchant_center_id */
                        merchant_center_id?: (number|null);

                        /** ShoppingProduct channel */
                        channel?: (google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|null);

                        /** ShoppingProduct language_code */
                        language_code?: (string|null);

                        /** ShoppingProduct feed_label */
                        feed_label?: (string|null);

                        /** ShoppingProduct item_id */
                        item_id?: (string|null);

                        /** ShoppingProduct multi_client_account_id */
                        multi_client_account_id?: (number|null);

                        /** ShoppingProduct title */
                        title?: (string|null);

                        /** ShoppingProduct brand */
                        brand?: (string|null);

                        /** ShoppingProduct product_image_uri */
                        product_image_uri?: (string|null);

                        /** ShoppingProduct price_micros */
                        price_micros?: (number|null);

                        /** ShoppingProduct currency_code */
                        currency_code?: (string|null);

                        /** ShoppingProduct channel_exclusivity */
                        channel_exclusivity?: (google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|null);

                        /** ShoppingProduct condition */
                        condition?: (google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|null);

                        /** ShoppingProduct availability */
                        availability?: (google.ads.googleads.v23.enums.ProductAvailabilityEnum.ProductAvailability|keyof typeof google.ads.googleads.v23.enums.ProductAvailabilityEnum.ProductAvailability|null);

                        /** ShoppingProduct target_countries */
                        target_countries?: (string[]|null);

                        /** ShoppingProduct custom_attribute0 */
                        custom_attribute0?: (string|null);

                        /** ShoppingProduct custom_attribute1 */
                        custom_attribute1?: (string|null);

                        /** ShoppingProduct custom_attribute2 */
                        custom_attribute2?: (string|null);

                        /** ShoppingProduct custom_attribute3 */
                        custom_attribute3?: (string|null);

                        /** ShoppingProduct custom_attribute4 */
                        custom_attribute4?: (string|null);

                        /** ShoppingProduct category_level1 */
                        category_level1?: (string|null);

                        /** ShoppingProduct category_level2 */
                        category_level2?: (string|null);

                        /** ShoppingProduct category_level3 */
                        category_level3?: (string|null);

                        /** ShoppingProduct category_level4 */
                        category_level4?: (string|null);

                        /** ShoppingProduct category_level5 */
                        category_level5?: (string|null);

                        /** ShoppingProduct product_type_level1 */
                        product_type_level1?: (string|null);

                        /** ShoppingProduct product_type_level2 */
                        product_type_level2?: (string|null);

                        /** ShoppingProduct product_type_level3 */
                        product_type_level3?: (string|null);

                        /** ShoppingProduct product_type_level4 */
                        product_type_level4?: (string|null);

                        /** ShoppingProduct product_type_level5 */
                        product_type_level5?: (string|null);

                        /** ShoppingProduct effective_max_cpc_micros */
                        effective_max_cpc_micros?: (number|null);

                        /** ShoppingProduct status */
                        status?: (google.ads.googleads.v23.enums.ProductStatusEnum.ProductStatus|keyof typeof google.ads.googleads.v23.enums.ProductStatusEnum.ProductStatus|null);

                        /** ShoppingProduct issues */
                        issues?: (google.ads.googleads.v23.resources.ShoppingProduct.IProductIssue[]|null);

                        /** ShoppingProduct campaign */
                        campaign?: (string|null);

                        /** ShoppingProduct ad_group */
                        ad_group?: (string|null);
                    }

                    /** Represents a ShoppingProduct. */
                    class ShoppingProduct implements IShoppingProduct {

                        /**
                         * Constructs a new ShoppingProduct.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IShoppingProduct);

                        /** ShoppingProduct resource_name. */
                        public resource_name: string;

                        /** ShoppingProduct merchant_center_id. */
                        public merchant_center_id: number;

                        /** ShoppingProduct channel. */
                        public channel: (google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v23.enums.ProductChannelEnum.ProductChannel);

                        /** ShoppingProduct language_code. */
                        public language_code: string;

                        /** ShoppingProduct feed_label. */
                        public feed_label: string;

                        /** ShoppingProduct item_id. */
                        public item_id: string;

                        /** ShoppingProduct multi_client_account_id. */
                        public multi_client_account_id?: (number|null);

                        /** ShoppingProduct title. */
                        public title?: (string|null);

                        /** ShoppingProduct brand. */
                        public brand?: (string|null);

                        /** ShoppingProduct product_image_uri. */
                        public product_image_uri?: (string|null);

                        /** ShoppingProduct price_micros. */
                        public price_micros?: (number|null);

                        /** ShoppingProduct currency_code. */
                        public currency_code?: (string|null);

                        /** ShoppingProduct channel_exclusivity. */
                        public channel_exclusivity?: (google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v23.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|null);

                        /** ShoppingProduct condition. */
                        public condition?: (google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v23.enums.ProductConditionEnum.ProductCondition|null);

                        /** ShoppingProduct availability. */
                        public availability?: (google.ads.googleads.v23.enums.ProductAvailabilityEnum.ProductAvailability|keyof typeof google.ads.googleads.v23.enums.ProductAvailabilityEnum.ProductAvailability|null);

                        /** ShoppingProduct target_countries. */
                        public target_countries: string[];

                        /** ShoppingProduct custom_attribute0. */
                        public custom_attribute0?: (string|null);

                        /** ShoppingProduct custom_attribute1. */
                        public custom_attribute1?: (string|null);

                        /** ShoppingProduct custom_attribute2. */
                        public custom_attribute2?: (string|null);

                        /** ShoppingProduct custom_attribute3. */
                        public custom_attribute3?: (string|null);

                        /** ShoppingProduct custom_attribute4. */
                        public custom_attribute4?: (string|null);

                        /** ShoppingProduct category_level1. */
                        public category_level1?: (string|null);

                        /** ShoppingProduct category_level2. */
                        public category_level2?: (string|null);

                        /** ShoppingProduct category_level3. */
                        public category_level3?: (string|null);

                        /** ShoppingProduct category_level4. */
                        public category_level4?: (string|null);

                        /** ShoppingProduct category_level5. */
                        public category_level5?: (string|null);

                        /** ShoppingProduct product_type_level1. */
                        public product_type_level1?: (string|null);

                        /** ShoppingProduct product_type_level2. */
                        public product_type_level2?: (string|null);

                        /** ShoppingProduct product_type_level3. */
                        public product_type_level3?: (string|null);

                        /** ShoppingProduct product_type_level4. */
                        public product_type_level4?: (string|null);

                        /** ShoppingProduct product_type_level5. */
                        public product_type_level5?: (string|null);

                        /** ShoppingProduct effective_max_cpc_micros. */
                        public effective_max_cpc_micros?: (number|null);

                        /** ShoppingProduct status. */
                        public status: (google.ads.googleads.v23.enums.ProductStatusEnum.ProductStatus|keyof typeof google.ads.googleads.v23.enums.ProductStatusEnum.ProductStatus);

                        /** ShoppingProduct issues. */
                        public issues: google.ads.googleads.v23.resources.ShoppingProduct.IProductIssue[];

                        /** ShoppingProduct campaign. */
                        public campaign?: (string|null);

                        /** ShoppingProduct ad_group. */
                        public ad_group?: (string|null);

                        /**
                         * Creates a new ShoppingProduct instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShoppingProduct instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IShoppingProduct): google.ads.googleads.v23.resources.ShoppingProduct;

                        /**
                         * Encodes the specified ShoppingProduct message. Does not implicitly {@link google.ads.googleads.v23.resources.ShoppingProduct.verify|verify} messages.
                         * @param message ShoppingProduct message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IShoppingProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingProduct message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ShoppingProduct.verify|verify} messages.
                         * @param message ShoppingProduct message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IShoppingProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingProduct message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShoppingProduct
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ShoppingProduct;

                        /**
                         * Decodes a ShoppingProduct message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShoppingProduct
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ShoppingProduct;

                        /**
                         * Verifies a ShoppingProduct message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShoppingProduct message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShoppingProduct
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ShoppingProduct;

                        /**
                         * Creates a plain object from a ShoppingProduct message. Also converts values to other types if specified.
                         * @param message ShoppingProduct
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ShoppingProduct, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShoppingProduct to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShoppingProduct
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ShoppingProduct {

                        /** Properties of a ProductIssue. */
                        interface IProductIssue {

                            /** ProductIssue error_code */
                            error_code?: (string|null);

                            /** ProductIssue ads_severity */
                            ads_severity?: (google.ads.googleads.v23.enums.ProductIssueSeverityEnum.ProductIssueSeverity|keyof typeof google.ads.googleads.v23.enums.ProductIssueSeverityEnum.ProductIssueSeverity|null);

                            /** ProductIssue attribute_name */
                            attribute_name?: (string|null);

                            /** ProductIssue description */
                            description?: (string|null);

                            /** ProductIssue detail */
                            detail?: (string|null);

                            /** ProductIssue documentation */
                            documentation?: (string|null);

                            /** ProductIssue affected_regions */
                            affected_regions?: (string[]|null);
                        }

                        /** Represents a ProductIssue. */
                        class ProductIssue implements IProductIssue {

                            /**
                             * Constructs a new ProductIssue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.ShoppingProduct.IProductIssue);

                            /** ProductIssue error_code. */
                            public error_code: string;

                            /** ProductIssue ads_severity. */
                            public ads_severity: (google.ads.googleads.v23.enums.ProductIssueSeverityEnum.ProductIssueSeverity|keyof typeof google.ads.googleads.v23.enums.ProductIssueSeverityEnum.ProductIssueSeverity);

                            /** ProductIssue attribute_name. */
                            public attribute_name?: (string|null);

                            /** ProductIssue description. */
                            public description: string;

                            /** ProductIssue detail. */
                            public detail: string;

                            /** ProductIssue documentation. */
                            public documentation: string;

                            /** ProductIssue affected_regions. */
                            public affected_regions: string[];

                            /**
                             * Creates a new ProductIssue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductIssue instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.ShoppingProduct.IProductIssue): google.ads.googleads.v23.resources.ShoppingProduct.ProductIssue;

                            /**
                             * Encodes the specified ProductIssue message. Does not implicitly {@link google.ads.googleads.v23.resources.ShoppingProduct.ProductIssue.verify|verify} messages.
                             * @param message ProductIssue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.ShoppingProduct.IProductIssue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductIssue message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ShoppingProduct.ProductIssue.verify|verify} messages.
                             * @param message ProductIssue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.ShoppingProduct.IProductIssue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductIssue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductIssue
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ShoppingProduct.ProductIssue;

                            /**
                             * Decodes a ProductIssue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductIssue
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ShoppingProduct.ProductIssue;

                            /**
                             * Verifies a ProductIssue message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductIssue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductIssue
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ShoppingProduct.ProductIssue;

                            /**
                             * Creates a plain object from a ProductIssue message. Also converts values to other types if specified.
                             * @param message ProductIssue
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.ShoppingProduct.ProductIssue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductIssue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductIssue
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a SmartCampaignSearchTermView. */
                    interface ISmartCampaignSearchTermView {

                        /** SmartCampaignSearchTermView resource_name */
                        resource_name?: (string|null);

                        /** SmartCampaignSearchTermView search_term */
                        search_term?: (string|null);

                        /** SmartCampaignSearchTermView campaign */
                        campaign?: (string|null);
                    }

                    /** Represents a SmartCampaignSearchTermView. */
                    class SmartCampaignSearchTermView implements ISmartCampaignSearchTermView {

                        /**
                         * Constructs a new SmartCampaignSearchTermView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ISmartCampaignSearchTermView);

                        /** SmartCampaignSearchTermView resource_name. */
                        public resource_name: string;

                        /** SmartCampaignSearchTermView search_term. */
                        public search_term: string;

                        /** SmartCampaignSearchTermView campaign. */
                        public campaign: string;

                        /**
                         * Creates a new SmartCampaignSearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignSearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ISmartCampaignSearchTermView): google.ads.googleads.v23.resources.SmartCampaignSearchTermView;

                        /**
                         * Encodes the specified SmartCampaignSearchTermView message. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSearchTermView.verify|verify} messages.
                         * @param message SmartCampaignSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ISmartCampaignSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSearchTermView.verify|verify} messages.
                         * @param message SmartCampaignSearchTermView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ISmartCampaignSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSearchTermView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.SmartCampaignSearchTermView;

                        /**
                         * Decodes a SmartCampaignSearchTermView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignSearchTermView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.SmartCampaignSearchTermView;

                        /**
                         * Verifies a SmartCampaignSearchTermView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignSearchTermView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.SmartCampaignSearchTermView;

                        /**
                         * Creates a plain object from a SmartCampaignSearchTermView message. Also converts values to other types if specified.
                         * @param message SmartCampaignSearchTermView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.SmartCampaignSearchTermView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignSearchTermView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignSetting. */
                    interface ISmartCampaignSetting {

                        /** SmartCampaignSetting resource_name */
                        resource_name?: (string|null);

                        /** SmartCampaignSetting campaign */
                        campaign?: (string|null);

                        /** SmartCampaignSetting phone_number */
                        phone_number?: (google.ads.googleads.v23.resources.SmartCampaignSetting.IPhoneNumber|null);

                        /** SmartCampaignSetting advertising_language_code */
                        advertising_language_code?: (string|null);

                        /** SmartCampaignSetting final_url */
                        final_url?: (string|null);

                        /** SmartCampaignSetting ad_optimized_business_profile_setting */
                        ad_optimized_business_profile_setting?: (google.ads.googleads.v23.resources.SmartCampaignSetting.IAdOptimizedBusinessProfileSetting|null);

                        /** SmartCampaignSetting business_name */
                        business_name?: (string|null);

                        /** SmartCampaignSetting business_profile_location */
                        business_profile_location?: (string|null);
                    }

                    /** Represents a SmartCampaignSetting. */
                    class SmartCampaignSetting implements ISmartCampaignSetting {

                        /**
                         * Constructs a new SmartCampaignSetting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ISmartCampaignSetting);

                        /** SmartCampaignSetting resource_name. */
                        public resource_name: string;

                        /** SmartCampaignSetting campaign. */
                        public campaign: string;

                        /** SmartCampaignSetting phone_number. */
                        public phone_number?: (google.ads.googleads.v23.resources.SmartCampaignSetting.IPhoneNumber|null);

                        /** SmartCampaignSetting advertising_language_code. */
                        public advertising_language_code: string;

                        /** SmartCampaignSetting final_url. */
                        public final_url?: (string|null);

                        /** SmartCampaignSetting ad_optimized_business_profile_setting. */
                        public ad_optimized_business_profile_setting?: (google.ads.googleads.v23.resources.SmartCampaignSetting.IAdOptimizedBusinessProfileSetting|null);

                        /** SmartCampaignSetting business_name. */
                        public business_name?: (string|null);

                        /** SmartCampaignSetting business_profile_location. */
                        public business_profile_location?: (string|null);

                        /** SmartCampaignSetting landing_page. */
                        public landing_page?: ("final_url"|"ad_optimized_business_profile_setting");

                        /** SmartCampaignSetting business_setting. */
                        public business_setting?: ("business_name"|"business_profile_location");

                        /**
                         * Creates a new SmartCampaignSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ISmartCampaignSetting): google.ads.googleads.v23.resources.SmartCampaignSetting;

                        /**
                         * Encodes the specified SmartCampaignSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSetting.verify|verify} messages.
                         * @param message SmartCampaignSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ISmartCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSetting.verify|verify} messages.
                         * @param message SmartCampaignSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ISmartCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSetting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.SmartCampaignSetting;

                        /**
                         * Decodes a SmartCampaignSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.SmartCampaignSetting;

                        /**
                         * Verifies a SmartCampaignSetting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSetting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignSetting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.SmartCampaignSetting;

                        /**
                         * Creates a plain object from a SmartCampaignSetting message. Also converts values to other types if specified.
                         * @param message SmartCampaignSetting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.SmartCampaignSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignSetting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SmartCampaignSetting {

                        /** Properties of a PhoneNumber. */
                        interface IPhoneNumber {

                            /** PhoneNumber phone_number */
                            phone_number?: (string|null);

                            /** PhoneNumber country_code */
                            country_code?: (string|null);
                        }

                        /** Represents a PhoneNumber. */
                        class PhoneNumber implements IPhoneNumber {

                            /**
                             * Constructs a new PhoneNumber.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.SmartCampaignSetting.IPhoneNumber);

                            /** PhoneNumber phone_number. */
                            public phone_number?: (string|null);

                            /** PhoneNumber country_code. */
                            public country_code?: (string|null);

                            /**
                             * Creates a new PhoneNumber instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PhoneNumber instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.SmartCampaignSetting.IPhoneNumber): google.ads.googleads.v23.resources.SmartCampaignSetting.PhoneNumber;

                            /**
                             * Encodes the specified PhoneNumber message. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSetting.PhoneNumber.verify|verify} messages.
                             * @param message PhoneNumber message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.SmartCampaignSetting.IPhoneNumber, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PhoneNumber message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSetting.PhoneNumber.verify|verify} messages.
                             * @param message PhoneNumber message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.SmartCampaignSetting.IPhoneNumber, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PhoneNumber message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PhoneNumber
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.SmartCampaignSetting.PhoneNumber;

                            /**
                             * Decodes a PhoneNumber message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PhoneNumber
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.SmartCampaignSetting.PhoneNumber;

                            /**
                             * Verifies a PhoneNumber message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PhoneNumber message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PhoneNumber
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.SmartCampaignSetting.PhoneNumber;

                            /**
                             * Creates a plain object from a PhoneNumber message. Also converts values to other types if specified.
                             * @param message PhoneNumber
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.SmartCampaignSetting.PhoneNumber, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PhoneNumber to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PhoneNumber
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AdOptimizedBusinessProfileSetting. */
                        interface IAdOptimizedBusinessProfileSetting {

                            /** AdOptimizedBusinessProfileSetting include_lead_form */
                            include_lead_form?: (boolean|null);
                        }

                        /** Represents an AdOptimizedBusinessProfileSetting. */
                        class AdOptimizedBusinessProfileSetting implements IAdOptimizedBusinessProfileSetting {

                            /**
                             * Constructs a new AdOptimizedBusinessProfileSetting.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.resources.SmartCampaignSetting.IAdOptimizedBusinessProfileSetting);

                            /** AdOptimizedBusinessProfileSetting include_lead_form. */
                            public include_lead_form?: (boolean|null);

                            /**
                             * Creates a new AdOptimizedBusinessProfileSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdOptimizedBusinessProfileSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v23.resources.SmartCampaignSetting.IAdOptimizedBusinessProfileSetting): google.ads.googleads.v23.resources.SmartCampaignSetting.AdOptimizedBusinessProfileSetting;

                            /**
                             * Encodes the specified AdOptimizedBusinessProfileSetting message. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSetting.AdOptimizedBusinessProfileSetting.verify|verify} messages.
                             * @param message AdOptimizedBusinessProfileSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.resources.SmartCampaignSetting.IAdOptimizedBusinessProfileSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdOptimizedBusinessProfileSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.SmartCampaignSetting.AdOptimizedBusinessProfileSetting.verify|verify} messages.
                             * @param message AdOptimizedBusinessProfileSetting message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.resources.SmartCampaignSetting.IAdOptimizedBusinessProfileSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdOptimizedBusinessProfileSetting message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdOptimizedBusinessProfileSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.SmartCampaignSetting.AdOptimizedBusinessProfileSetting;

                            /**
                             * Decodes an AdOptimizedBusinessProfileSetting message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdOptimizedBusinessProfileSetting
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.SmartCampaignSetting.AdOptimizedBusinessProfileSetting;

                            /**
                             * Verifies an AdOptimizedBusinessProfileSetting message.
                             * @param message Plain 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 AdOptimizedBusinessProfileSetting message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdOptimizedBusinessProfileSetting
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.SmartCampaignSetting.AdOptimizedBusinessProfileSetting;

                            /**
                             * Creates a plain object from an AdOptimizedBusinessProfileSetting message. Also converts values to other types if specified.
                             * @param message AdOptimizedBusinessProfileSetting
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.resources.SmartCampaignSetting.AdOptimizedBusinessProfileSetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdOptimizedBusinessProfileSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdOptimizedBusinessProfileSetting
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a TargetingExpansionView. */
                    interface ITargetingExpansionView {

                        /** TargetingExpansionView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a TargetingExpansionView. */
                    class TargetingExpansionView implements ITargetingExpansionView {

                        /**
                         * Constructs a new TargetingExpansionView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ITargetingExpansionView);

                        /** TargetingExpansionView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new TargetingExpansionView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetingExpansionView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ITargetingExpansionView): google.ads.googleads.v23.resources.TargetingExpansionView;

                        /**
                         * Encodes the specified TargetingExpansionView message. Does not implicitly {@link google.ads.googleads.v23.resources.TargetingExpansionView.verify|verify} messages.
                         * @param message TargetingExpansionView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ITargetingExpansionView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetingExpansionView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.TargetingExpansionView.verify|verify} messages.
                         * @param message TargetingExpansionView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ITargetingExpansionView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetingExpansionView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetingExpansionView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.TargetingExpansionView;

                        /**
                         * Decodes a TargetingExpansionView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetingExpansionView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.TargetingExpansionView;

                        /**
                         * Verifies a TargetingExpansionView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetingExpansionView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetingExpansionView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.TargetingExpansionView;

                        /**
                         * Creates a plain object from a TargetingExpansionView message. Also converts values to other types if specified.
                         * @param message TargetingExpansionView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.TargetingExpansionView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetingExpansionView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetingExpansionView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ThirdPartyAppAnalyticsLink. */
                    interface IThirdPartyAppAnalyticsLink {

                        /** ThirdPartyAppAnalyticsLink resource_name */
                        resource_name?: (string|null);

                        /** ThirdPartyAppAnalyticsLink shareable_link_id */
                        shareable_link_id?: (string|null);
                    }

                    /** Represents a ThirdPartyAppAnalyticsLink. */
                    class ThirdPartyAppAnalyticsLink implements IThirdPartyAppAnalyticsLink {

                        /**
                         * Constructs a new ThirdPartyAppAnalyticsLink.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLink);

                        /** ThirdPartyAppAnalyticsLink resource_name. */
                        public resource_name: string;

                        /** ThirdPartyAppAnalyticsLink shareable_link_id. */
                        public shareable_link_id?: (string|null);

                        /**
                         * Creates a new ThirdPartyAppAnalyticsLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyAppAnalyticsLink instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLink): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLink;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLink message. Does not implicitly {@link google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLink.verify|verify} messages.
                         * @param message ThirdPartyAppAnalyticsLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLink message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLink.verify|verify} messages.
                         * @param message ThirdPartyAppAnalyticsLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLink message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ThirdPartyAppAnalyticsLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLink;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ThirdPartyAppAnalyticsLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLink;

                        /**
                         * Verifies a ThirdPartyAppAnalyticsLink message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyAppAnalyticsLink message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ThirdPartyAppAnalyticsLink
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLink;

                        /**
                         * Creates a plain object from a ThirdPartyAppAnalyticsLink message. Also converts values to other types if specified.
                         * @param message ThirdPartyAppAnalyticsLink
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.ThirdPartyAppAnalyticsLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyAppAnalyticsLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ThirdPartyAppAnalyticsLink
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TopicConstant. */
                    interface ITopicConstant {

                        /** TopicConstant resource_name */
                        resource_name?: (string|null);

                        /** TopicConstant id */
                        id?: (number|null);

                        /** TopicConstant topic_constant_parent */
                        topic_constant_parent?: (string|null);

                        /** TopicConstant path */
                        path?: (string[]|null);
                    }

                    /** Represents a TopicConstant. */
                    class TopicConstant implements ITopicConstant {

                        /**
                         * Constructs a new TopicConstant.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ITopicConstant);

                        /** TopicConstant resource_name. */
                        public resource_name: string;

                        /** TopicConstant id. */
                        public id?: (number|null);

                        /** TopicConstant topic_constant_parent. */
                        public topic_constant_parent?: (string|null);

                        /** TopicConstant path. */
                        public path: string[];

                        /**
                         * Creates a new TopicConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TopicConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ITopicConstant): google.ads.googleads.v23.resources.TopicConstant;

                        /**
                         * Encodes the specified TopicConstant message. Does not implicitly {@link google.ads.googleads.v23.resources.TopicConstant.verify|verify} messages.
                         * @param message TopicConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ITopicConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TopicConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.TopicConstant.verify|verify} messages.
                         * @param message TopicConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ITopicConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TopicConstant message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TopicConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.TopicConstant;

                        /**
                         * Decodes a TopicConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TopicConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.TopicConstant;

                        /**
                         * Verifies a TopicConstant message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TopicConstant message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TopicConstant
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.TopicConstant;

                        /**
                         * Creates a plain object from a TopicConstant message. Also converts values to other types if specified.
                         * @param message TopicConstant
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.TopicConstant, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TopicConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TopicConstant
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TopicView. */
                    interface ITopicView {

                        /** TopicView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a TopicView. */
                    class TopicView implements ITopicView {

                        /**
                         * Constructs a new TopicView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ITopicView);

                        /** TopicView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new TopicView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TopicView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ITopicView): google.ads.googleads.v23.resources.TopicView;

                        /**
                         * Encodes the specified TopicView message. Does not implicitly {@link google.ads.googleads.v23.resources.TopicView.verify|verify} messages.
                         * @param message TopicView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ITopicView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TopicView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.TopicView.verify|verify} messages.
                         * @param message TopicView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ITopicView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TopicView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TopicView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.TopicView;

                        /**
                         * Decodes a TopicView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TopicView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.TopicView;

                        /**
                         * Verifies a TopicView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TopicView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TopicView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.TopicView;

                        /**
                         * Creates a plain object from a TopicView message. Also converts values to other types if specified.
                         * @param message TopicView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.TopicView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TopicView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TopicView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TravelActivityGroupView. */
                    interface ITravelActivityGroupView {

                        /** TravelActivityGroupView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a TravelActivityGroupView. */
                    class TravelActivityGroupView implements ITravelActivityGroupView {

                        /**
                         * Constructs a new TravelActivityGroupView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ITravelActivityGroupView);

                        /** TravelActivityGroupView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new TravelActivityGroupView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TravelActivityGroupView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ITravelActivityGroupView): google.ads.googleads.v23.resources.TravelActivityGroupView;

                        /**
                         * Encodes the specified TravelActivityGroupView message. Does not implicitly {@link google.ads.googleads.v23.resources.TravelActivityGroupView.verify|verify} messages.
                         * @param message TravelActivityGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ITravelActivityGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TravelActivityGroupView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.TravelActivityGroupView.verify|verify} messages.
                         * @param message TravelActivityGroupView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ITravelActivityGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TravelActivityGroupView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TravelActivityGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.TravelActivityGroupView;

                        /**
                         * Decodes a TravelActivityGroupView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TravelActivityGroupView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.TravelActivityGroupView;

                        /**
                         * Verifies a TravelActivityGroupView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TravelActivityGroupView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TravelActivityGroupView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.TravelActivityGroupView;

                        /**
                         * Creates a plain object from a TravelActivityGroupView message. Also converts values to other types if specified.
                         * @param message TravelActivityGroupView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.TravelActivityGroupView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TravelActivityGroupView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TravelActivityGroupView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TravelActivityPerformanceView. */
                    interface ITravelActivityPerformanceView {

                        /** TravelActivityPerformanceView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a TravelActivityPerformanceView. */
                    class TravelActivityPerformanceView implements ITravelActivityPerformanceView {

                        /**
                         * Constructs a new TravelActivityPerformanceView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.ITravelActivityPerformanceView);

                        /** TravelActivityPerformanceView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new TravelActivityPerformanceView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TravelActivityPerformanceView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.ITravelActivityPerformanceView): google.ads.googleads.v23.resources.TravelActivityPerformanceView;

                        /**
                         * Encodes the specified TravelActivityPerformanceView message. Does not implicitly {@link google.ads.googleads.v23.resources.TravelActivityPerformanceView.verify|verify} messages.
                         * @param message TravelActivityPerformanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.ITravelActivityPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TravelActivityPerformanceView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.TravelActivityPerformanceView.verify|verify} messages.
                         * @param message TravelActivityPerformanceView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.ITravelActivityPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TravelActivityPerformanceView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TravelActivityPerformanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.TravelActivityPerformanceView;

                        /**
                         * Decodes a TravelActivityPerformanceView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TravelActivityPerformanceView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.TravelActivityPerformanceView;

                        /**
                         * Verifies a TravelActivityPerformanceView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TravelActivityPerformanceView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TravelActivityPerformanceView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.TravelActivityPerformanceView;

                        /**
                         * Creates a plain object from a TravelActivityPerformanceView message. Also converts values to other types if specified.
                         * @param message TravelActivityPerformanceView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.TravelActivityPerformanceView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TravelActivityPerformanceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TravelActivityPerformanceView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserInterest. */
                    interface IUserInterest {

                        /** UserInterest resource_name */
                        resource_name?: (string|null);

                        /** UserInterest taxonomy_type */
                        taxonomy_type?: (google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|keyof typeof google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|null);

                        /** UserInterest user_interest_id */
                        user_interest_id?: (number|null);

                        /** UserInterest name */
                        name?: (string|null);

                        /** UserInterest user_interest_parent */
                        user_interest_parent?: (string|null);

                        /** UserInterest launched_to_all */
                        launched_to_all?: (boolean|null);

                        /** UserInterest availabilities */
                        availabilities?: (google.ads.googleads.v23.common.ICriterionCategoryAvailability[]|null);
                    }

                    /** Represents a UserInterest. */
                    class UserInterest implements IUserInterest {

                        /**
                         * Constructs a new UserInterest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IUserInterest);

                        /** UserInterest resource_name. */
                        public resource_name: string;

                        /** UserInterest taxonomy_type. */
                        public taxonomy_type: (google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|keyof typeof google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType);

                        /** UserInterest user_interest_id. */
                        public user_interest_id?: (number|null);

                        /** UserInterest name. */
                        public name?: (string|null);

                        /** UserInterest user_interest_parent. */
                        public user_interest_parent?: (string|null);

                        /** UserInterest launched_to_all. */
                        public launched_to_all?: (boolean|null);

                        /** UserInterest availabilities. */
                        public availabilities: google.ads.googleads.v23.common.ICriterionCategoryAvailability[];

                        /**
                         * Creates a new UserInterest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserInterest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IUserInterest): google.ads.googleads.v23.resources.UserInterest;

                        /**
                         * Encodes the specified UserInterest message. Does not implicitly {@link google.ads.googleads.v23.resources.UserInterest.verify|verify} messages.
                         * @param message UserInterest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IUserInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.UserInterest.verify|verify} messages.
                         * @param message UserInterest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IUserInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserInterest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.UserInterest;

                        /**
                         * Decodes a UserInterest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserInterest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.UserInterest;

                        /**
                         * Verifies a UserInterest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserInterest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.UserInterest;

                        /**
                         * Creates a plain object from a UserInterest message. Also converts values to other types if specified.
                         * @param message UserInterest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.UserInterest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserInterest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserList. */
                    interface IUserList {

                        /** UserList resource_name */
                        resource_name?: (string|null);

                        /** UserList id */
                        id?: (number|null);

                        /** UserList read_only */
                        read_only?: (boolean|null);

                        /** UserList name */
                        name?: (string|null);

                        /** UserList description */
                        description?: (string|null);

                        /** UserList membership_status */
                        membership_status?: (google.ads.googleads.v23.enums.UserListMembershipStatusEnum.UserListMembershipStatus|keyof typeof google.ads.googleads.v23.enums.UserListMembershipStatusEnum.UserListMembershipStatus|null);

                        /** UserList integration_code */
                        integration_code?: (string|null);

                        /** UserList membership_life_span */
                        membership_life_span?: (number|null);

                        /** UserList size_for_display */
                        size_for_display?: (number|null);

                        /** UserList size_range_for_display */
                        size_range_for_display?: (google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange|null);

                        /** UserList size_for_search */
                        size_for_search?: (number|null);

                        /** UserList size_range_for_search */
                        size_range_for_search?: (google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange|null);

                        /** UserList type */
                        type?: (google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|null);

                        /** UserList closing_reason */
                        closing_reason?: (google.ads.googleads.v23.enums.UserListClosingReasonEnum.UserListClosingReason|keyof typeof google.ads.googleads.v23.enums.UserListClosingReasonEnum.UserListClosingReason|null);

                        /** UserList access_reason */
                        access_reason?: (google.ads.googleads.v23.enums.AccessReasonEnum.AccessReason|keyof typeof google.ads.googleads.v23.enums.AccessReasonEnum.AccessReason|null);

                        /** UserList account_user_list_status */
                        account_user_list_status?: (google.ads.googleads.v23.enums.UserListAccessStatusEnum.UserListAccessStatus|keyof typeof google.ads.googleads.v23.enums.UserListAccessStatusEnum.UserListAccessStatus|null);

                        /** UserList eligible_for_search */
                        eligible_for_search?: (boolean|null);

                        /** UserList eligible_for_display */
                        eligible_for_display?: (boolean|null);

                        /** UserList match_rate_percentage */
                        match_rate_percentage?: (number|null);

                        /** UserList crm_based_user_list */
                        crm_based_user_list?: (google.ads.googleads.v23.common.ICrmBasedUserListInfo|null);

                        /** UserList similar_user_list */
                        similar_user_list?: (google.ads.googleads.v23.common.ISimilarUserListInfo|null);

                        /** UserList rule_based_user_list */
                        rule_based_user_list?: (google.ads.googleads.v23.common.IRuleBasedUserListInfo|null);

                        /** UserList logical_user_list */
                        logical_user_list?: (google.ads.googleads.v23.common.ILogicalUserListInfo|null);

                        /** UserList basic_user_list */
                        basic_user_list?: (google.ads.googleads.v23.common.IBasicUserListInfo|null);

                        /** UserList lookalike_user_list */
                        lookalike_user_list?: (google.ads.googleads.v23.common.ILookalikeUserListInfo|null);
                    }

                    /** Represents a UserList. */
                    class UserList implements IUserList {

                        /**
                         * Constructs a new UserList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IUserList);

                        /** UserList resource_name. */
                        public resource_name: string;

                        /** UserList id. */
                        public id?: (number|null);

                        /** UserList read_only. */
                        public read_only?: (boolean|null);

                        /** UserList name. */
                        public name?: (string|null);

                        /** UserList description. */
                        public description?: (string|null);

                        /** UserList membership_status. */
                        public membership_status: (google.ads.googleads.v23.enums.UserListMembershipStatusEnum.UserListMembershipStatus|keyof typeof google.ads.googleads.v23.enums.UserListMembershipStatusEnum.UserListMembershipStatus);

                        /** UserList integration_code. */
                        public integration_code?: (string|null);

                        /** UserList membership_life_span. */
                        public membership_life_span?: (number|null);

                        /** UserList size_for_display. */
                        public size_for_display?: (number|null);

                        /** UserList size_range_for_display. */
                        public size_range_for_display: (google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange);

                        /** UserList size_for_search. */
                        public size_for_search?: (number|null);

                        /** UserList size_range_for_search. */
                        public size_range_for_search: (google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v23.enums.UserListSizeRangeEnum.UserListSizeRange);

                        /** UserList type. */
                        public type: (google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v23.enums.UserListTypeEnum.UserListType);

                        /** UserList closing_reason. */
                        public closing_reason: (google.ads.googleads.v23.enums.UserListClosingReasonEnum.UserListClosingReason|keyof typeof google.ads.googleads.v23.enums.UserListClosingReasonEnum.UserListClosingReason);

                        /** UserList access_reason. */
                        public access_reason: (google.ads.googleads.v23.enums.AccessReasonEnum.AccessReason|keyof typeof google.ads.googleads.v23.enums.AccessReasonEnum.AccessReason);

                        /** UserList account_user_list_status. */
                        public account_user_list_status: (google.ads.googleads.v23.enums.UserListAccessStatusEnum.UserListAccessStatus|keyof typeof google.ads.googleads.v23.enums.UserListAccessStatusEnum.UserListAccessStatus);

                        /** UserList eligible_for_search. */
                        public eligible_for_search?: (boolean|null);

                        /** UserList eligible_for_display. */
                        public eligible_for_display?: (boolean|null);

                        /** UserList match_rate_percentage. */
                        public match_rate_percentage?: (number|null);

                        /** UserList crm_based_user_list. */
                        public crm_based_user_list?: (google.ads.googleads.v23.common.ICrmBasedUserListInfo|null);

                        /** UserList similar_user_list. */
                        public similar_user_list?: (google.ads.googleads.v23.common.ISimilarUserListInfo|null);

                        /** UserList rule_based_user_list. */
                        public rule_based_user_list?: (google.ads.googleads.v23.common.IRuleBasedUserListInfo|null);

                        /** UserList logical_user_list. */
                        public logical_user_list?: (google.ads.googleads.v23.common.ILogicalUserListInfo|null);

                        /** UserList basic_user_list. */
                        public basic_user_list?: (google.ads.googleads.v23.common.IBasicUserListInfo|null);

                        /** UserList lookalike_user_list. */
                        public lookalike_user_list?: (google.ads.googleads.v23.common.ILookalikeUserListInfo|null);

                        /** UserList user_list. */
                        public user_list?: ("crm_based_user_list"|"similar_user_list"|"rule_based_user_list"|"logical_user_list"|"basic_user_list"|"lookalike_user_list");

                        /**
                         * Creates a new UserList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IUserList): google.ads.googleads.v23.resources.UserList;

                        /**
                         * Encodes the specified UserList message. Does not implicitly {@link google.ads.googleads.v23.resources.UserList.verify|verify} messages.
                         * @param message UserList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IUserList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.UserList.verify|verify} messages.
                         * @param message UserList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IUserList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.UserList;

                        /**
                         * Decodes a UserList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.UserList;

                        /**
                         * Verifies a UserList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.UserList;

                        /**
                         * Creates a plain object from a UserList message. Also converts values to other types if specified.
                         * @param message UserList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.UserList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListCustomerType. */
                    interface IUserListCustomerType {

                        /** UserListCustomerType resource_name */
                        resource_name?: (string|null);

                        /** UserListCustomerType user_list */
                        user_list?: (string|null);

                        /** UserListCustomerType customer_type_category */
                        customer_type_category?: (google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum.UserListCustomerTypeCategory|keyof typeof google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum.UserListCustomerTypeCategory|null);
                    }

                    /** Represents a UserListCustomerType. */
                    class UserListCustomerType implements IUserListCustomerType {

                        /**
                         * Constructs a new UserListCustomerType.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IUserListCustomerType);

                        /** UserListCustomerType resource_name. */
                        public resource_name: string;

                        /** UserListCustomerType user_list. */
                        public user_list: string;

                        /** UserListCustomerType customer_type_category. */
                        public customer_type_category: (google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum.UserListCustomerTypeCategory|keyof typeof google.ads.googleads.v23.enums.UserListCustomerTypeCategoryEnum.UserListCustomerTypeCategory);

                        /**
                         * Creates a new UserListCustomerType instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListCustomerType instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IUserListCustomerType): google.ads.googleads.v23.resources.UserListCustomerType;

                        /**
                         * Encodes the specified UserListCustomerType message. Does not implicitly {@link google.ads.googleads.v23.resources.UserListCustomerType.verify|verify} messages.
                         * @param message UserListCustomerType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IUserListCustomerType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListCustomerType message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.UserListCustomerType.verify|verify} messages.
                         * @param message UserListCustomerType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IUserListCustomerType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListCustomerType message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListCustomerType
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.UserListCustomerType;

                        /**
                         * Decodes a UserListCustomerType message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListCustomerType
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.UserListCustomerType;

                        /**
                         * Verifies a UserListCustomerType message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListCustomerType message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListCustomerType
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.UserListCustomerType;

                        /**
                         * Creates a plain object from a UserListCustomerType message. Also converts values to other types if specified.
                         * @param message UserListCustomerType
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.UserListCustomerType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListCustomerType to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListCustomerType
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserLocationView. */
                    interface IUserLocationView {

                        /** UserLocationView resource_name */
                        resource_name?: (string|null);

                        /** UserLocationView country_criterion_id */
                        country_criterion_id?: (number|null);

                        /** UserLocationView targeting_location */
                        targeting_location?: (boolean|null);
                    }

                    /** Represents a UserLocationView. */
                    class UserLocationView implements IUserLocationView {

                        /**
                         * Constructs a new UserLocationView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IUserLocationView);

                        /** UserLocationView resource_name. */
                        public resource_name: string;

                        /** UserLocationView country_criterion_id. */
                        public country_criterion_id?: (number|null);

                        /** UserLocationView targeting_location. */
                        public targeting_location?: (boolean|null);

                        /**
                         * Creates a new UserLocationView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserLocationView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IUserLocationView): google.ads.googleads.v23.resources.UserLocationView;

                        /**
                         * Encodes the specified UserLocationView message. Does not implicitly {@link google.ads.googleads.v23.resources.UserLocationView.verify|verify} messages.
                         * @param message UserLocationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IUserLocationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserLocationView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.UserLocationView.verify|verify} messages.
                         * @param message UserLocationView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IUserLocationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserLocationView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserLocationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.UserLocationView;

                        /**
                         * Decodes a UserLocationView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserLocationView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.UserLocationView;

                        /**
                         * Verifies a UserLocationView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserLocationView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserLocationView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.UserLocationView;

                        /**
                         * Creates a plain object from a UserLocationView message. Also converts values to other types if specified.
                         * @param message UserLocationView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.UserLocationView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserLocationView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserLocationView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Video. */
                    interface IVideo {

                        /** Video resource_name */
                        resource_name?: (string|null);

                        /** Video id */
                        id?: (string|null);

                        /** Video channel_id */
                        channel_id?: (string|null);

                        /** Video duration_millis */
                        duration_millis?: (number|null);

                        /** Video title */
                        title?: (string|null);
                    }

                    /** Represents a Video. */
                    class Video implements IVideo {

                        /**
                         * Constructs a new Video.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IVideo);

                        /** Video resource_name. */
                        public resource_name: string;

                        /** Video id. */
                        public id?: (string|null);

                        /** Video channel_id. */
                        public channel_id?: (string|null);

                        /** Video duration_millis. */
                        public duration_millis?: (number|null);

                        /** Video title. */
                        public title?: (string|null);

                        /**
                         * Creates a new Video instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Video instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IVideo): google.ads.googleads.v23.resources.Video;

                        /**
                         * Encodes the specified Video message. Does not implicitly {@link google.ads.googleads.v23.resources.Video.verify|verify} messages.
                         * @param message Video message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IVideo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Video message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.Video.verify|verify} messages.
                         * @param message Video message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IVideo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Video message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Video
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.Video;

                        /**
                         * Decodes a Video message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Video
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.Video;

                        /**
                         * Verifies a Video message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Video message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Video
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.Video;

                        /**
                         * Creates a plain object from a Video message. Also converts values to other types if specified.
                         * @param message Video
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.Video, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Video to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Video
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a WebpageView. */
                    interface IWebpageView {

                        /** WebpageView resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a WebpageView. */
                    class WebpageView implements IWebpageView {

                        /**
                         * Constructs a new WebpageView.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.resources.IWebpageView);

                        /** WebpageView resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new WebpageView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageView instance
                         */
                        public static create(properties?: google.ads.googleads.v23.resources.IWebpageView): google.ads.googleads.v23.resources.WebpageView;

                        /**
                         * Encodes the specified WebpageView message. Does not implicitly {@link google.ads.googleads.v23.resources.WebpageView.verify|verify} messages.
                         * @param message WebpageView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.resources.IWebpageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageView message, length delimited. Does not implicitly {@link google.ads.googleads.v23.resources.WebpageView.verify|verify} messages.
                         * @param message WebpageView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.resources.IWebpageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageView message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WebpageView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.resources.WebpageView;

                        /**
                         * Decodes a WebpageView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WebpageView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.resources.WebpageView;

                        /**
                         * Verifies a WebpageView message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageView message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WebpageView
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.resources.WebpageView;

                        /**
                         * Creates a plain object from a WebpageView message. Also converts values to other types if specified.
                         * @param message WebpageView
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.resources.WebpageView, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WebpageView
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Namespace services. */
                namespace services {

                    /** Represents an AccountBudgetProposalService */
                    class AccountBudgetProposalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AccountBudgetProposalService 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 AccountBudgetProposalService 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): AccountBudgetProposalService;

                        /**
                         * Calls MutateAccountBudgetProposal.
                         * @param request MutateAccountBudgetProposalRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAccountBudgetProposalResponse
                         */
                        public mutateAccountBudgetProposal(request: google.ads.googleads.v23.services.IMutateAccountBudgetProposalRequest, callback: google.ads.googleads.v23.services.AccountBudgetProposalService.MutateAccountBudgetProposalCallback): void;

                        /**
                         * Calls MutateAccountBudgetProposal.
                         * @param request MutateAccountBudgetProposalRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAccountBudgetProposal(request: google.ads.googleads.v23.services.IMutateAccountBudgetProposalRequest): Promise<google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse>;
                    }

                    namespace AccountBudgetProposalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AccountBudgetProposalService|mutateAccountBudgetProposal}.
                         * @param error Error, if any
                         * @param [response] MutateAccountBudgetProposalResponse
                         */
                        type MutateAccountBudgetProposalCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse) => void;
                    }

                    /** Properties of a MutateAccountBudgetProposalRequest. */
                    interface IMutateAccountBudgetProposalRequest {

                        /** MutateAccountBudgetProposalRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAccountBudgetProposalRequest operation */
                        operation?: (google.ads.googleads.v23.services.IAccountBudgetProposalOperation|null);

                        /** MutateAccountBudgetProposalRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAccountBudgetProposalRequest. */
                    class MutateAccountBudgetProposalRequest implements IMutateAccountBudgetProposalRequest {

                        /**
                         * Constructs a new MutateAccountBudgetProposalRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAccountBudgetProposalRequest);

                        /** MutateAccountBudgetProposalRequest customer_id. */
                        public customer_id: string;

                        /** MutateAccountBudgetProposalRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.IAccountBudgetProposalOperation|null);

                        /** MutateAccountBudgetProposalRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAccountBudgetProposalRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAccountBudgetProposalRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAccountBudgetProposalRequest): google.ads.googleads.v23.services.MutateAccountBudgetProposalRequest;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountBudgetProposalRequest.verify|verify} messages.
                         * @param message MutateAccountBudgetProposalRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAccountBudgetProposalRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountBudgetProposalRequest.verify|verify} messages.
                         * @param message MutateAccountBudgetProposalRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAccountBudgetProposalRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountBudgetProposalRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAccountBudgetProposalRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAccountBudgetProposalRequest;

                        /**
                         * Decodes a MutateAccountBudgetProposalRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAccountBudgetProposalRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAccountBudgetProposalRequest;

                        /**
                         * Verifies a MutateAccountBudgetProposalRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountBudgetProposalRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAccountBudgetProposalRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAccountBudgetProposalRequest;

                        /**
                         * Creates a plain object from a MutateAccountBudgetProposalRequest message. Also converts values to other types if specified.
                         * @param message MutateAccountBudgetProposalRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAccountBudgetProposalRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountBudgetProposalRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAccountBudgetProposalRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AccountBudgetProposalOperation. */
                    interface IAccountBudgetProposalOperation {

                        /** AccountBudgetProposalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountBudgetProposalOperation create */
                        create?: (google.ads.googleads.v23.resources.IAccountBudgetProposal|null);

                        /** AccountBudgetProposalOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AccountBudgetProposalOperation. */
                    class AccountBudgetProposalOperation implements IAccountBudgetProposalOperation {

                        /**
                         * Constructs a new AccountBudgetProposalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAccountBudgetProposalOperation);

                        /** AccountBudgetProposalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountBudgetProposalOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAccountBudgetProposal|null);

                        /** AccountBudgetProposalOperation remove. */
                        public remove?: (string|null);

                        /** AccountBudgetProposalOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AccountBudgetProposalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountBudgetProposalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAccountBudgetProposalOperation): google.ads.googleads.v23.services.AccountBudgetProposalOperation;

                        /**
                         * Encodes the specified AccountBudgetProposalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AccountBudgetProposalOperation.verify|verify} messages.
                         * @param message AccountBudgetProposalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAccountBudgetProposalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AccountBudgetProposalOperation.verify|verify} messages.
                         * @param message AccountBudgetProposalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAccountBudgetProposalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountBudgetProposalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AccountBudgetProposalOperation;

                        /**
                         * Decodes an AccountBudgetProposalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountBudgetProposalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AccountBudgetProposalOperation;

                        /**
                         * Verifies an AccountBudgetProposalOperation message.
                         * @param message Plain 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 AccountBudgetProposalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountBudgetProposalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AccountBudgetProposalOperation;

                        /**
                         * Creates a plain object from an AccountBudgetProposalOperation message. Also converts values to other types if specified.
                         * @param message AccountBudgetProposalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AccountBudgetProposalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountBudgetProposalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAccountBudgetProposalResponse. */
                    interface IMutateAccountBudgetProposalResponse {

                        /** MutateAccountBudgetProposalResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateAccountBudgetProposalResult|null);
                    }

                    /** Represents a MutateAccountBudgetProposalResponse. */
                    class MutateAccountBudgetProposalResponse implements IMutateAccountBudgetProposalResponse {

                        /**
                         * Constructs a new MutateAccountBudgetProposalResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResponse);

                        /** MutateAccountBudgetProposalResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateAccountBudgetProposalResult|null);

                        /**
                         * Creates a new MutateAccountBudgetProposalResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAccountBudgetProposalResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResponse): google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse.verify|verify} messages.
                         * @param message MutateAccountBudgetProposalResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse.verify|verify} messages.
                         * @param message MutateAccountBudgetProposalResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountBudgetProposalResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAccountBudgetProposalResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse;

                        /**
                         * Decodes a MutateAccountBudgetProposalResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAccountBudgetProposalResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse;

                        /**
                         * Verifies a MutateAccountBudgetProposalResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountBudgetProposalResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAccountBudgetProposalResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse;

                        /**
                         * Creates a plain object from a MutateAccountBudgetProposalResponse message. Also converts values to other types if specified.
                         * @param message MutateAccountBudgetProposalResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAccountBudgetProposalResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountBudgetProposalResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAccountBudgetProposalResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAccountBudgetProposalResult. */
                    interface IMutateAccountBudgetProposalResult {

                        /** MutateAccountBudgetProposalResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateAccountBudgetProposalResult. */
                    class MutateAccountBudgetProposalResult implements IMutateAccountBudgetProposalResult {

                        /**
                         * Constructs a new MutateAccountBudgetProposalResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResult);

                        /** MutateAccountBudgetProposalResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateAccountBudgetProposalResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAccountBudgetProposalResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResult): google.ads.googleads.v23.services.MutateAccountBudgetProposalResult;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountBudgetProposalResult.verify|verify} messages.
                         * @param message MutateAccountBudgetProposalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountBudgetProposalResult.verify|verify} messages.
                         * @param message MutateAccountBudgetProposalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAccountBudgetProposalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountBudgetProposalResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAccountBudgetProposalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAccountBudgetProposalResult;

                        /**
                         * Decodes a MutateAccountBudgetProposalResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAccountBudgetProposalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAccountBudgetProposalResult;

                        /**
                         * Verifies a MutateAccountBudgetProposalResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountBudgetProposalResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAccountBudgetProposalResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAccountBudgetProposalResult;

                        /**
                         * Creates a plain object from a MutateAccountBudgetProposalResult message. Also converts values to other types if specified.
                         * @param message MutateAccountBudgetProposalResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAccountBudgetProposalResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountBudgetProposalResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAccountBudgetProposalResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AccountLinkService */
                    class AccountLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AccountLinkService 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 AccountLinkService 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): AccountLinkService;

                        /**
                         * Calls CreateAccountLink.
                         * @param request CreateAccountLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateAccountLinkResponse
                         */
                        public createAccountLink(request: google.ads.googleads.v23.services.ICreateAccountLinkRequest, callback: google.ads.googleads.v23.services.AccountLinkService.CreateAccountLinkCallback): void;

                        /**
                         * Calls CreateAccountLink.
                         * @param request CreateAccountLinkRequest message or plain object
                         * @returns Promise
                         */
                        public createAccountLink(request: google.ads.googleads.v23.services.ICreateAccountLinkRequest): Promise<google.ads.googleads.v23.services.CreateAccountLinkResponse>;

                        /**
                         * Calls MutateAccountLink.
                         * @param request MutateAccountLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAccountLinkResponse
                         */
                        public mutateAccountLink(request: google.ads.googleads.v23.services.IMutateAccountLinkRequest, callback: google.ads.googleads.v23.services.AccountLinkService.MutateAccountLinkCallback): void;

                        /**
                         * Calls MutateAccountLink.
                         * @param request MutateAccountLinkRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAccountLink(request: google.ads.googleads.v23.services.IMutateAccountLinkRequest): Promise<google.ads.googleads.v23.services.MutateAccountLinkResponse>;
                    }

                    namespace AccountLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AccountLinkService|createAccountLink}.
                         * @param error Error, if any
                         * @param [response] CreateAccountLinkResponse
                         */
                        type CreateAccountLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.CreateAccountLinkResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AccountLinkService|mutateAccountLink}.
                         * @param error Error, if any
                         * @param [response] MutateAccountLinkResponse
                         */
                        type MutateAccountLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAccountLinkResponse) => void;
                    }

                    /** Properties of a CreateAccountLinkRequest. */
                    interface ICreateAccountLinkRequest {

                        /** CreateAccountLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateAccountLinkRequest account_link */
                        account_link?: (google.ads.googleads.v23.resources.IAccountLink|null);
                    }

                    /** Represents a CreateAccountLinkRequest. */
                    class CreateAccountLinkRequest implements ICreateAccountLinkRequest {

                        /**
                         * Constructs a new CreateAccountLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateAccountLinkRequest);

                        /** CreateAccountLinkRequest customer_id. */
                        public customer_id: string;

                        /** CreateAccountLinkRequest account_link. */
                        public account_link?: (google.ads.googleads.v23.resources.IAccountLink|null);

                        /**
                         * Creates a new CreateAccountLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateAccountLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateAccountLinkRequest): google.ads.googleads.v23.services.CreateAccountLinkRequest;

                        /**
                         * Encodes the specified CreateAccountLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.CreateAccountLinkRequest.verify|verify} messages.
                         * @param message CreateAccountLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateAccountLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateAccountLinkRequest.verify|verify} messages.
                         * @param message CreateAccountLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateAccountLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateAccountLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateAccountLinkRequest;

                        /**
                         * Decodes a CreateAccountLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateAccountLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateAccountLinkRequest;

                        /**
                         * Verifies a CreateAccountLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateAccountLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateAccountLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateAccountLinkRequest;

                        /**
                         * Creates a plain object from a CreateAccountLinkRequest message. Also converts values to other types if specified.
                         * @param message CreateAccountLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateAccountLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateAccountLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateAccountLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateAccountLinkResponse. */
                    interface ICreateAccountLinkResponse {

                        /** CreateAccountLinkResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a CreateAccountLinkResponse. */
                    class CreateAccountLinkResponse implements ICreateAccountLinkResponse {

                        /**
                         * Constructs a new CreateAccountLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateAccountLinkResponse);

                        /** CreateAccountLinkResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new CreateAccountLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateAccountLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateAccountLinkResponse): google.ads.googleads.v23.services.CreateAccountLinkResponse;

                        /**
                         * Encodes the specified CreateAccountLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.CreateAccountLinkResponse.verify|verify} messages.
                         * @param message CreateAccountLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateAccountLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateAccountLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateAccountLinkResponse.verify|verify} messages.
                         * @param message CreateAccountLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateAccountLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateAccountLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateAccountLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateAccountLinkResponse;

                        /**
                         * Decodes a CreateAccountLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateAccountLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateAccountLinkResponse;

                        /**
                         * Verifies a CreateAccountLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateAccountLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateAccountLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateAccountLinkResponse;

                        /**
                         * Creates a plain object from a CreateAccountLinkResponse message. Also converts values to other types if specified.
                         * @param message CreateAccountLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateAccountLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateAccountLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateAccountLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAccountLinkRequest. */
                    interface IMutateAccountLinkRequest {

                        /** MutateAccountLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAccountLinkRequest operation */
                        operation?: (google.ads.googleads.v23.services.IAccountLinkOperation|null);

                        /** MutateAccountLinkRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAccountLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAccountLinkRequest. */
                    class MutateAccountLinkRequest implements IMutateAccountLinkRequest {

                        /**
                         * Constructs a new MutateAccountLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAccountLinkRequest);

                        /** MutateAccountLinkRequest customer_id. */
                        public customer_id: string;

                        /** MutateAccountLinkRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.IAccountLinkOperation|null);

                        /** MutateAccountLinkRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAccountLinkRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAccountLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAccountLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAccountLinkRequest): google.ads.googleads.v23.services.MutateAccountLinkRequest;

                        /**
                         * Encodes the specified MutateAccountLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountLinkRequest.verify|verify} messages.
                         * @param message MutateAccountLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountLinkRequest.verify|verify} messages.
                         * @param message MutateAccountLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAccountLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAccountLinkRequest;

                        /**
                         * Decodes a MutateAccountLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAccountLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAccountLinkRequest;

                        /**
                         * Verifies a MutateAccountLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAccountLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAccountLinkRequest;

                        /**
                         * Creates a plain object from a MutateAccountLinkRequest message. Also converts values to other types if specified.
                         * @param message MutateAccountLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAccountLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAccountLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AccountLinkOperation. */
                    interface IAccountLinkOperation {

                        /** AccountLinkOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountLinkOperation update */
                        update?: (google.ads.googleads.v23.resources.IAccountLink|null);

                        /** AccountLinkOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AccountLinkOperation. */
                    class AccountLinkOperation implements IAccountLinkOperation {

                        /**
                         * Constructs a new AccountLinkOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAccountLinkOperation);

                        /** AccountLinkOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountLinkOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAccountLink|null);

                        /** AccountLinkOperation remove. */
                        public remove?: (string|null);

                        /** AccountLinkOperation operation. */
                        public operation?: ("update"|"remove");

                        /**
                         * Creates a new AccountLinkOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountLinkOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAccountLinkOperation): google.ads.googleads.v23.services.AccountLinkOperation;

                        /**
                         * Encodes the specified AccountLinkOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AccountLinkOperation.verify|verify} messages.
                         * @param message AccountLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAccountLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AccountLinkOperation.verify|verify} messages.
                         * @param message AccountLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAccountLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLinkOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AccountLinkOperation;

                        /**
                         * Decodes an AccountLinkOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AccountLinkOperation;

                        /**
                         * Verifies an AccountLinkOperation message.
                         * @param message Plain 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 AccountLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountLinkOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AccountLinkOperation;

                        /**
                         * Creates a plain object from an AccountLinkOperation message. Also converts values to other types if specified.
                         * @param message AccountLinkOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AccountLinkOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountLinkOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAccountLinkResponse. */
                    interface IMutateAccountLinkResponse {

                        /** MutateAccountLinkResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateAccountLinkResult|null);

                        /** MutateAccountLinkResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAccountLinkResponse. */
                    class MutateAccountLinkResponse implements IMutateAccountLinkResponse {

                        /**
                         * Constructs a new MutateAccountLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAccountLinkResponse);

                        /** MutateAccountLinkResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateAccountLinkResult|null);

                        /** MutateAccountLinkResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAccountLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAccountLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAccountLinkResponse): google.ads.googleads.v23.services.MutateAccountLinkResponse;

                        /**
                         * Encodes the specified MutateAccountLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountLinkResponse.verify|verify} messages.
                         * @param message MutateAccountLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAccountLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountLinkResponse.verify|verify} messages.
                         * @param message MutateAccountLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAccountLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAccountLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAccountLinkResponse;

                        /**
                         * Decodes a MutateAccountLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAccountLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAccountLinkResponse;

                        /**
                         * Verifies a MutateAccountLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAccountLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAccountLinkResponse;

                        /**
                         * Creates a plain object from a MutateAccountLinkResponse message. Also converts values to other types if specified.
                         * @param message MutateAccountLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAccountLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAccountLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAccountLinkResult. */
                    interface IMutateAccountLinkResult {

                        /** MutateAccountLinkResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateAccountLinkResult. */
                    class MutateAccountLinkResult implements IMutateAccountLinkResult {

                        /**
                         * Constructs a new MutateAccountLinkResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAccountLinkResult);

                        /** MutateAccountLinkResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateAccountLinkResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAccountLinkResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAccountLinkResult): google.ads.googleads.v23.services.MutateAccountLinkResult;

                        /**
                         * Encodes the specified MutateAccountLinkResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountLinkResult.verify|verify} messages.
                         * @param message MutateAccountLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAccountLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAccountLinkResult.verify|verify} messages.
                         * @param message MutateAccountLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAccountLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountLinkResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAccountLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAccountLinkResult;

                        /**
                         * Decodes a MutateAccountLinkResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAccountLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAccountLinkResult;

                        /**
                         * Verifies a MutateAccountLinkResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAccountLinkResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAccountLinkResult;

                        /**
                         * Creates a plain object from a MutateAccountLinkResult message. Also converts values to other types if specified.
                         * @param message MutateAccountLinkResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAccountLinkResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAccountLinkResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupAdLabelService */
                    class AdGroupAdLabelService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupAdLabelService 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 AdGroupAdLabelService 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): AdGroupAdLabelService;

                        /**
                         * Calls MutateAdGroupAdLabels.
                         * @param request MutateAdGroupAdLabelsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupAdLabelsResponse
                         */
                        public mutateAdGroupAdLabels(request: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsRequest, callback: google.ads.googleads.v23.services.AdGroupAdLabelService.MutateAdGroupAdLabelsCallback): void;

                        /**
                         * Calls MutateAdGroupAdLabels.
                         * @param request MutateAdGroupAdLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupAdLabels(request: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse>;
                    }

                    namespace AdGroupAdLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupAdLabelService|mutateAdGroupAdLabels}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupAdLabelsResponse
                         */
                        type MutateAdGroupAdLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse) => void;
                    }

                    /** Properties of a MutateAdGroupAdLabelsRequest. */
                    interface IMutateAdGroupAdLabelsRequest {

                        /** MutateAdGroupAdLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupAdLabelsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupAdLabelOperation[]|null);

                        /** MutateAdGroupAdLabelsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupAdLabelsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAdGroupAdLabelsRequest. */
                    class MutateAdGroupAdLabelsRequest implements IMutateAdGroupAdLabelsRequest {

                        /**
                         * Constructs a new MutateAdGroupAdLabelsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsRequest);

                        /** MutateAdGroupAdLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupAdLabelsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupAdLabelOperation[];

                        /** MutateAdGroupAdLabelsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupAdLabelsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAdGroupAdLabelsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAdLabelsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsRequest): google.ads.googleads.v23.services.MutateAdGroupAdLabelsRequest;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdLabelsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAdLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdLabelsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAdLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdLabelsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAdLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAdLabelsRequest;

                        /**
                         * Decodes a MutateAdGroupAdLabelsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAdLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAdLabelsRequest;

                        /**
                         * Verifies a MutateAdGroupAdLabelsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAdLabelsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAdLabelsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupAdLabelsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAdLabelsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAdLabelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAdLabelsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdLabelOperation. */
                    interface IAdGroupAdLabelOperation {

                        /** AdGroupAdLabelOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupAdLabel|null);

                        /** AdGroupAdLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupAdLabelOperation. */
                    class AdGroupAdLabelOperation implements IAdGroupAdLabelOperation {

                        /**
                         * Constructs a new AdGroupAdLabelOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupAdLabelOperation);

                        /** AdGroupAdLabelOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupAdLabel|null);

                        /** AdGroupAdLabelOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupAdLabelOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AdGroupAdLabelOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdLabelOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupAdLabelOperation): google.ads.googleads.v23.services.AdGroupAdLabelOperation;

                        /**
                         * Encodes the specified AdGroupAdLabelOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAdLabelOperation.verify|verify} messages.
                         * @param message AdGroupAdLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupAdLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAdLabelOperation.verify|verify} messages.
                         * @param message AdGroupAdLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupAdLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdLabelOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupAdLabelOperation;

                        /**
                         * Decodes an AdGroupAdLabelOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupAdLabelOperation;

                        /**
                         * Verifies an AdGroupAdLabelOperation message.
                         * @param message Plain 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 AdGroupAdLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdLabelOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupAdLabelOperation;

                        /**
                         * Creates a plain object from an AdGroupAdLabelOperation message. Also converts values to other types if specified.
                         * @param message AdGroupAdLabelOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupAdLabelOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdLabelOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAdLabelsResponse. */
                    interface IMutateAdGroupAdLabelsResponse {

                        /** MutateAdGroupAdLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdLabelsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult[]|null);
                    }

                    /** Represents a MutateAdGroupAdLabelsResponse. */
                    class MutateAdGroupAdLabelsResponse implements IMutateAdGroupAdLabelsResponse {

                        /**
                         * Constructs a new MutateAdGroupAdLabelsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsResponse);

                        /** MutateAdGroupAdLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdLabelsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult[];

                        /**
                         * Creates a new MutateAdGroupAdLabelsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAdLabelsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsResponse): google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAdLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAdLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAdLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdLabelsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAdLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse;

                        /**
                         * Decodes a MutateAdGroupAdLabelsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAdLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse;

                        /**
                         * Verifies a MutateAdGroupAdLabelsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAdLabelsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupAdLabelsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAdLabelsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAdLabelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAdLabelsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAdLabelResult. */
                    interface IMutateAdGroupAdLabelResult {

                        /** MutateAdGroupAdLabelResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateAdGroupAdLabelResult. */
                    class MutateAdGroupAdLabelResult implements IMutateAdGroupAdLabelResult {

                        /**
                         * Constructs a new MutateAdGroupAdLabelResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult);

                        /** MutateAdGroupAdLabelResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateAdGroupAdLabelResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAdLabelResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult): google.ads.googleads.v23.services.MutateAdGroupAdLabelResult;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdLabelResult.verify|verify} messages.
                         * @param message MutateAdGroupAdLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdLabelResult.verify|verify} messages.
                         * @param message MutateAdGroupAdLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdLabelResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAdLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAdLabelResult;

                        /**
                         * Decodes a MutateAdGroupAdLabelResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAdLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAdLabelResult;

                        /**
                         * Verifies a MutateAdGroupAdLabelResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAdLabelResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAdLabelResult;

                        /**
                         * Creates a plain object from a MutateAdGroupAdLabelResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAdLabelResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAdLabelResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAdLabelResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupAdService */
                    class AdGroupAdService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupAdService 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 AdGroupAdService 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): AdGroupAdService;

                        /**
                         * Calls MutateAdGroupAds.
                         * @param request MutateAdGroupAdsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupAdsResponse
                         */
                        public mutateAdGroupAds(request: google.ads.googleads.v23.services.IMutateAdGroupAdsRequest, callback: google.ads.googleads.v23.services.AdGroupAdService.MutateAdGroupAdsCallback): void;

                        /**
                         * Calls MutateAdGroupAds.
                         * @param request MutateAdGroupAdsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupAds(request: google.ads.googleads.v23.services.IMutateAdGroupAdsRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupAdsResponse>;

                        /**
                         * Calls RemoveAutomaticallyCreatedAssets.
                         * @param request RemoveAutomaticallyCreatedAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public removeAutomaticallyCreatedAssets(request: google.ads.googleads.v23.services.IRemoveAutomaticallyCreatedAssetsRequest, callback: google.ads.googleads.v23.services.AdGroupAdService.RemoveAutomaticallyCreatedAssetsCallback): void;

                        /**
                         * Calls RemoveAutomaticallyCreatedAssets.
                         * @param request RemoveAutomaticallyCreatedAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public removeAutomaticallyCreatedAssets(request: google.ads.googleads.v23.services.IRemoveAutomaticallyCreatedAssetsRequest): Promise<google.protobuf.Empty>;
                    }

                    namespace AdGroupAdService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupAdService|mutateAdGroupAds}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupAdsResponse
                         */
                        type MutateAdGroupAdsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupAdsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupAdService|removeAutomaticallyCreatedAssets}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type RemoveAutomaticallyCreatedAssetsCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;
                    }

                    /** Properties of a MutateAdGroupAdsRequest. */
                    interface IMutateAdGroupAdsRequest {

                        /** MutateAdGroupAdsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupAdsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupAdOperation[]|null);

                        /** MutateAdGroupAdsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupAdsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupAdsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupAdsRequest. */
                    class MutateAdGroupAdsRequest implements IMutateAdGroupAdsRequest {

                        /**
                         * Constructs a new MutateAdGroupAdsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdsRequest);

                        /** MutateAdGroupAdsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupAdsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupAdOperation[];

                        /** MutateAdGroupAdsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupAdsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupAdsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupAdsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAdsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdsRequest): google.ads.googleads.v23.services.MutateAdGroupAdsRequest;

                        /**
                         * Encodes the specified MutateAdGroupAdsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAdsRequest;

                        /**
                         * Decodes a MutateAdGroupAdsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAdsRequest;

                        /**
                         * Verifies a MutateAdGroupAdsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAdsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAdsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupAdsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAdsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAdsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAdOperation. */
                    interface IAdGroupAdOperation {

                        /** AdGroupAdOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupAdOperation policy_validation_parameter */
                        policy_validation_parameter?: (google.ads.googleads.v23.common.IPolicyValidationParameter|null);

                        /** AdGroupAdOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                        /** AdGroupAdOperation update */
                        update?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                        /** AdGroupAdOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupAdOperation. */
                    class AdGroupAdOperation implements IAdGroupAdOperation {

                        /**
                         * Constructs a new AdGroupAdOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupAdOperation);

                        /** AdGroupAdOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupAdOperation policy_validation_parameter. */
                        public policy_validation_parameter?: (google.ads.googleads.v23.common.IPolicyValidationParameter|null);

                        /** AdGroupAdOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                        /** AdGroupAdOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                        /** AdGroupAdOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupAdOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdGroupAdOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupAdOperation): google.ads.googleads.v23.services.AdGroupAdOperation;

                        /**
                         * Encodes the specified AdGroupAdOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAdOperation.verify|verify} messages.
                         * @param message AdGroupAdOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupAdOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAdOperation.verify|verify} messages.
                         * @param message AdGroupAdOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupAdOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAdOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupAdOperation;

                        /**
                         * Decodes an AdGroupAdOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAdOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupAdOperation;

                        /**
                         * Verifies an AdGroupAdOperation message.
                         * @param message Plain 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 AdGroupAdOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAdOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupAdOperation;

                        /**
                         * Creates a plain object from an AdGroupAdOperation message. Also converts values to other types if specified.
                         * @param message AdGroupAdOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupAdOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAdOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAdsResponse. */
                    interface IMutateAdGroupAdsResponse {

                        /** MutateAdGroupAdsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupAdResult[]|null);
                    }

                    /** Represents a MutateAdGroupAdsResponse. */
                    class MutateAdGroupAdsResponse implements IMutateAdGroupAdsResponse {

                        /**
                         * Constructs a new MutateAdGroupAdsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdsResponse);

                        /** MutateAdGroupAdsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupAdResult[];

                        /**
                         * Creates a new MutateAdGroupAdsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAdsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdsResponse): google.ads.googleads.v23.services.MutateAdGroupAdsResponse;

                        /**
                         * Encodes the specified MutateAdGroupAdsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAdsResponse;

                        /**
                         * Decodes a MutateAdGroupAdsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAdsResponse;

                        /**
                         * Verifies a MutateAdGroupAdsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAdsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAdsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupAdsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAdsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAdsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAdResult. */
                    interface IMutateAdGroupAdResult {

                        /** MutateAdGroupAdResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupAdResult ad_group_ad */
                        ad_group_ad?: (google.ads.googleads.v23.resources.IAdGroupAd|null);
                    }

                    /** Represents a MutateAdGroupAdResult. */
                    class MutateAdGroupAdResult implements IMutateAdGroupAdResult {

                        /**
                         * Constructs a new MutateAdGroupAdResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdResult);

                        /** MutateAdGroupAdResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupAdResult ad_group_ad. */
                        public ad_group_ad?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                        /**
                         * Creates a new MutateAdGroupAdResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAdResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAdResult): google.ads.googleads.v23.services.MutateAdGroupAdResult;

                        /**
                         * Encodes the specified MutateAdGroupAdResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdResult.verify|verify} messages.
                         * @param message MutateAdGroupAdResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAdResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAdResult.verify|verify} messages.
                         * @param message MutateAdGroupAdResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAdResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAdResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAdResult;

                        /**
                         * Decodes a MutateAdGroupAdResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAdResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAdResult;

                        /**
                         * Verifies a MutateAdGroupAdResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAdResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAdResult;

                        /**
                         * Creates a plain object from a MutateAdGroupAdResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAdResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAdResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAdResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveAutomaticallyCreatedAssetsRequest. */
                    interface IRemoveAutomaticallyCreatedAssetsRequest {

                        /** RemoveAutomaticallyCreatedAssetsRequest ad_group_ad */
                        ad_group_ad?: (string|null);

                        /** RemoveAutomaticallyCreatedAssetsRequest assets_with_field_type */
                        assets_with_field_type?: (google.ads.googleads.v23.services.IAssetsWithFieldType[]|null);
                    }

                    /** Represents a RemoveAutomaticallyCreatedAssetsRequest. */
                    class RemoveAutomaticallyCreatedAssetsRequest implements IRemoveAutomaticallyCreatedAssetsRequest {

                        /**
                         * Constructs a new RemoveAutomaticallyCreatedAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveAutomaticallyCreatedAssetsRequest);

                        /** RemoveAutomaticallyCreatedAssetsRequest ad_group_ad. */
                        public ad_group_ad: string;

                        /** RemoveAutomaticallyCreatedAssetsRequest assets_with_field_type. */
                        public assets_with_field_type: google.ads.googleads.v23.services.IAssetsWithFieldType[];

                        /**
                         * Creates a new RemoveAutomaticallyCreatedAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveAutomaticallyCreatedAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveAutomaticallyCreatedAssetsRequest): google.ads.googleads.v23.services.RemoveAutomaticallyCreatedAssetsRequest;

                        /**
                         * Encodes the specified RemoveAutomaticallyCreatedAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveAutomaticallyCreatedAssetsRequest.verify|verify} messages.
                         * @param message RemoveAutomaticallyCreatedAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveAutomaticallyCreatedAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveAutomaticallyCreatedAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveAutomaticallyCreatedAssetsRequest.verify|verify} messages.
                         * @param message RemoveAutomaticallyCreatedAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveAutomaticallyCreatedAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveAutomaticallyCreatedAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveAutomaticallyCreatedAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveAutomaticallyCreatedAssetsRequest;

                        /**
                         * Decodes a RemoveAutomaticallyCreatedAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveAutomaticallyCreatedAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveAutomaticallyCreatedAssetsRequest;

                        /**
                         * Verifies a RemoveAutomaticallyCreatedAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveAutomaticallyCreatedAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveAutomaticallyCreatedAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveAutomaticallyCreatedAssetsRequest;

                        /**
                         * Creates a plain object from a RemoveAutomaticallyCreatedAssetsRequest message. Also converts values to other types if specified.
                         * @param message RemoveAutomaticallyCreatedAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveAutomaticallyCreatedAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveAutomaticallyCreatedAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveAutomaticallyCreatedAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetsWithFieldType. */
                    interface IAssetsWithFieldType {

                        /** AssetsWithFieldType asset */
                        asset?: (string|null);

                        /** AssetsWithFieldType asset_field_type */
                        asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents an AssetsWithFieldType. */
                    class AssetsWithFieldType implements IAssetsWithFieldType {

                        /**
                         * Constructs a new AssetsWithFieldType.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetsWithFieldType);

                        /** AssetsWithFieldType asset. */
                        public asset: string;

                        /** AssetsWithFieldType asset_field_type. */
                        public asset_field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /**
                         * Creates a new AssetsWithFieldType instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetsWithFieldType instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetsWithFieldType): google.ads.googleads.v23.services.AssetsWithFieldType;

                        /**
                         * Encodes the specified AssetsWithFieldType message. Does not implicitly {@link google.ads.googleads.v23.services.AssetsWithFieldType.verify|verify} messages.
                         * @param message AssetsWithFieldType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetsWithFieldType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetsWithFieldType message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetsWithFieldType.verify|verify} messages.
                         * @param message AssetsWithFieldType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetsWithFieldType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetsWithFieldType message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetsWithFieldType
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetsWithFieldType;

                        /**
                         * Decodes an AssetsWithFieldType message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetsWithFieldType
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetsWithFieldType;

                        /**
                         * Verifies an AssetsWithFieldType message.
                         * @param message Plain 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 AssetsWithFieldType message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetsWithFieldType
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetsWithFieldType;

                        /**
                         * Creates a plain object from an AssetsWithFieldType message. Also converts values to other types if specified.
                         * @param message AssetsWithFieldType
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetsWithFieldType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetsWithFieldType to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetsWithFieldType
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupAssetService */
                    class AdGroupAssetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupAssetService 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 AdGroupAssetService 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): AdGroupAssetService;

                        /**
                         * Calls MutateAdGroupAssets.
                         * @param request MutateAdGroupAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupAssetsResponse
                         */
                        public mutateAdGroupAssets(request: google.ads.googleads.v23.services.IMutateAdGroupAssetsRequest, callback: google.ads.googleads.v23.services.AdGroupAssetService.MutateAdGroupAssetsCallback): void;

                        /**
                         * Calls MutateAdGroupAssets.
                         * @param request MutateAdGroupAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupAssets(request: google.ads.googleads.v23.services.IMutateAdGroupAssetsRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupAssetsResponse>;
                    }

                    namespace AdGroupAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupAssetService|mutateAdGroupAssets}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupAssetsResponse
                         */
                        type MutateAdGroupAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupAssetsResponse) => void;
                    }

                    /** Properties of a MutateAdGroupAssetsRequest. */
                    interface IMutateAdGroupAssetsRequest {

                        /** MutateAdGroupAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupAssetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupAssetOperation[]|null);

                        /** MutateAdGroupAssetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupAssetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupAssetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupAssetsRequest. */
                    class MutateAdGroupAssetsRequest implements IMutateAdGroupAssetsRequest {

                        /**
                         * Constructs a new MutateAdGroupAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetsRequest);

                        /** MutateAdGroupAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupAssetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupAssetOperation[];

                        /** MutateAdGroupAssetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupAssetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupAssetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetsRequest): google.ads.googleads.v23.services.MutateAdGroupAssetsRequest;

                        /**
                         * Encodes the specified MutateAdGroupAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAssetsRequest;

                        /**
                         * Decodes a MutateAdGroupAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAssetsRequest;

                        /**
                         * Verifies a MutateAdGroupAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAssetsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAssetOperation. */
                    interface IAdGroupAssetOperation {

                        /** AdGroupAssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupAssetOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                        /** AdGroupAssetOperation update */
                        update?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                        /** AdGroupAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupAssetOperation. */
                    class AdGroupAssetOperation implements IAdGroupAssetOperation {

                        /**
                         * Constructs a new AdGroupAssetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupAssetOperation);

                        /** AdGroupAssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupAssetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                        /** AdGroupAssetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                        /** AdGroupAssetOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupAssetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdGroupAssetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAssetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupAssetOperation): google.ads.googleads.v23.services.AdGroupAssetOperation;

                        /**
                         * Encodes the specified AdGroupAssetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAssetOperation.verify|verify} messages.
                         * @param message AdGroupAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAssetOperation.verify|verify} messages.
                         * @param message AdGroupAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAssetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupAssetOperation;

                        /**
                         * Decodes an AdGroupAssetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupAssetOperation;

                        /**
                         * Verifies an AdGroupAssetOperation message.
                         * @param message Plain 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 AdGroupAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAssetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupAssetOperation;

                        /**
                         * Creates a plain object from an AdGroupAssetOperation message. Also converts values to other types if specified.
                         * @param message AdGroupAssetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupAssetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAssetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAssetsResponse. */
                    interface IMutateAdGroupAssetsResponse {

                        /** MutateAdGroupAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAssetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupAssetResult[]|null);
                    }

                    /** Represents a MutateAdGroupAssetsResponse. */
                    class MutateAdGroupAssetsResponse implements IMutateAdGroupAssetsResponse {

                        /**
                         * Constructs a new MutateAdGroupAssetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetsResponse);

                        /** MutateAdGroupAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAssetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupAssetResult[];

                        /**
                         * Creates a new MutateAdGroupAssetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAssetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetsResponse): google.ads.googleads.v23.services.MutateAdGroupAssetsResponse;

                        /**
                         * Encodes the specified MutateAdGroupAssetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAssetsResponse;

                        /**
                         * Decodes a MutateAdGroupAssetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAssetsResponse;

                        /**
                         * Verifies a MutateAdGroupAssetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAssetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAssetsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAssetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAssetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAssetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAssetResult. */
                    interface IMutateAdGroupAssetResult {

                        /** MutateAdGroupAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupAssetResult ad_group_asset */
                        ad_group_asset?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);
                    }

                    /** Represents a MutateAdGroupAssetResult. */
                    class MutateAdGroupAssetResult implements IMutateAdGroupAssetResult {

                        /**
                         * Constructs a new MutateAdGroupAssetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetResult);

                        /** MutateAdGroupAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupAssetResult ad_group_asset. */
                        public ad_group_asset?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                        /**
                         * Creates a new MutateAdGroupAssetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAssetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetResult): google.ads.googleads.v23.services.MutateAdGroupAssetResult;

                        /**
                         * Encodes the specified MutateAdGroupAssetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetResult.verify|verify} messages.
                         * @param message MutateAdGroupAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetResult.verify|verify} messages.
                         * @param message MutateAdGroupAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAssetResult;

                        /**
                         * Decodes a MutateAdGroupAssetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAssetResult;

                        /**
                         * Verifies a MutateAdGroupAssetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAssetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAssetResult;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAssetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAssetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAssetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupAssetSetService */
                    class AdGroupAssetSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupAssetSetService 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 AdGroupAssetSetService 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): AdGroupAssetSetService;

                        /**
                         * Calls MutateAdGroupAssetSets.
                         * @param request MutateAdGroupAssetSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupAssetSetsResponse
                         */
                        public mutateAdGroupAssetSets(request: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsRequest, callback: google.ads.googleads.v23.services.AdGroupAssetSetService.MutateAdGroupAssetSetsCallback): void;

                        /**
                         * Calls MutateAdGroupAssetSets.
                         * @param request MutateAdGroupAssetSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupAssetSets(request: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse>;
                    }

                    namespace AdGroupAssetSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupAssetSetService|mutateAdGroupAssetSets}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupAssetSetsResponse
                         */
                        type MutateAdGroupAssetSetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse) => void;
                    }

                    /** Properties of a MutateAdGroupAssetSetsRequest. */
                    interface IMutateAdGroupAssetSetsRequest {

                        /** MutateAdGroupAssetSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupAssetSetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupAssetSetOperation[]|null);

                        /** MutateAdGroupAssetSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupAssetSetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupAssetSetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupAssetSetsRequest. */
                    class MutateAdGroupAssetSetsRequest implements IMutateAdGroupAssetSetsRequest {

                        /**
                         * Constructs a new MutateAdGroupAssetSetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsRequest);

                        /** MutateAdGroupAssetSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupAssetSetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupAssetSetOperation[];

                        /** MutateAdGroupAssetSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupAssetSetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupAssetSetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupAssetSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAssetSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsRequest): google.ads.googleads.v23.services.MutateAdGroupAssetSetsRequest;

                        /**
                         * Encodes the specified MutateAdGroupAssetSetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetSetsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetSetsRequest.verify|verify} messages.
                         * @param message MutateAdGroupAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetSetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAssetSetsRequest;

                        /**
                         * Decodes a MutateAdGroupAssetSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAssetSetsRequest;

                        /**
                         * Verifies a MutateAdGroupAssetSetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAssetSetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAssetSetsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetSetsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAssetSetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAssetSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAssetSetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupAssetSetOperation. */
                    interface IAdGroupAssetSetOperation {

                        /** AdGroupAssetSetOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupAssetSet|null);

                        /** AdGroupAssetSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupAssetSetOperation. */
                    class AdGroupAssetSetOperation implements IAdGroupAssetSetOperation {

                        /**
                         * Constructs a new AdGroupAssetSetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupAssetSetOperation);

                        /** AdGroupAssetSetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupAssetSet|null);

                        /** AdGroupAssetSetOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupAssetSetOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AdGroupAssetSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAssetSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupAssetSetOperation): google.ads.googleads.v23.services.AdGroupAssetSetOperation;

                        /**
                         * Encodes the specified AdGroupAssetSetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAssetSetOperation.verify|verify} messages.
                         * @param message AdGroupAssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAssetSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupAssetSetOperation.verify|verify} messages.
                         * @param message AdGroupAssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAssetSetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupAssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupAssetSetOperation;

                        /**
                         * Decodes an AdGroupAssetSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupAssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupAssetSetOperation;

                        /**
                         * Verifies an AdGroupAssetSetOperation message.
                         * @param message Plain 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 AdGroupAssetSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupAssetSetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupAssetSetOperation;

                        /**
                         * Creates a plain object from an AdGroupAssetSetOperation message. Also converts values to other types if specified.
                         * @param message AdGroupAssetSetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupAssetSetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAssetSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupAssetSetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAssetSetsResponse. */
                    interface IMutateAdGroupAssetSetsResponse {

                        /** MutateAdGroupAssetSetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupAssetSetResult[]|null);

                        /** MutateAdGroupAssetSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAdGroupAssetSetsResponse. */
                    class MutateAdGroupAssetSetsResponse implements IMutateAdGroupAssetSetsResponse {

                        /**
                         * Constructs a new MutateAdGroupAssetSetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsResponse);

                        /** MutateAdGroupAssetSetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupAssetSetResult[];

                        /** MutateAdGroupAssetSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAdGroupAssetSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAssetSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsResponse): google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse;

                        /**
                         * Encodes the specified MutateAdGroupAssetSetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse.verify|verify} messages.
                         * @param message MutateAdGroupAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetSetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse;

                        /**
                         * Decodes a MutateAdGroupAssetSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse;

                        /**
                         * Verifies a MutateAdGroupAssetSetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAssetSetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetSetsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAssetSetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAssetSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAssetSetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupAssetSetResult. */
                    interface IMutateAdGroupAssetSetResult {

                        /** MutateAdGroupAssetSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupAssetSetResult ad_group_asset_set */
                        ad_group_asset_set?: (google.ads.googleads.v23.resources.IAdGroupAssetSet|null);
                    }

                    /** Represents a MutateAdGroupAssetSetResult. */
                    class MutateAdGroupAssetSetResult implements IMutateAdGroupAssetSetResult {

                        /**
                         * Constructs a new MutateAdGroupAssetSetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetSetResult);

                        /** MutateAdGroupAssetSetResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupAssetSetResult ad_group_asset_set. */
                        public ad_group_asset_set?: (google.ads.googleads.v23.resources.IAdGroupAssetSet|null);

                        /**
                         * Creates a new MutateAdGroupAssetSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupAssetSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupAssetSetResult): google.ads.googleads.v23.services.MutateAdGroupAssetSetResult;

                        /**
                         * Encodes the specified MutateAdGroupAssetSetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetSetResult.verify|verify} messages.
                         * @param message MutateAdGroupAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupAssetSetResult.verify|verify} messages.
                         * @param message MutateAdGroupAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetSetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupAssetSetResult;

                        /**
                         * Decodes a MutateAdGroupAssetSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupAssetSetResult;

                        /**
                         * Verifies a MutateAdGroupAssetSetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupAssetSetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupAssetSetResult;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetSetResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupAssetSetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupAssetSetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupAssetSetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupBidModifierService */
                    class AdGroupBidModifierService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupBidModifierService 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 AdGroupBidModifierService 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): AdGroupBidModifierService;

                        /**
                         * Calls MutateAdGroupBidModifiers.
                         * @param request MutateAdGroupBidModifiersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupBidModifiersResponse
                         */
                        public mutateAdGroupBidModifiers(request: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersRequest, callback: google.ads.googleads.v23.services.AdGroupBidModifierService.MutateAdGroupBidModifiersCallback): void;

                        /**
                         * Calls MutateAdGroupBidModifiers.
                         * @param request MutateAdGroupBidModifiersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupBidModifiers(request: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse>;
                    }

                    namespace AdGroupBidModifierService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupBidModifierService|mutateAdGroupBidModifiers}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupBidModifiersResponse
                         */
                        type MutateAdGroupBidModifiersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse) => void;
                    }

                    /** Properties of a MutateAdGroupBidModifiersRequest. */
                    interface IMutateAdGroupBidModifiersRequest {

                        /** MutateAdGroupBidModifiersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupBidModifiersRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupBidModifierOperation[]|null);

                        /** MutateAdGroupBidModifiersRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupBidModifiersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupBidModifiersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupBidModifiersRequest. */
                    class MutateAdGroupBidModifiersRequest implements IMutateAdGroupBidModifiersRequest {

                        /**
                         * Constructs a new MutateAdGroupBidModifiersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersRequest);

                        /** MutateAdGroupBidModifiersRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupBidModifiersRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupBidModifierOperation[];

                        /** MutateAdGroupBidModifiersRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupBidModifiersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupBidModifiersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupBidModifiersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupBidModifiersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersRequest): google.ads.googleads.v23.services.MutateAdGroupBidModifiersRequest;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupBidModifiersRequest.verify|verify} messages.
                         * @param message MutateAdGroupBidModifiersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupBidModifiersRequest.verify|verify} messages.
                         * @param message MutateAdGroupBidModifiersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupBidModifiersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupBidModifiersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupBidModifiersRequest;

                        /**
                         * Decodes a MutateAdGroupBidModifiersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupBidModifiersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupBidModifiersRequest;

                        /**
                         * Verifies a MutateAdGroupBidModifiersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupBidModifiersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupBidModifiersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupBidModifiersRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupBidModifiersRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupBidModifiersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupBidModifiersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupBidModifiersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupBidModifiersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupBidModifierOperation. */
                    interface IAdGroupBidModifierOperation {

                        /** AdGroupBidModifierOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupBidModifierOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                        /** AdGroupBidModifierOperation update */
                        update?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                        /** AdGroupBidModifierOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupBidModifierOperation. */
                    class AdGroupBidModifierOperation implements IAdGroupBidModifierOperation {

                        /**
                         * Constructs a new AdGroupBidModifierOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupBidModifierOperation);

                        /** AdGroupBidModifierOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupBidModifierOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                        /** AdGroupBidModifierOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                        /** AdGroupBidModifierOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupBidModifierOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdGroupBidModifierOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupBidModifierOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupBidModifierOperation): google.ads.googleads.v23.services.AdGroupBidModifierOperation;

                        /**
                         * Encodes the specified AdGroupBidModifierOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupBidModifierOperation.verify|verify} messages.
                         * @param message AdGroupBidModifierOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupBidModifierOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupBidModifierOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupBidModifierOperation.verify|verify} messages.
                         * @param message AdGroupBidModifierOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupBidModifierOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupBidModifierOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupBidModifierOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupBidModifierOperation;

                        /**
                         * Decodes an AdGroupBidModifierOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupBidModifierOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupBidModifierOperation;

                        /**
                         * Verifies an AdGroupBidModifierOperation message.
                         * @param message Plain 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 AdGroupBidModifierOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupBidModifierOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupBidModifierOperation;

                        /**
                         * Creates a plain object from an AdGroupBidModifierOperation message. Also converts values to other types if specified.
                         * @param message AdGroupBidModifierOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupBidModifierOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupBidModifierOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupBidModifierOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupBidModifiersResponse. */
                    interface IMutateAdGroupBidModifiersResponse {

                        /** MutateAdGroupBidModifiersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupBidModifiersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult[]|null);
                    }

                    /** Represents a MutateAdGroupBidModifiersResponse. */
                    class MutateAdGroupBidModifiersResponse implements IMutateAdGroupBidModifiersResponse {

                        /**
                         * Constructs a new MutateAdGroupBidModifiersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersResponse);

                        /** MutateAdGroupBidModifiersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupBidModifiersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult[];

                        /**
                         * Creates a new MutateAdGroupBidModifiersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupBidModifiersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersResponse): google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse.verify|verify} messages.
                         * @param message MutateAdGroupBidModifiersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse.verify|verify} messages.
                         * @param message MutateAdGroupBidModifiersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupBidModifiersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupBidModifiersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupBidModifiersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse;

                        /**
                         * Decodes a MutateAdGroupBidModifiersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupBidModifiersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse;

                        /**
                         * Verifies a MutateAdGroupBidModifiersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupBidModifiersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupBidModifiersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupBidModifiersResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupBidModifiersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupBidModifiersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupBidModifiersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupBidModifiersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupBidModifierResult. */
                    interface IMutateAdGroupBidModifierResult {

                        /** MutateAdGroupBidModifierResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupBidModifierResult ad_group_bid_modifier */
                        ad_group_bid_modifier?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);
                    }

                    /** Represents a MutateAdGroupBidModifierResult. */
                    class MutateAdGroupBidModifierResult implements IMutateAdGroupBidModifierResult {

                        /**
                         * Constructs a new MutateAdGroupBidModifierResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult);

                        /** MutateAdGroupBidModifierResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupBidModifierResult ad_group_bid_modifier. */
                        public ad_group_bid_modifier?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                        /**
                         * Creates a new MutateAdGroupBidModifierResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupBidModifierResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult): google.ads.googleads.v23.services.MutateAdGroupBidModifierResult;

                        /**
                         * Encodes the specified MutateAdGroupBidModifierResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupBidModifierResult.verify|verify} messages.
                         * @param message MutateAdGroupBidModifierResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupBidModifierResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupBidModifierResult.verify|verify} messages.
                         * @param message MutateAdGroupBidModifierResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupBidModifierResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupBidModifierResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupBidModifierResult;

                        /**
                         * Decodes a MutateAdGroupBidModifierResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupBidModifierResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupBidModifierResult;

                        /**
                         * Verifies a MutateAdGroupBidModifierResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupBidModifierResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupBidModifierResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupBidModifierResult;

                        /**
                         * Creates a plain object from a MutateAdGroupBidModifierResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupBidModifierResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupBidModifierResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupBidModifierResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupBidModifierResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupCriterionCustomizerService */
                    class AdGroupCriterionCustomizerService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupCriterionCustomizerService 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 AdGroupCriterionCustomizerService 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): AdGroupCriterionCustomizerService;

                        /**
                         * Calls MutateAdGroupCriterionCustomizers.
                         * @param request MutateAdGroupCriterionCustomizersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupCriterionCustomizersResponse
                         */
                        public mutateAdGroupCriterionCustomizers(request: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersRequest, callback: google.ads.googleads.v23.services.AdGroupCriterionCustomizerService.MutateAdGroupCriterionCustomizersCallback): void;

                        /**
                         * Calls MutateAdGroupCriterionCustomizers.
                         * @param request MutateAdGroupCriterionCustomizersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupCriterionCustomizers(request: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse>;
                    }

                    namespace AdGroupCriterionCustomizerService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupCriterionCustomizerService|mutateAdGroupCriterionCustomizers}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupCriterionCustomizersResponse
                         */
                        type MutateAdGroupCriterionCustomizersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse) => void;
                    }

                    /** Properties of a MutateAdGroupCriterionCustomizersRequest. */
                    interface IMutateAdGroupCriterionCustomizersRequest {

                        /** MutateAdGroupCriterionCustomizersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupCriterionCustomizersRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation[]|null);

                        /** MutateAdGroupCriterionCustomizersRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupCriterionCustomizersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupCriterionCustomizersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupCriterionCustomizersRequest. */
                    class MutateAdGroupCriterionCustomizersRequest implements IMutateAdGroupCriterionCustomizersRequest {

                        /**
                         * Constructs a new MutateAdGroupCriterionCustomizersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersRequest);

                        /** MutateAdGroupCriterionCustomizersRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupCriterionCustomizersRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation[];

                        /** MutateAdGroupCriterionCustomizersRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupCriterionCustomizersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupCriterionCustomizersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupCriterionCustomizersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriterionCustomizersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersRequest): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersRequest;

                        /**
                         * Encodes the specified MutateAdGroupCriterionCustomizersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersRequest.verify|verify} messages.
                         * @param message MutateAdGroupCriterionCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionCustomizersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersRequest.verify|verify} messages.
                         * @param message MutateAdGroupCriterionCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionCustomizersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriterionCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersRequest;

                        /**
                         * Decodes a MutateAdGroupCriterionCustomizersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriterionCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersRequest;

                        /**
                         * Verifies a MutateAdGroupCriterionCustomizersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionCustomizersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriterionCustomizersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionCustomizersRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriterionCustomizersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionCustomizersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriterionCustomizersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCriterionCustomizerOperation. */
                    interface IAdGroupCriterionCustomizerOperation {

                        /** AdGroupCriterionCustomizerOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer|null);

                        /** AdGroupCriterionCustomizerOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupCriterionCustomizerOperation. */
                    class AdGroupCriterionCustomizerOperation implements IAdGroupCriterionCustomizerOperation {

                        /**
                         * Constructs a new AdGroupCriterionCustomizerOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation);

                        /** AdGroupCriterionCustomizerOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer|null);

                        /** AdGroupCriterionCustomizerOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupCriterionCustomizerOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AdGroupCriterionCustomizerOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionCustomizerOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation): google.ads.googleads.v23.services.AdGroupCriterionCustomizerOperation;

                        /**
                         * Encodes the specified AdGroupCriterionCustomizerOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCriterionCustomizerOperation.verify|verify} messages.
                         * @param message AdGroupCriterionCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionCustomizerOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCriterionCustomizerOperation.verify|verify} messages.
                         * @param message AdGroupCriterionCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionCustomizerOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupCriterionCustomizerOperation;

                        /**
                         * Decodes an AdGroupCriterionCustomizerOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupCriterionCustomizerOperation;

                        /**
                         * Verifies an AdGroupCriterionCustomizerOperation message.
                         * @param message Plain 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 AdGroupCriterionCustomizerOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionCustomizerOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupCriterionCustomizerOperation;

                        /**
                         * Creates a plain object from an AdGroupCriterionCustomizerOperation message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionCustomizerOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupCriterionCustomizerOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionCustomizerOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionCustomizerOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCriterionCustomizersResponse. */
                    interface IMutateAdGroupCriterionCustomizersResponse {

                        /** MutateAdGroupCriterionCustomizersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult[]|null);

                        /** MutateAdGroupCriterionCustomizersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAdGroupCriterionCustomizersResponse. */
                    class MutateAdGroupCriterionCustomizersResponse implements IMutateAdGroupCriterionCustomizersResponse {

                        /**
                         * Constructs a new MutateAdGroupCriterionCustomizersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersResponse);

                        /** MutateAdGroupCriterionCustomizersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult[];

                        /** MutateAdGroupCriterionCustomizersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAdGroupCriterionCustomizersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriterionCustomizersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersResponse): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse;

                        /**
                         * Encodes the specified MutateAdGroupCriterionCustomizersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse.verify|verify} messages.
                         * @param message MutateAdGroupCriterionCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionCustomizersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse.verify|verify} messages.
                         * @param message MutateAdGroupCriterionCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionCustomizersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriterionCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse;

                        /**
                         * Decodes a MutateAdGroupCriterionCustomizersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriterionCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse;

                        /**
                         * Verifies a MutateAdGroupCriterionCustomizersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionCustomizersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriterionCustomizersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionCustomizersResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriterionCustomizersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionCustomizersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriterionCustomizersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCriterionCustomizerResult. */
                    interface IMutateAdGroupCriterionCustomizerResult {

                        /** MutateAdGroupCriterionCustomizerResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupCriterionCustomizerResult ad_group_criterion_customizer */
                        ad_group_criterion_customizer?: (google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer|null);
                    }

                    /** Represents a MutateAdGroupCriterionCustomizerResult. */
                    class MutateAdGroupCriterionCustomizerResult implements IMutateAdGroupCriterionCustomizerResult {

                        /**
                         * Constructs a new MutateAdGroupCriterionCustomizerResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult);

                        /** MutateAdGroupCriterionCustomizerResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupCriterionCustomizerResult ad_group_criterion_customizer. */
                        public ad_group_criterion_customizer?: (google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer|null);

                        /**
                         * Creates a new MutateAdGroupCriterionCustomizerResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriterionCustomizerResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizerResult;

                        /**
                         * Encodes the specified MutateAdGroupCriterionCustomizerResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizerResult.verify|verify} messages.
                         * @param message MutateAdGroupCriterionCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionCustomizerResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizerResult.verify|verify} messages.
                         * @param message MutateAdGroupCriterionCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionCustomizerResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriterionCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizerResult;

                        /**
                         * Decodes a MutateAdGroupCriterionCustomizerResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriterionCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizerResult;

                        /**
                         * Verifies a MutateAdGroupCriterionCustomizerResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionCustomizerResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriterionCustomizerResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizerResult;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionCustomizerResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriterionCustomizerResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriterionCustomizerResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionCustomizerResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriterionCustomizerResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupCriterionLabelService */
                    class AdGroupCriterionLabelService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupCriterionLabelService 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 AdGroupCriterionLabelService 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): AdGroupCriterionLabelService;

                        /**
                         * Calls MutateAdGroupCriterionLabels.
                         * @param request MutateAdGroupCriterionLabelsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupCriterionLabelsResponse
                         */
                        public mutateAdGroupCriterionLabels(request: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsRequest, callback: google.ads.googleads.v23.services.AdGroupCriterionLabelService.MutateAdGroupCriterionLabelsCallback): void;

                        /**
                         * Calls MutateAdGroupCriterionLabels.
                         * @param request MutateAdGroupCriterionLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupCriterionLabels(request: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse>;
                    }

                    namespace AdGroupCriterionLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupCriterionLabelService|mutateAdGroupCriterionLabels}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupCriterionLabelsResponse
                         */
                        type MutateAdGroupCriterionLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse) => void;
                    }

                    /** Properties of a MutateAdGroupCriterionLabelsRequest. */
                    interface IMutateAdGroupCriterionLabelsRequest {

                        /** MutateAdGroupCriterionLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupCriterionLabelsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation[]|null);

                        /** MutateAdGroupCriterionLabelsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupCriterionLabelsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAdGroupCriterionLabelsRequest. */
                    class MutateAdGroupCriterionLabelsRequest implements IMutateAdGroupCriterionLabelsRequest {

                        /**
                         * Constructs a new MutateAdGroupCriterionLabelsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsRequest);

                        /** MutateAdGroupCriterionLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupCriterionLabelsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation[];

                        /** MutateAdGroupCriterionLabelsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupCriterionLabelsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAdGroupCriterionLabelsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriterionLabelsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsRequest): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsRequest;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsRequest.verify|verify} messages.
                         * @param message MutateAdGroupCriterionLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsRequest.verify|verify} messages.
                         * @param message MutateAdGroupCriterionLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriterionLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsRequest;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriterionLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsRequest;

                        /**
                         * Verifies a MutateAdGroupCriterionLabelsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriterionLabelsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionLabelsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriterionLabelsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriterionLabelsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCriterionLabelOperation. */
                    interface IAdGroupCriterionLabelOperation {

                        /** AdGroupCriterionLabelOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupCriterionLabel|null);

                        /** AdGroupCriterionLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupCriterionLabelOperation. */
                    class AdGroupCriterionLabelOperation implements IAdGroupCriterionLabelOperation {

                        /**
                         * Constructs a new AdGroupCriterionLabelOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation);

                        /** AdGroupCriterionLabelOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupCriterionLabel|null);

                        /** AdGroupCriterionLabelOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupCriterionLabelOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AdGroupCriterionLabelOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionLabelOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation): google.ads.googleads.v23.services.AdGroupCriterionLabelOperation;

                        /**
                         * Encodes the specified AdGroupCriterionLabelOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCriterionLabelOperation.verify|verify} messages.
                         * @param message AdGroupCriterionLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCriterionLabelOperation.verify|verify} messages.
                         * @param message AdGroupCriterionLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionLabelOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupCriterionLabelOperation;

                        /**
                         * Decodes an AdGroupCriterionLabelOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupCriterionLabelOperation;

                        /**
                         * Verifies an AdGroupCriterionLabelOperation message.
                         * @param message Plain 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 AdGroupCriterionLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionLabelOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupCriterionLabelOperation;

                        /**
                         * Creates a plain object from an AdGroupCriterionLabelOperation message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionLabelOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupCriterionLabelOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionLabelOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCriterionLabelsResponse. */
                    interface IMutateAdGroupCriterionLabelsResponse {

                        /** MutateAdGroupCriterionLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriterionLabelsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult[]|null);
                    }

                    /** Represents a MutateAdGroupCriterionLabelsResponse. */
                    class MutateAdGroupCriterionLabelsResponse implements IMutateAdGroupCriterionLabelsResponse {

                        /**
                         * Constructs a new MutateAdGroupCriterionLabelsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsResponse);

                        /** MutateAdGroupCriterionLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriterionLabelsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult[];

                        /**
                         * Creates a new MutateAdGroupCriterionLabelsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriterionLabelsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsResponse): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse.verify|verify} messages.
                         * @param message MutateAdGroupCriterionLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse.verify|verify} messages.
                         * @param message MutateAdGroupCriterionLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriterionLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriterionLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse;

                        /**
                         * Verifies a MutateAdGroupCriterionLabelsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriterionLabelsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionLabelsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriterionLabelsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriterionLabelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriterionLabelsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCriterionLabelResult. */
                    interface IMutateAdGroupCriterionLabelResult {

                        /** MutateAdGroupCriterionLabelResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateAdGroupCriterionLabelResult. */
                    class MutateAdGroupCriterionLabelResult implements IMutateAdGroupCriterionLabelResult {

                        /**
                         * Constructs a new MutateAdGroupCriterionLabelResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult);

                        /** MutateAdGroupCriterionLabelResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateAdGroupCriterionLabelResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriterionLabelResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelResult;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionLabelResult.verify|verify} messages.
                         * @param message MutateAdGroupCriterionLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionLabelResult.verify|verify} messages.
                         * @param message MutateAdGroupCriterionLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriterionLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelResult;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriterionLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelResult;

                        /**
                         * Verifies a MutateAdGroupCriterionLabelResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriterionLabelResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriterionLabelResult;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionLabelResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriterionLabelResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriterionLabelResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriterionLabelResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupCriterionService */
                    class AdGroupCriterionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupCriterionService 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 AdGroupCriterionService 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): AdGroupCriterionService;

                        /**
                         * Calls MutateAdGroupCriteria.
                         * @param request MutateAdGroupCriteriaRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupCriteriaResponse
                         */
                        public mutateAdGroupCriteria(request: google.ads.googleads.v23.services.IMutateAdGroupCriteriaRequest, callback: google.ads.googleads.v23.services.AdGroupCriterionService.MutateAdGroupCriteriaCallback): void;

                        /**
                         * Calls MutateAdGroupCriteria.
                         * @param request MutateAdGroupCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupCriteria(request: google.ads.googleads.v23.services.IMutateAdGroupCriteriaRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse>;
                    }

                    namespace AdGroupCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupCriterionService|mutateAdGroupCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupCriteriaResponse
                         */
                        type MutateAdGroupCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse) => void;
                    }

                    /** Properties of a MutateAdGroupCriteriaRequest. */
                    interface IMutateAdGroupCriteriaRequest {

                        /** MutateAdGroupCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupCriteriaRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupCriterionOperation[]|null);

                        /** MutateAdGroupCriteriaRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupCriteriaRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupCriteriaRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupCriteriaRequest. */
                    class MutateAdGroupCriteriaRequest implements IMutateAdGroupCriteriaRequest {

                        /**
                         * Constructs a new MutateAdGroupCriteriaRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriteriaRequest);

                        /** MutateAdGroupCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupCriteriaRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupCriterionOperation[];

                        /** MutateAdGroupCriteriaRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupCriteriaRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupCriteriaRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupCriteriaRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriteriaRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriteriaRequest): google.ads.googleads.v23.services.MutateAdGroupCriteriaRequest;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriteriaRequest.verify|verify} messages.
                         * @param message MutateAdGroupCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriteriaRequest.verify|verify} messages.
                         * @param message MutateAdGroupCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriteriaRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriteriaRequest;

                        /**
                         * Decodes a MutateAdGroupCriteriaRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriteriaRequest;

                        /**
                         * Verifies a MutateAdGroupCriteriaRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriteriaRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupCriteriaRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriteriaRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriteriaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriteriaRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCriterionOperation. */
                    interface IAdGroupCriterionOperation {

                        /** AdGroupCriterionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupCriterionOperation exempt_policy_violation_keys */
                        exempt_policy_violation_keys?: (google.ads.googleads.v23.common.IPolicyViolationKey[]|null);

                        /** AdGroupCriterionOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                        /** AdGroupCriterionOperation update */
                        update?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                        /** AdGroupCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupCriterionOperation. */
                    class AdGroupCriterionOperation implements IAdGroupCriterionOperation {

                        /**
                         * Constructs a new AdGroupCriterionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupCriterionOperation);

                        /** AdGroupCriterionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupCriterionOperation exempt_policy_violation_keys. */
                        public exempt_policy_violation_keys: google.ads.googleads.v23.common.IPolicyViolationKey[];

                        /** AdGroupCriterionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                        /** AdGroupCriterionOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                        /** AdGroupCriterionOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupCriterionOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdGroupCriterionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupCriterionOperation): google.ads.googleads.v23.services.AdGroupCriterionOperation;

                        /**
                         * Encodes the specified AdGroupCriterionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCriterionOperation.verify|verify} messages.
                         * @param message AdGroupCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCriterionOperation.verify|verify} messages.
                         * @param message AdGroupCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupCriterionOperation;

                        /**
                         * Decodes an AdGroupCriterionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupCriterionOperation;

                        /**
                         * Verifies an AdGroupCriterionOperation message.
                         * @param message Plain 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 AdGroupCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCriterionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupCriterionOperation;

                        /**
                         * Creates a plain object from an AdGroupCriterionOperation message. Also converts values to other types if specified.
                         * @param message AdGroupCriterionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupCriterionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCriterionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCriteriaResponse. */
                    interface IMutateAdGroupCriteriaResponse {

                        /** MutateAdGroupCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriteriaResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionResult[]|null);
                    }

                    /** Represents a MutateAdGroupCriteriaResponse. */
                    class MutateAdGroupCriteriaResponse implements IMutateAdGroupCriteriaResponse {

                        /**
                         * Constructs a new MutateAdGroupCriteriaResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriteriaResponse);

                        /** MutateAdGroupCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriteriaResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupCriterionResult[];

                        /**
                         * Creates a new MutateAdGroupCriteriaResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriteriaResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriteriaResponse): google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse.verify|verify} messages.
                         * @param message MutateAdGroupCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse.verify|verify} messages.
                         * @param message MutateAdGroupCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriteriaResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse;

                        /**
                         * Decodes a MutateAdGroupCriteriaResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse;

                        /**
                         * Verifies a MutateAdGroupCriteriaResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriteriaResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupCriteriaResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriteriaResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriteriaResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriteriaResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCriterionResult. */
                    interface IMutateAdGroupCriterionResult {

                        /** MutateAdGroupCriterionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupCriterionResult ad_group_criterion */
                        ad_group_criterion?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);
                    }

                    /** Represents a MutateAdGroupCriterionResult. */
                    class MutateAdGroupCriterionResult implements IMutateAdGroupCriterionResult {

                        /**
                         * Constructs a new MutateAdGroupCriterionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionResult);

                        /** MutateAdGroupCriterionResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupCriterionResult ad_group_criterion. */
                        public ad_group_criterion?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                        /**
                         * Creates a new MutateAdGroupCriterionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCriterionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCriterionResult): google.ads.googleads.v23.services.MutateAdGroupCriterionResult;

                        /**
                         * Encodes the specified MutateAdGroupCriterionResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionResult.verify|verify} messages.
                         * @param message MutateAdGroupCriterionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCriterionResult.verify|verify} messages.
                         * @param message MutateAdGroupCriterionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCriterionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCriterionResult;

                        /**
                         * Decodes a MutateAdGroupCriterionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCriterionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCriterionResult;

                        /**
                         * Verifies a MutateAdGroupCriterionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCriterionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCriterionResult;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCriterionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCriterionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCriterionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupCustomizerService */
                    class AdGroupCustomizerService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupCustomizerService 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 AdGroupCustomizerService 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): AdGroupCustomizerService;

                        /**
                         * Calls MutateAdGroupCustomizers.
                         * @param request MutateAdGroupCustomizersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupCustomizersResponse
                         */
                        public mutateAdGroupCustomizers(request: google.ads.googleads.v23.services.IMutateAdGroupCustomizersRequest, callback: google.ads.googleads.v23.services.AdGroupCustomizerService.MutateAdGroupCustomizersCallback): void;

                        /**
                         * Calls MutateAdGroupCustomizers.
                         * @param request MutateAdGroupCustomizersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupCustomizers(request: google.ads.googleads.v23.services.IMutateAdGroupCustomizersRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse>;
                    }

                    namespace AdGroupCustomizerService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupCustomizerService|mutateAdGroupCustomizers}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupCustomizersResponse
                         */
                        type MutateAdGroupCustomizersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse) => void;
                    }

                    /** Properties of a MutateAdGroupCustomizersRequest. */
                    interface IMutateAdGroupCustomizersRequest {

                        /** MutateAdGroupCustomizersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupCustomizersRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupCustomizerOperation[]|null);

                        /** MutateAdGroupCustomizersRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupCustomizersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupCustomizersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupCustomizersRequest. */
                    class MutateAdGroupCustomizersRequest implements IMutateAdGroupCustomizersRequest {

                        /**
                         * Constructs a new MutateAdGroupCustomizersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCustomizersRequest);

                        /** MutateAdGroupCustomizersRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupCustomizersRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupCustomizerOperation[];

                        /** MutateAdGroupCustomizersRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupCustomizersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupCustomizersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupCustomizersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCustomizersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCustomizersRequest): google.ads.googleads.v23.services.MutateAdGroupCustomizersRequest;

                        /**
                         * Encodes the specified MutateAdGroupCustomizersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCustomizersRequest.verify|verify} messages.
                         * @param message MutateAdGroupCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCustomizersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCustomizersRequest.verify|verify} messages.
                         * @param message MutateAdGroupCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCustomizersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCustomizersRequest;

                        /**
                         * Decodes a MutateAdGroupCustomizersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCustomizersRequest;

                        /**
                         * Verifies a MutateAdGroupCustomizersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCustomizersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCustomizersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCustomizersRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupCustomizersRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCustomizersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCustomizersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCustomizersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCustomizersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupCustomizerOperation. */
                    interface IAdGroupCustomizerOperation {

                        /** AdGroupCustomizerOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupCustomizer|null);

                        /** AdGroupCustomizerOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupCustomizerOperation. */
                    class AdGroupCustomizerOperation implements IAdGroupCustomizerOperation {

                        /**
                         * Constructs a new AdGroupCustomizerOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupCustomizerOperation);

                        /** AdGroupCustomizerOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupCustomizer|null);

                        /** AdGroupCustomizerOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupCustomizerOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AdGroupCustomizerOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCustomizerOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupCustomizerOperation): google.ads.googleads.v23.services.AdGroupCustomizerOperation;

                        /**
                         * Encodes the specified AdGroupCustomizerOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCustomizerOperation.verify|verify} messages.
                         * @param message AdGroupCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCustomizerOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupCustomizerOperation.verify|verify} messages.
                         * @param message AdGroupCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCustomizerOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupCustomizerOperation;

                        /**
                         * Decodes an AdGroupCustomizerOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupCustomizerOperation;

                        /**
                         * Verifies an AdGroupCustomizerOperation message.
                         * @param message Plain 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 AdGroupCustomizerOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupCustomizerOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupCustomizerOperation;

                        /**
                         * Creates a plain object from an AdGroupCustomizerOperation message. Also converts values to other types if specified.
                         * @param message AdGroupCustomizerOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupCustomizerOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCustomizerOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupCustomizerOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCustomizersResponse. */
                    interface IMutateAdGroupCustomizersResponse {

                        /** MutateAdGroupCustomizersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult[]|null);

                        /** MutateAdGroupCustomizersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAdGroupCustomizersResponse. */
                    class MutateAdGroupCustomizersResponse implements IMutateAdGroupCustomizersResponse {

                        /**
                         * Constructs a new MutateAdGroupCustomizersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCustomizersResponse);

                        /** MutateAdGroupCustomizersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult[];

                        /** MutateAdGroupCustomizersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAdGroupCustomizersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCustomizersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCustomizersResponse): google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse;

                        /**
                         * Encodes the specified MutateAdGroupCustomizersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse.verify|verify} messages.
                         * @param message MutateAdGroupCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCustomizersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse.verify|verify} messages.
                         * @param message MutateAdGroupCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCustomizersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse;

                        /**
                         * Decodes a MutateAdGroupCustomizersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse;

                        /**
                         * Verifies a MutateAdGroupCustomizersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCustomizersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCustomizersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupCustomizersResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCustomizersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCustomizersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCustomizersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCustomizersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupCustomizerResult. */
                    interface IMutateAdGroupCustomizerResult {

                        /** MutateAdGroupCustomizerResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupCustomizerResult ad_group_customizer */
                        ad_group_customizer?: (google.ads.googleads.v23.resources.IAdGroupCustomizer|null);
                    }

                    /** Represents a MutateAdGroupCustomizerResult. */
                    class MutateAdGroupCustomizerResult implements IMutateAdGroupCustomizerResult {

                        /**
                         * Constructs a new MutateAdGroupCustomizerResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult);

                        /** MutateAdGroupCustomizerResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupCustomizerResult ad_group_customizer. */
                        public ad_group_customizer?: (google.ads.googleads.v23.resources.IAdGroupCustomizer|null);

                        /**
                         * Creates a new MutateAdGroupCustomizerResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupCustomizerResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult): google.ads.googleads.v23.services.MutateAdGroupCustomizerResult;

                        /**
                         * Encodes the specified MutateAdGroupCustomizerResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCustomizerResult.verify|verify} messages.
                         * @param message MutateAdGroupCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCustomizerResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupCustomizerResult.verify|verify} messages.
                         * @param message MutateAdGroupCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCustomizerResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupCustomizerResult;

                        /**
                         * Decodes a MutateAdGroupCustomizerResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupCustomizerResult;

                        /**
                         * Verifies a MutateAdGroupCustomizerResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCustomizerResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupCustomizerResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupCustomizerResult;

                        /**
                         * Creates a plain object from a MutateAdGroupCustomizerResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupCustomizerResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupCustomizerResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCustomizerResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupCustomizerResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupLabelService */
                    class AdGroupLabelService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupLabelService 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 AdGroupLabelService 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): AdGroupLabelService;

                        /**
                         * Calls MutateAdGroupLabels.
                         * @param request MutateAdGroupLabelsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupLabelsResponse
                         */
                        public mutateAdGroupLabels(request: google.ads.googleads.v23.services.IMutateAdGroupLabelsRequest, callback: google.ads.googleads.v23.services.AdGroupLabelService.MutateAdGroupLabelsCallback): void;

                        /**
                         * Calls MutateAdGroupLabels.
                         * @param request MutateAdGroupLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupLabels(request: google.ads.googleads.v23.services.IMutateAdGroupLabelsRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupLabelsResponse>;
                    }

                    namespace AdGroupLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupLabelService|mutateAdGroupLabels}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupLabelsResponse
                         */
                        type MutateAdGroupLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupLabelsResponse) => void;
                    }

                    /** Properties of a MutateAdGroupLabelsRequest. */
                    interface IMutateAdGroupLabelsRequest {

                        /** MutateAdGroupLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupLabelsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupLabelOperation[]|null);

                        /** MutateAdGroupLabelsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupLabelsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAdGroupLabelsRequest. */
                    class MutateAdGroupLabelsRequest implements IMutateAdGroupLabelsRequest {

                        /**
                         * Constructs a new MutateAdGroupLabelsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupLabelsRequest);

                        /** MutateAdGroupLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupLabelsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupLabelOperation[];

                        /** MutateAdGroupLabelsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupLabelsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAdGroupLabelsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupLabelsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupLabelsRequest): google.ads.googleads.v23.services.MutateAdGroupLabelsRequest;

                        /**
                         * Encodes the specified MutateAdGroupLabelsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupLabelsRequest.verify|verify} messages.
                         * @param message MutateAdGroupLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupLabelsRequest.verify|verify} messages.
                         * @param message MutateAdGroupLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupLabelsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupLabelsRequest;

                        /**
                         * Decodes a MutateAdGroupLabelsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupLabelsRequest;

                        /**
                         * Verifies a MutateAdGroupLabelsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupLabelsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupLabelsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupLabelsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupLabelsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupLabelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupLabelsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupLabelOperation. */
                    interface IAdGroupLabelOperation {

                        /** AdGroupLabelOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroupLabel|null);

                        /** AdGroupLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupLabelOperation. */
                    class AdGroupLabelOperation implements IAdGroupLabelOperation {

                        /**
                         * Constructs a new AdGroupLabelOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupLabelOperation);

                        /** AdGroupLabelOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroupLabel|null);

                        /** AdGroupLabelOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupLabelOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AdGroupLabelOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupLabelOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupLabelOperation): google.ads.googleads.v23.services.AdGroupLabelOperation;

                        /**
                         * Encodes the specified AdGroupLabelOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupLabelOperation.verify|verify} messages.
                         * @param message AdGroupLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupLabelOperation.verify|verify} messages.
                         * @param message AdGroupLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupLabelOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupLabelOperation;

                        /**
                         * Decodes an AdGroupLabelOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupLabelOperation;

                        /**
                         * Verifies an AdGroupLabelOperation message.
                         * @param message Plain 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 AdGroupLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupLabelOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupLabelOperation;

                        /**
                         * Creates a plain object from an AdGroupLabelOperation message. Also converts values to other types if specified.
                         * @param message AdGroupLabelOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupLabelOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupLabelOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupLabelsResponse. */
                    interface IMutateAdGroupLabelsResponse {

                        /** MutateAdGroupLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupLabelsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupLabelResult[]|null);
                    }

                    /** Represents a MutateAdGroupLabelsResponse. */
                    class MutateAdGroupLabelsResponse implements IMutateAdGroupLabelsResponse {

                        /**
                         * Constructs a new MutateAdGroupLabelsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupLabelsResponse);

                        /** MutateAdGroupLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupLabelsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupLabelResult[];

                        /**
                         * Creates a new MutateAdGroupLabelsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupLabelsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupLabelsResponse): google.ads.googleads.v23.services.MutateAdGroupLabelsResponse;

                        /**
                         * Encodes the specified MutateAdGroupLabelsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupLabelsResponse.verify|verify} messages.
                         * @param message MutateAdGroupLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupLabelsResponse.verify|verify} messages.
                         * @param message MutateAdGroupLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupLabelsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupLabelsResponse;

                        /**
                         * Decodes a MutateAdGroupLabelsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupLabelsResponse;

                        /**
                         * Verifies a MutateAdGroupLabelsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupLabelsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupLabelsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupLabelsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupLabelsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupLabelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupLabelsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupLabelResult. */
                    interface IMutateAdGroupLabelResult {

                        /** MutateAdGroupLabelResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateAdGroupLabelResult. */
                    class MutateAdGroupLabelResult implements IMutateAdGroupLabelResult {

                        /**
                         * Constructs a new MutateAdGroupLabelResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupLabelResult);

                        /** MutateAdGroupLabelResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateAdGroupLabelResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupLabelResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupLabelResult): google.ads.googleads.v23.services.MutateAdGroupLabelResult;

                        /**
                         * Encodes the specified MutateAdGroupLabelResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupLabelResult.verify|verify} messages.
                         * @param message MutateAdGroupLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupLabelResult.verify|verify} messages.
                         * @param message MutateAdGroupLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupLabelResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupLabelResult;

                        /**
                         * Decodes a MutateAdGroupLabelResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupLabelResult;

                        /**
                         * Verifies a MutateAdGroupLabelResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupLabelResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupLabelResult;

                        /**
                         * Creates a plain object from a MutateAdGroupLabelResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupLabelResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupLabelResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupLabelResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdGroupService */
                    class AdGroupService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupService 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 AdGroupService 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): AdGroupService;

                        /**
                         * Calls MutateAdGroups.
                         * @param request MutateAdGroupsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupsResponse
                         */
                        public mutateAdGroups(request: google.ads.googleads.v23.services.IMutateAdGroupsRequest, callback: google.ads.googleads.v23.services.AdGroupService.MutateAdGroupsCallback): void;

                        /**
                         * Calls MutateAdGroups.
                         * @param request MutateAdGroupsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroups(request: google.ads.googleads.v23.services.IMutateAdGroupsRequest): Promise<google.ads.googleads.v23.services.MutateAdGroupsResponse>;
                    }

                    namespace AdGroupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdGroupService|mutateAdGroups}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupsResponse
                         */
                        type MutateAdGroupsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdGroupsResponse) => void;
                    }

                    /** Properties of a MutateAdGroupsRequest. */
                    interface IMutateAdGroupsRequest {

                        /** MutateAdGroupsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdGroupOperation[]|null);

                        /** MutateAdGroupsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupsRequest. */
                    class MutateAdGroupsRequest implements IMutateAdGroupsRequest {

                        /**
                         * Constructs a new MutateAdGroupsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupsRequest);

                        /** MutateAdGroupsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdGroupOperation[];

                        /** MutateAdGroupsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupsRequest): google.ads.googleads.v23.services.MutateAdGroupsRequest;

                        /**
                         * Encodes the specified MutateAdGroupsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupsRequest.verify|verify} messages.
                         * @param message MutateAdGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupsRequest.verify|verify} messages.
                         * @param message MutateAdGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupsRequest;

                        /**
                         * Decodes a MutateAdGroupsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupsRequest;

                        /**
                         * Verifies a MutateAdGroupsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdGroupsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupOperation. */
                    interface IAdGroupOperation {

                        /** AdGroupOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdGroup|null);

                        /** AdGroupOperation update */
                        update?: (google.ads.googleads.v23.resources.IAdGroup|null);

                        /** AdGroupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupOperation. */
                    class AdGroupOperation implements IAdGroupOperation {

                        /**
                         * Constructs a new AdGroupOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupOperation);

                        /** AdGroupOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdGroup|null);

                        /** AdGroupOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAdGroup|null);

                        /** AdGroupOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdGroupOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupOperation): google.ads.googleads.v23.services.AdGroupOperation;

                        /**
                         * Encodes the specified AdGroupOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupOperation.verify|verify} messages.
                         * @param message AdGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupOperation.verify|verify} messages.
                         * @param message AdGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupOperation;

                        /**
                         * Decodes an AdGroupOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupOperation;

                        /**
                         * Verifies an AdGroupOperation message.
                         * @param message Plain 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 AdGroupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupOperation;

                        /**
                         * Creates a plain object from an AdGroupOperation message. Also converts values to other types if specified.
                         * @param message AdGroupOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupsResponse. */
                    interface IMutateAdGroupsResponse {

                        /** MutateAdGroupsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdGroupResult[]|null);
                    }

                    /** Represents a MutateAdGroupsResponse. */
                    class MutateAdGroupsResponse implements IMutateAdGroupsResponse {

                        /**
                         * Constructs a new MutateAdGroupsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupsResponse);

                        /** MutateAdGroupsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdGroupResult[];

                        /**
                         * Creates a new MutateAdGroupsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupsResponse): google.ads.googleads.v23.services.MutateAdGroupsResponse;

                        /**
                         * Encodes the specified MutateAdGroupsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupsResponse.verify|verify} messages.
                         * @param message MutateAdGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupsResponse.verify|verify} messages.
                         * @param message MutateAdGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupsResponse;

                        /**
                         * Decodes a MutateAdGroupsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupsResponse;

                        /**
                         * Verifies a MutateAdGroupsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdGroupsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdGroupResult. */
                    interface IMutateAdGroupResult {

                        /** MutateAdGroupResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupResult ad_group */
                        ad_group?: (google.ads.googleads.v23.resources.IAdGroup|null);
                    }

                    /** Represents a MutateAdGroupResult. */
                    class MutateAdGroupResult implements IMutateAdGroupResult {

                        /**
                         * Constructs a new MutateAdGroupResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdGroupResult);

                        /** MutateAdGroupResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupResult ad_group. */
                        public ad_group?: (google.ads.googleads.v23.resources.IAdGroup|null);

                        /**
                         * Creates a new MutateAdGroupResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdGroupResult): google.ads.googleads.v23.services.MutateAdGroupResult;

                        /**
                         * Encodes the specified MutateAdGroupResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupResult.verify|verify} messages.
                         * @param message MutateAdGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdGroupResult.verify|verify} messages.
                         * @param message MutateAdGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdGroupResult;

                        /**
                         * Decodes a MutateAdGroupResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdGroupResult;

                        /**
                         * Verifies a MutateAdGroupResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdGroupResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdGroupResult;

                        /**
                         * Creates a plain object from a MutateAdGroupResult message. Also converts values to other types if specified.
                         * @param message MutateAdGroupResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdGroupResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdGroupResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdParameterService */
                    class AdParameterService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdParameterService 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 AdParameterService 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): AdParameterService;

                        /**
                         * Calls MutateAdParameters.
                         * @param request MutateAdParametersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdParametersResponse
                         */
                        public mutateAdParameters(request: google.ads.googleads.v23.services.IMutateAdParametersRequest, callback: google.ads.googleads.v23.services.AdParameterService.MutateAdParametersCallback): void;

                        /**
                         * Calls MutateAdParameters.
                         * @param request MutateAdParametersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdParameters(request: google.ads.googleads.v23.services.IMutateAdParametersRequest): Promise<google.ads.googleads.v23.services.MutateAdParametersResponse>;
                    }

                    namespace AdParameterService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdParameterService|mutateAdParameters}.
                         * @param error Error, if any
                         * @param [response] MutateAdParametersResponse
                         */
                        type MutateAdParametersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdParametersResponse) => void;
                    }

                    /** Properties of a MutateAdParametersRequest. */
                    interface IMutateAdParametersRequest {

                        /** MutateAdParametersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdParametersRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdParameterOperation[]|null);

                        /** MutateAdParametersRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdParametersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdParametersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdParametersRequest. */
                    class MutateAdParametersRequest implements IMutateAdParametersRequest {

                        /**
                         * Constructs a new MutateAdParametersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdParametersRequest);

                        /** MutateAdParametersRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdParametersRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdParameterOperation[];

                        /** MutateAdParametersRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdParametersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdParametersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdParametersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdParametersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdParametersRequest): google.ads.googleads.v23.services.MutateAdParametersRequest;

                        /**
                         * Encodes the specified MutateAdParametersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdParametersRequest.verify|verify} messages.
                         * @param message MutateAdParametersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdParametersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdParametersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdParametersRequest.verify|verify} messages.
                         * @param message MutateAdParametersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdParametersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdParametersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdParametersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdParametersRequest;

                        /**
                         * Decodes a MutateAdParametersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdParametersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdParametersRequest;

                        /**
                         * Verifies a MutateAdParametersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdParametersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdParametersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdParametersRequest;

                        /**
                         * Creates a plain object from a MutateAdParametersRequest message. Also converts values to other types if specified.
                         * @param message MutateAdParametersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdParametersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdParametersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdParametersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdParameterOperation. */
                    interface IAdParameterOperation {

                        /** AdParameterOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdParameterOperation create */
                        create?: (google.ads.googleads.v23.resources.IAdParameter|null);

                        /** AdParameterOperation update */
                        update?: (google.ads.googleads.v23.resources.IAdParameter|null);

                        /** AdParameterOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdParameterOperation. */
                    class AdParameterOperation implements IAdParameterOperation {

                        /**
                         * Constructs a new AdParameterOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdParameterOperation);

                        /** AdParameterOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdParameterOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAdParameter|null);

                        /** AdParameterOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAdParameter|null);

                        /** AdParameterOperation remove. */
                        public remove?: (string|null);

                        /** AdParameterOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdParameterOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdParameterOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdParameterOperation): google.ads.googleads.v23.services.AdParameterOperation;

                        /**
                         * Encodes the specified AdParameterOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdParameterOperation.verify|verify} messages.
                         * @param message AdParameterOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdParameterOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdParameterOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdParameterOperation.verify|verify} messages.
                         * @param message AdParameterOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdParameterOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdParameterOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdParameterOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdParameterOperation;

                        /**
                         * Decodes an AdParameterOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdParameterOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdParameterOperation;

                        /**
                         * Verifies an AdParameterOperation message.
                         * @param message Plain 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 AdParameterOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdParameterOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdParameterOperation;

                        /**
                         * Creates a plain object from an AdParameterOperation message. Also converts values to other types if specified.
                         * @param message AdParameterOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdParameterOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdParameterOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdParameterOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdParametersResponse. */
                    interface IMutateAdParametersResponse {

                        /** MutateAdParametersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdParametersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdParameterResult[]|null);
                    }

                    /** Represents a MutateAdParametersResponse. */
                    class MutateAdParametersResponse implements IMutateAdParametersResponse {

                        /**
                         * Constructs a new MutateAdParametersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdParametersResponse);

                        /** MutateAdParametersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdParametersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdParameterResult[];

                        /**
                         * Creates a new MutateAdParametersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdParametersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdParametersResponse): google.ads.googleads.v23.services.MutateAdParametersResponse;

                        /**
                         * Encodes the specified MutateAdParametersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdParametersResponse.verify|verify} messages.
                         * @param message MutateAdParametersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdParametersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdParametersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdParametersResponse.verify|verify} messages.
                         * @param message MutateAdParametersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdParametersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdParametersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdParametersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdParametersResponse;

                        /**
                         * Decodes a MutateAdParametersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdParametersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdParametersResponse;

                        /**
                         * Verifies a MutateAdParametersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdParametersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdParametersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdParametersResponse;

                        /**
                         * Creates a plain object from a MutateAdParametersResponse message. Also converts values to other types if specified.
                         * @param message MutateAdParametersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdParametersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdParametersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdParametersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdParameterResult. */
                    interface IMutateAdParameterResult {

                        /** MutateAdParameterResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdParameterResult ad_parameter */
                        ad_parameter?: (google.ads.googleads.v23.resources.IAdParameter|null);
                    }

                    /** Represents a MutateAdParameterResult. */
                    class MutateAdParameterResult implements IMutateAdParameterResult {

                        /**
                         * Constructs a new MutateAdParameterResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdParameterResult);

                        /** MutateAdParameterResult resource_name. */
                        public resource_name: string;

                        /** MutateAdParameterResult ad_parameter. */
                        public ad_parameter?: (google.ads.googleads.v23.resources.IAdParameter|null);

                        /**
                         * Creates a new MutateAdParameterResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdParameterResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdParameterResult): google.ads.googleads.v23.services.MutateAdParameterResult;

                        /**
                         * Encodes the specified MutateAdParameterResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdParameterResult.verify|verify} messages.
                         * @param message MutateAdParameterResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdParameterResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdParameterResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdParameterResult.verify|verify} messages.
                         * @param message MutateAdParameterResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdParameterResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdParameterResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdParameterResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdParameterResult;

                        /**
                         * Decodes a MutateAdParameterResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdParameterResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdParameterResult;

                        /**
                         * Verifies a MutateAdParameterResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdParameterResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdParameterResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdParameterResult;

                        /**
                         * Creates a plain object from a MutateAdParameterResult message. Also converts values to other types if specified.
                         * @param message MutateAdParameterResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdParameterResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdParameterResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdParameterResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AdService */
                    class AdService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdService 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 AdService 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): AdService;

                        /**
                         * Calls MutateAds.
                         * @param request MutateAdsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdsResponse
                         */
                        public mutateAds(request: google.ads.googleads.v23.services.IMutateAdsRequest, callback: google.ads.googleads.v23.services.AdService.MutateAdsCallback): void;

                        /**
                         * Calls MutateAds.
                         * @param request MutateAdsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAds(request: google.ads.googleads.v23.services.IMutateAdsRequest): Promise<google.ads.googleads.v23.services.MutateAdsResponse>;
                    }

                    namespace AdService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AdService|mutateAds}.
                         * @param error Error, if any
                         * @param [response] MutateAdsResponse
                         */
                        type MutateAdsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAdsResponse) => void;
                    }

                    /** Properties of a MutateAdsRequest. */
                    interface IMutateAdsRequest {

                        /** MutateAdsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAdOperation[]|null);

                        /** MutateAdsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);

                        /** MutateAdsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAdsRequest. */
                    class MutateAdsRequest implements IMutateAdsRequest {

                        /**
                         * Constructs a new MutateAdsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdsRequest);

                        /** MutateAdsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAdOperation[];

                        /** MutateAdsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /** MutateAdsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAdsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdsRequest): google.ads.googleads.v23.services.MutateAdsRequest;

                        /**
                         * Encodes the specified MutateAdsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdsRequest.verify|verify} messages.
                         * @param message MutateAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdsRequest.verify|verify} messages.
                         * @param message MutateAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdsRequest;

                        /**
                         * Decodes a MutateAdsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdsRequest;

                        /**
                         * Verifies a MutateAdsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdsRequest;

                        /**
                         * Creates a plain object from a MutateAdsRequest message. Also converts values to other types if specified.
                         * @param message MutateAdsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdOperation. */
                    interface IAdOperation {

                        /** AdOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdOperation policy_validation_parameter */
                        policy_validation_parameter?: (google.ads.googleads.v23.common.IPolicyValidationParameter|null);

                        /** AdOperation update */
                        update?: (google.ads.googleads.v23.resources.IAd|null);
                    }

                    /** Represents an AdOperation. */
                    class AdOperation implements IAdOperation {

                        /**
                         * Constructs a new AdOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdOperation);

                        /** AdOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdOperation policy_validation_parameter. */
                        public policy_validation_parameter?: (google.ads.googleads.v23.common.IPolicyValidationParameter|null);

                        /** AdOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAd|null);

                        /** AdOperation operation. */
                        public operation?: "update";

                        /**
                         * Creates a new AdOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdOperation): google.ads.googleads.v23.services.AdOperation;

                        /**
                         * Encodes the specified AdOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AdOperation.verify|verify} messages.
                         * @param message AdOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdOperation.verify|verify} messages.
                         * @param message AdOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdOperation;

                        /**
                         * Decodes an AdOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdOperation;

                        /**
                         * Verifies an AdOperation message.
                         * @param message Plain 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 AdOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdOperation;

                        /**
                         * Creates a plain object from an AdOperation message. Also converts values to other types if specified.
                         * @param message AdOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdsResponse. */
                    interface IMutateAdsResponse {

                        /** MutateAdsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAdResult[]|null);
                    }

                    /** Represents a MutateAdsResponse. */
                    class MutateAdsResponse implements IMutateAdsResponse {

                        /**
                         * Constructs a new MutateAdsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdsResponse);

                        /** MutateAdsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAdResult[];

                        /**
                         * Creates a new MutateAdsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdsResponse): google.ads.googleads.v23.services.MutateAdsResponse;

                        /**
                         * Encodes the specified MutateAdsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdsResponse.verify|verify} messages.
                         * @param message MutateAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdsResponse.verify|verify} messages.
                         * @param message MutateAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdsResponse;

                        /**
                         * Decodes a MutateAdsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdsResponse;

                        /**
                         * Verifies a MutateAdsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdsResponse;

                        /**
                         * Creates a plain object from a MutateAdsResponse message. Also converts values to other types if specified.
                         * @param message MutateAdsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAdResult. */
                    interface IMutateAdResult {

                        /** MutateAdResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdResult ad */
                        ad?: (google.ads.googleads.v23.resources.IAd|null);
                    }

                    /** Represents a MutateAdResult. */
                    class MutateAdResult implements IMutateAdResult {

                        /**
                         * Constructs a new MutateAdResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAdResult);

                        /** MutateAdResult resource_name. */
                        public resource_name: string;

                        /** MutateAdResult ad. */
                        public ad?: (google.ads.googleads.v23.resources.IAd|null);

                        /**
                         * Creates a new MutateAdResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAdResult): google.ads.googleads.v23.services.MutateAdResult;

                        /**
                         * Encodes the specified MutateAdResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdResult.verify|verify} messages.
                         * @param message MutateAdResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAdResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAdResult.verify|verify} messages.
                         * @param message MutateAdResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAdResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAdResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAdResult;

                        /**
                         * Decodes a MutateAdResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAdResult;

                        /**
                         * Verifies a MutateAdResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAdResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAdResult;

                        /**
                         * Creates a plain object from a MutateAdResult message. Also converts values to other types if specified.
                         * @param message MutateAdResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAdResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAdResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetGenerationService */
                    class AssetGenerationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetGenerationService 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 AssetGenerationService 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): AssetGenerationService;

                        /**
                         * Calls GenerateText.
                         * @param request GenerateTextRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateTextResponse
                         */
                        public generateText(request: google.ads.googleads.v23.services.IGenerateTextRequest, callback: google.ads.googleads.v23.services.AssetGenerationService.GenerateTextCallback): void;

                        /**
                         * Calls GenerateText.
                         * @param request GenerateTextRequest message or plain object
                         * @returns Promise
                         */
                        public generateText(request: google.ads.googleads.v23.services.IGenerateTextRequest): Promise<google.ads.googleads.v23.services.GenerateTextResponse>;

                        /**
                         * Calls GenerateImages.
                         * @param request GenerateImagesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateImagesResponse
                         */
                        public generateImages(request: google.ads.googleads.v23.services.IGenerateImagesRequest, callback: google.ads.googleads.v23.services.AssetGenerationService.GenerateImagesCallback): void;

                        /**
                         * Calls GenerateImages.
                         * @param request GenerateImagesRequest message or plain object
                         * @returns Promise
                         */
                        public generateImages(request: google.ads.googleads.v23.services.IGenerateImagesRequest): Promise<google.ads.googleads.v23.services.GenerateImagesResponse>;
                    }

                    namespace AssetGenerationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetGenerationService|generateText}.
                         * @param error Error, if any
                         * @param [response] GenerateTextResponse
                         */
                        type GenerateTextCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateTextResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetGenerationService|generateImages}.
                         * @param error Error, if any
                         * @param [response] GenerateImagesResponse
                         */
                        type GenerateImagesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateImagesResponse) => void;
                    }

                    /** Properties of a GenerateTextRequest. */
                    interface IGenerateTextRequest {

                        /** GenerateTextRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateTextRequest asset_field_types */
                        asset_field_types?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[]|null);

                        /** GenerateTextRequest final_url */
                        final_url?: (string|null);

                        /** GenerateTextRequest freeform_prompt */
                        freeform_prompt?: (string|null);

                        /** GenerateTextRequest keywords */
                        keywords?: (string[]|null);

                        /** GenerateTextRequest existing_generation_context */
                        existing_generation_context?: (google.ads.googleads.v23.services.IAssetGenerationExistingContext|null);

                        /** GenerateTextRequest advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);
                    }

                    /** Represents a GenerateTextRequest. */
                    class GenerateTextRequest implements IGenerateTextRequest {

                        /**
                         * Constructs a new GenerateTextRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateTextRequest);

                        /** GenerateTextRequest customer_id. */
                        public customer_id: string;

                        /** GenerateTextRequest asset_field_types. */
                        public asset_field_types: google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[];

                        /** GenerateTextRequest final_url. */
                        public final_url: string;

                        /** GenerateTextRequest freeform_prompt. */
                        public freeform_prompt: string;

                        /** GenerateTextRequest keywords. */
                        public keywords: string[];

                        /** GenerateTextRequest existing_generation_context. */
                        public existing_generation_context?: (google.ads.googleads.v23.services.IAssetGenerationExistingContext|null);

                        /** GenerateTextRequest advertising_channel_type. */
                        public advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** GenerateTextRequest context. */
                        public context?: ("existing_generation_context"|"advertising_channel_type");

                        /**
                         * Creates a new GenerateTextRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateTextRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateTextRequest): google.ads.googleads.v23.services.GenerateTextRequest;

                        /**
                         * Encodes the specified GenerateTextRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTextRequest.verify|verify} messages.
                         * @param message GenerateTextRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateTextRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateTextRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTextRequest.verify|verify} messages.
                         * @param message GenerateTextRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateTextRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateTextRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateTextRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateTextRequest;

                        /**
                         * Decodes a GenerateTextRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateTextRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateTextRequest;

                        /**
                         * Verifies a GenerateTextRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateTextRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateTextRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateTextRequest;

                        /**
                         * Creates a plain object from a GenerateTextRequest message. Also converts values to other types if specified.
                         * @param message GenerateTextRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateTextRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateTextRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateTextRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateTextResponse. */
                    interface IGenerateTextResponse {

                        /** GenerateTextResponse generated_text */
                        generated_text?: (google.ads.googleads.v23.services.IGeneratedText[]|null);
                    }

                    /** Represents a GenerateTextResponse. */
                    class GenerateTextResponse implements IGenerateTextResponse {

                        /**
                         * Constructs a new GenerateTextResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateTextResponse);

                        /** GenerateTextResponse generated_text. */
                        public generated_text: google.ads.googleads.v23.services.IGeneratedText[];

                        /**
                         * Creates a new GenerateTextResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateTextResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateTextResponse): google.ads.googleads.v23.services.GenerateTextResponse;

                        /**
                         * Encodes the specified GenerateTextResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTextResponse.verify|verify} messages.
                         * @param message GenerateTextResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateTextResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateTextResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTextResponse.verify|verify} messages.
                         * @param message GenerateTextResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateTextResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateTextResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateTextResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateTextResponse;

                        /**
                         * Decodes a GenerateTextResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateTextResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateTextResponse;

                        /**
                         * Verifies a GenerateTextResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateTextResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateTextResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateTextResponse;

                        /**
                         * Creates a plain object from a GenerateTextResponse message. Also converts values to other types if specified.
                         * @param message GenerateTextResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateTextResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateTextResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateTextResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GeneratedText. */
                    interface IGeneratedText {

                        /** GeneratedText text */
                        text?: (string|null);

                        /** GeneratedText asset_field_type */
                        asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents a GeneratedText. */
                    class GeneratedText implements IGeneratedText {

                        /**
                         * Constructs a new GeneratedText.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGeneratedText);

                        /** GeneratedText text. */
                        public text: string;

                        /** GeneratedText asset_field_type. */
                        public asset_field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /**
                         * Creates a new GeneratedText instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeneratedText instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGeneratedText): google.ads.googleads.v23.services.GeneratedText;

                        /**
                         * Encodes the specified GeneratedText message. Does not implicitly {@link google.ads.googleads.v23.services.GeneratedText.verify|verify} messages.
                         * @param message GeneratedText message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGeneratedText, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeneratedText message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GeneratedText.verify|verify} messages.
                         * @param message GeneratedText message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGeneratedText, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeneratedText message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeneratedText
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GeneratedText;

                        /**
                         * Decodes a GeneratedText message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeneratedText
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GeneratedText;

                        /**
                         * Verifies a GeneratedText message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeneratedText message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeneratedText
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GeneratedText;

                        /**
                         * Creates a plain object from a GeneratedText message. Also converts values to other types if specified.
                         * @param message GeneratedText
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GeneratedText, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeneratedText to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeneratedText
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateImagesRequest. */
                    interface IGenerateImagesRequest {

                        /** GenerateImagesRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateImagesRequest asset_field_types */
                        asset_field_types?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[]|null);

                        /** GenerateImagesRequest advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** GenerateImagesRequest final_url_generation */
                        final_url_generation?: (google.ads.googleads.v23.services.IFinalUrlImageGenerationInput|null);

                        /** GenerateImagesRequest freeform_generation */
                        freeform_generation?: (google.ads.googleads.v23.services.IFreeformImageGenerationInput|null);

                        /** GenerateImagesRequest product_recontext_generation */
                        product_recontext_generation?: (google.ads.googleads.v23.services.IProductRecontextGenerationImageInput|null);
                    }

                    /** Represents a GenerateImagesRequest. */
                    class GenerateImagesRequest implements IGenerateImagesRequest {

                        /**
                         * Constructs a new GenerateImagesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateImagesRequest);

                        /** GenerateImagesRequest customer_id. */
                        public customer_id: string;

                        /** GenerateImagesRequest asset_field_types. */
                        public asset_field_types: google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType[];

                        /** GenerateImagesRequest advertising_channel_type. */
                        public advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** GenerateImagesRequest final_url_generation. */
                        public final_url_generation?: (google.ads.googleads.v23.services.IFinalUrlImageGenerationInput|null);

                        /** GenerateImagesRequest freeform_generation. */
                        public freeform_generation?: (google.ads.googleads.v23.services.IFreeformImageGenerationInput|null);

                        /** GenerateImagesRequest product_recontext_generation. */
                        public product_recontext_generation?: (google.ads.googleads.v23.services.IProductRecontextGenerationImageInput|null);

                        /** GenerateImagesRequest context. */
                        public context?: "advertising_channel_type";

                        /** GenerateImagesRequest generation_type. */
                        public generation_type?: ("final_url_generation"|"freeform_generation"|"product_recontext_generation");

                        /**
                         * Creates a new GenerateImagesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateImagesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateImagesRequest): google.ads.googleads.v23.services.GenerateImagesRequest;

                        /**
                         * Encodes the specified GenerateImagesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateImagesRequest.verify|verify} messages.
                         * @param message GenerateImagesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateImagesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateImagesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateImagesRequest.verify|verify} messages.
                         * @param message GenerateImagesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateImagesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateImagesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateImagesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateImagesRequest;

                        /**
                         * Decodes a GenerateImagesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateImagesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateImagesRequest;

                        /**
                         * Verifies a GenerateImagesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateImagesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateImagesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateImagesRequest;

                        /**
                         * Creates a plain object from a GenerateImagesRequest message. Also converts values to other types if specified.
                         * @param message GenerateImagesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateImagesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateImagesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateImagesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FinalUrlImageGenerationInput. */
                    interface IFinalUrlImageGenerationInput {

                        /** FinalUrlImageGenerationInput final_url */
                        final_url?: (string|null);
                    }

                    /** Represents a FinalUrlImageGenerationInput. */
                    class FinalUrlImageGenerationInput implements IFinalUrlImageGenerationInput {

                        /**
                         * Constructs a new FinalUrlImageGenerationInput.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IFinalUrlImageGenerationInput);

                        /** FinalUrlImageGenerationInput final_url. */
                        public final_url: string;

                        /**
                         * Creates a new FinalUrlImageGenerationInput instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FinalUrlImageGenerationInput instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IFinalUrlImageGenerationInput): google.ads.googleads.v23.services.FinalUrlImageGenerationInput;

                        /**
                         * Encodes the specified FinalUrlImageGenerationInput message. Does not implicitly {@link google.ads.googleads.v23.services.FinalUrlImageGenerationInput.verify|verify} messages.
                         * @param message FinalUrlImageGenerationInput message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IFinalUrlImageGenerationInput, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FinalUrlImageGenerationInput message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.FinalUrlImageGenerationInput.verify|verify} messages.
                         * @param message FinalUrlImageGenerationInput message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IFinalUrlImageGenerationInput, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FinalUrlImageGenerationInput message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FinalUrlImageGenerationInput
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.FinalUrlImageGenerationInput;

                        /**
                         * Decodes a FinalUrlImageGenerationInput message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FinalUrlImageGenerationInput
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.FinalUrlImageGenerationInput;

                        /**
                         * Verifies a FinalUrlImageGenerationInput message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FinalUrlImageGenerationInput message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FinalUrlImageGenerationInput
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.FinalUrlImageGenerationInput;

                        /**
                         * Creates a plain object from a FinalUrlImageGenerationInput message. Also converts values to other types if specified.
                         * @param message FinalUrlImageGenerationInput
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.FinalUrlImageGenerationInput, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FinalUrlImageGenerationInput to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FinalUrlImageGenerationInput
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FreeformImageGenerationInput. */
                    interface IFreeformImageGenerationInput {

                        /** FreeformImageGenerationInput freeform_prompt */
                        freeform_prompt?: (string|null);
                    }

                    /** Represents a FreeformImageGenerationInput. */
                    class FreeformImageGenerationInput implements IFreeformImageGenerationInput {

                        /**
                         * Constructs a new FreeformImageGenerationInput.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IFreeformImageGenerationInput);

                        /** FreeformImageGenerationInput freeform_prompt. */
                        public freeform_prompt: string;

                        /**
                         * Creates a new FreeformImageGenerationInput instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FreeformImageGenerationInput instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IFreeformImageGenerationInput): google.ads.googleads.v23.services.FreeformImageGenerationInput;

                        /**
                         * Encodes the specified FreeformImageGenerationInput message. Does not implicitly {@link google.ads.googleads.v23.services.FreeformImageGenerationInput.verify|verify} messages.
                         * @param message FreeformImageGenerationInput message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IFreeformImageGenerationInput, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FreeformImageGenerationInput message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.FreeformImageGenerationInput.verify|verify} messages.
                         * @param message FreeformImageGenerationInput message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IFreeformImageGenerationInput, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FreeformImageGenerationInput message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FreeformImageGenerationInput
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.FreeformImageGenerationInput;

                        /**
                         * Decodes a FreeformImageGenerationInput message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FreeformImageGenerationInput
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.FreeformImageGenerationInput;

                        /**
                         * Verifies a FreeformImageGenerationInput message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FreeformImageGenerationInput message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FreeformImageGenerationInput
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.FreeformImageGenerationInput;

                        /**
                         * Creates a plain object from a FreeformImageGenerationInput message. Also converts values to other types if specified.
                         * @param message FreeformImageGenerationInput
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.FreeformImageGenerationInput, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FreeformImageGenerationInput to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FreeformImageGenerationInput
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductRecontextGenerationImageInput. */
                    interface IProductRecontextGenerationImageInput {

                        /** ProductRecontextGenerationImageInput prompt */
                        prompt?: (string|null);

                        /** ProductRecontextGenerationImageInput source_images */
                        source_images?: (google.ads.googleads.v23.services.ISourceImage[]|null);
                    }

                    /** Represents a ProductRecontextGenerationImageInput. */
                    class ProductRecontextGenerationImageInput implements IProductRecontextGenerationImageInput {

                        /**
                         * Constructs a new ProductRecontextGenerationImageInput.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IProductRecontextGenerationImageInput);

                        /** ProductRecontextGenerationImageInput prompt. */
                        public prompt: string;

                        /** ProductRecontextGenerationImageInput source_images. */
                        public source_images: google.ads.googleads.v23.services.ISourceImage[];

                        /**
                         * Creates a new ProductRecontextGenerationImageInput instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductRecontextGenerationImageInput instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IProductRecontextGenerationImageInput): google.ads.googleads.v23.services.ProductRecontextGenerationImageInput;

                        /**
                         * Encodes the specified ProductRecontextGenerationImageInput message. Does not implicitly {@link google.ads.googleads.v23.services.ProductRecontextGenerationImageInput.verify|verify} messages.
                         * @param message ProductRecontextGenerationImageInput message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IProductRecontextGenerationImageInput, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductRecontextGenerationImageInput message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ProductRecontextGenerationImageInput.verify|verify} messages.
                         * @param message ProductRecontextGenerationImageInput message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IProductRecontextGenerationImageInput, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductRecontextGenerationImageInput message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductRecontextGenerationImageInput
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ProductRecontextGenerationImageInput;

                        /**
                         * Decodes a ProductRecontextGenerationImageInput message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductRecontextGenerationImageInput
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ProductRecontextGenerationImageInput;

                        /**
                         * Verifies a ProductRecontextGenerationImageInput message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductRecontextGenerationImageInput message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductRecontextGenerationImageInput
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ProductRecontextGenerationImageInput;

                        /**
                         * Creates a plain object from a ProductRecontextGenerationImageInput message. Also converts values to other types if specified.
                         * @param message ProductRecontextGenerationImageInput
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ProductRecontextGenerationImageInput, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductRecontextGenerationImageInput to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductRecontextGenerationImageInput
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateImagesResponse. */
                    interface IGenerateImagesResponse {

                        /** GenerateImagesResponse generated_images */
                        generated_images?: (google.ads.googleads.v23.services.IGeneratedImage[]|null);
                    }

                    /** Represents a GenerateImagesResponse. */
                    class GenerateImagesResponse implements IGenerateImagesResponse {

                        /**
                         * Constructs a new GenerateImagesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateImagesResponse);

                        /** GenerateImagesResponse generated_images. */
                        public generated_images: google.ads.googleads.v23.services.IGeneratedImage[];

                        /**
                         * Creates a new GenerateImagesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateImagesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateImagesResponse): google.ads.googleads.v23.services.GenerateImagesResponse;

                        /**
                         * Encodes the specified GenerateImagesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateImagesResponse.verify|verify} messages.
                         * @param message GenerateImagesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateImagesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateImagesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateImagesResponse.verify|verify} messages.
                         * @param message GenerateImagesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateImagesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateImagesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateImagesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateImagesResponse;

                        /**
                         * Decodes a GenerateImagesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateImagesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateImagesResponse;

                        /**
                         * Verifies a GenerateImagesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateImagesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateImagesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateImagesResponse;

                        /**
                         * Creates a plain object from a GenerateImagesResponse message. Also converts values to other types if specified.
                         * @param message GenerateImagesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateImagesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateImagesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateImagesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SourceImage. */
                    interface ISourceImage {

                        /** SourceImage image_data */
                        image_data?: (Uint8Array|Buffer|string|null);
                    }

                    /** Represents a SourceImage. */
                    class SourceImage implements ISourceImage {

                        /**
                         * Constructs a new SourceImage.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISourceImage);

                        /** SourceImage image_data. */
                        public image_data?: (Uint8Array|Buffer|string|null);

                        /** SourceImage image. */
                        public image?: "image_data";

                        /**
                         * Creates a new SourceImage instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SourceImage instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISourceImage): google.ads.googleads.v23.services.SourceImage;

                        /**
                         * Encodes the specified SourceImage message. Does not implicitly {@link google.ads.googleads.v23.services.SourceImage.verify|verify} messages.
                         * @param message SourceImage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISourceImage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SourceImage message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SourceImage.verify|verify} messages.
                         * @param message SourceImage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISourceImage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SourceImage message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SourceImage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SourceImage;

                        /**
                         * Decodes a SourceImage message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SourceImage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SourceImage;

                        /**
                         * Verifies a SourceImage message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SourceImage message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SourceImage
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SourceImage;

                        /**
                         * Creates a plain object from a SourceImage message. Also converts values to other types if specified.
                         * @param message SourceImage
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SourceImage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SourceImage to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SourceImage
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GeneratedImage. */
                    interface IGeneratedImage {

                        /** GeneratedImage image_temporary_url */
                        image_temporary_url?: (string|null);

                        /** GeneratedImage asset_field_type */
                        asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents a GeneratedImage. */
                    class GeneratedImage implements IGeneratedImage {

                        /**
                         * Constructs a new GeneratedImage.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGeneratedImage);

                        /** GeneratedImage image_temporary_url. */
                        public image_temporary_url: string;

                        /** GeneratedImage asset_field_type. */
                        public asset_field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /**
                         * Creates a new GeneratedImage instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeneratedImage instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGeneratedImage): google.ads.googleads.v23.services.GeneratedImage;

                        /**
                         * Encodes the specified GeneratedImage message. Does not implicitly {@link google.ads.googleads.v23.services.GeneratedImage.verify|verify} messages.
                         * @param message GeneratedImage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGeneratedImage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeneratedImage message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GeneratedImage.verify|verify} messages.
                         * @param message GeneratedImage message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGeneratedImage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeneratedImage message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeneratedImage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GeneratedImage;

                        /**
                         * Decodes a GeneratedImage message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeneratedImage
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GeneratedImage;

                        /**
                         * Verifies a GeneratedImage message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeneratedImage message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeneratedImage
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GeneratedImage;

                        /**
                         * Creates a plain object from a GeneratedImage message. Also converts values to other types if specified.
                         * @param message GeneratedImage
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GeneratedImage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeneratedImage to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeneratedImage
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGenerationExistingContext. */
                    interface IAssetGenerationExistingContext {

                        /** AssetGenerationExistingContext existing_asset_group */
                        existing_asset_group?: (string|null);

                        /** AssetGenerationExistingContext existing_ad_group_ad */
                        existing_ad_group_ad?: (string|null);
                    }

                    /** Represents an AssetGenerationExistingContext. */
                    class AssetGenerationExistingContext implements IAssetGenerationExistingContext {

                        /**
                         * Constructs a new AssetGenerationExistingContext.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetGenerationExistingContext);

                        /** AssetGenerationExistingContext existing_asset_group. */
                        public existing_asset_group?: (string|null);

                        /** AssetGenerationExistingContext existing_ad_group_ad. */
                        public existing_ad_group_ad?: (string|null);

                        /** AssetGenerationExistingContext existing_context. */
                        public existing_context?: ("existing_asset_group"|"existing_ad_group_ad");

                        /**
                         * Creates a new AssetGenerationExistingContext instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGenerationExistingContext instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetGenerationExistingContext): google.ads.googleads.v23.services.AssetGenerationExistingContext;

                        /**
                         * Encodes the specified AssetGenerationExistingContext message. Does not implicitly {@link google.ads.googleads.v23.services.AssetGenerationExistingContext.verify|verify} messages.
                         * @param message AssetGenerationExistingContext message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetGenerationExistingContext, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGenerationExistingContext message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetGenerationExistingContext.verify|verify} messages.
                         * @param message AssetGenerationExistingContext message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetGenerationExistingContext, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGenerationExistingContext message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGenerationExistingContext
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetGenerationExistingContext;

                        /**
                         * Decodes an AssetGenerationExistingContext message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGenerationExistingContext
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetGenerationExistingContext;

                        /**
                         * Verifies an AssetGenerationExistingContext message.
                         * @param message Plain 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 AssetGenerationExistingContext message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGenerationExistingContext
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetGenerationExistingContext;

                        /**
                         * Creates a plain object from an AssetGenerationExistingContext message. Also converts values to other types if specified.
                         * @param message AssetGenerationExistingContext
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetGenerationExistingContext, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGenerationExistingContext to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGenerationExistingContext
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetGroupAssetService */
                    class AssetGroupAssetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetGroupAssetService 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 AssetGroupAssetService 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): AssetGroupAssetService;

                        /**
                         * Calls MutateAssetGroupAssets.
                         * @param request MutateAssetGroupAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAssetGroupAssetsResponse
                         */
                        public mutateAssetGroupAssets(request: google.ads.googleads.v23.services.IMutateAssetGroupAssetsRequest, callback: google.ads.googleads.v23.services.AssetGroupAssetService.MutateAssetGroupAssetsCallback): void;

                        /**
                         * Calls MutateAssetGroupAssets.
                         * @param request MutateAssetGroupAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssetGroupAssets(request: google.ads.googleads.v23.services.IMutateAssetGroupAssetsRequest): Promise<google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse>;
                    }

                    namespace AssetGroupAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetGroupAssetService|mutateAssetGroupAssets}.
                         * @param error Error, if any
                         * @param [response] MutateAssetGroupAssetsResponse
                         */
                        type MutateAssetGroupAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse) => void;
                    }

                    /** Properties of a MutateAssetGroupAssetsRequest. */
                    interface IMutateAssetGroupAssetsRequest {

                        /** MutateAssetGroupAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetGroupAssetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAssetGroupAssetOperation[]|null);

                        /** MutateAssetGroupAssetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAssetGroupAssetsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAssetGroupAssetsRequest. */
                    class MutateAssetGroupAssetsRequest implements IMutateAssetGroupAssetsRequest {

                        /**
                         * Constructs a new MutateAssetGroupAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupAssetsRequest);

                        /** MutateAssetGroupAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetGroupAssetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAssetGroupAssetOperation[];

                        /** MutateAssetGroupAssetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAssetGroupAssetsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAssetGroupAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupAssetsRequest): google.ads.googleads.v23.services.MutateAssetGroupAssetsRequest;

                        /**
                         * Encodes the specified MutateAssetGroupAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupAssetsRequest.verify|verify} messages.
                         * @param message MutateAssetGroupAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupAssetsRequest.verify|verify} messages.
                         * @param message MutateAssetGroupAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupAssetsRequest;

                        /**
                         * Decodes a MutateAssetGroupAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupAssetsRequest;

                        /**
                         * Verifies a MutateAssetGroupAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupAssetsRequest;

                        /**
                         * Creates a plain object from a MutateAssetGroupAssetsRequest message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupAssetOperation. */
                    interface IAssetGroupAssetOperation {

                        /** AssetGroupAssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetGroupAssetOperation create */
                        create?: (google.ads.googleads.v23.resources.IAssetGroupAsset|null);

                        /** AssetGroupAssetOperation update */
                        update?: (google.ads.googleads.v23.resources.IAssetGroupAsset|null);

                        /** AssetGroupAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AssetGroupAssetOperation. */
                    class AssetGroupAssetOperation implements IAssetGroupAssetOperation {

                        /**
                         * Constructs a new AssetGroupAssetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetGroupAssetOperation);

                        /** AssetGroupAssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetGroupAssetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAssetGroupAsset|null);

                        /** AssetGroupAssetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAssetGroupAsset|null);

                        /** AssetGroupAssetOperation remove. */
                        public remove?: (string|null);

                        /** AssetGroupAssetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AssetGroupAssetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupAssetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetGroupAssetOperation): google.ads.googleads.v23.services.AssetGroupAssetOperation;

                        /**
                         * Encodes the specified AssetGroupAssetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupAssetOperation.verify|verify} messages.
                         * @param message AssetGroupAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetGroupAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupAssetOperation.verify|verify} messages.
                         * @param message AssetGroupAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetGroupAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupAssetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetGroupAssetOperation;

                        /**
                         * Decodes an AssetGroupAssetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetGroupAssetOperation;

                        /**
                         * Verifies an AssetGroupAssetOperation message.
                         * @param message Plain 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 AssetGroupAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupAssetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetGroupAssetOperation;

                        /**
                         * Creates a plain object from an AssetGroupAssetOperation message. Also converts values to other types if specified.
                         * @param message AssetGroupAssetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetGroupAssetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupAssetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupAssetsResponse. */
                    interface IMutateAssetGroupAssetsResponse {

                        /** MutateAssetGroupAssetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAssetGroupAssetResult[]|null);

                        /** MutateAssetGroupAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAssetGroupAssetsResponse. */
                    class MutateAssetGroupAssetsResponse implements IMutateAssetGroupAssetsResponse {

                        /**
                         * Constructs a new MutateAssetGroupAssetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupAssetsResponse);

                        /** MutateAssetGroupAssetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAssetGroupAssetResult[];

                        /** MutateAssetGroupAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAssetGroupAssetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupAssetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupAssetsResponse): google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse;

                        /**
                         * Encodes the specified MutateAssetGroupAssetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse.verify|verify} messages.
                         * @param message MutateAssetGroupAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse.verify|verify} messages.
                         * @param message MutateAssetGroupAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupAssetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse;

                        /**
                         * Decodes a MutateAssetGroupAssetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse;

                        /**
                         * Verifies a MutateAssetGroupAssetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupAssetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse;

                        /**
                         * Creates a plain object from a MutateAssetGroupAssetsResponse message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupAssetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupAssetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupAssetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupAssetResult. */
                    interface IMutateAssetGroupAssetResult {

                        /** MutateAssetGroupAssetResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateAssetGroupAssetResult. */
                    class MutateAssetGroupAssetResult implements IMutateAssetGroupAssetResult {

                        /**
                         * Constructs a new MutateAssetGroupAssetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupAssetResult);

                        /** MutateAssetGroupAssetResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateAssetGroupAssetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupAssetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupAssetResult): google.ads.googleads.v23.services.MutateAssetGroupAssetResult;

                        /**
                         * Encodes the specified MutateAssetGroupAssetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupAssetResult.verify|verify} messages.
                         * @param message MutateAssetGroupAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupAssetResult.verify|verify} messages.
                         * @param message MutateAssetGroupAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupAssetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupAssetResult;

                        /**
                         * Decodes a MutateAssetGroupAssetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupAssetResult;

                        /**
                         * Verifies a MutateAssetGroupAssetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupAssetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupAssetResult;

                        /**
                         * Creates a plain object from a MutateAssetGroupAssetResult message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupAssetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupAssetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupAssetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetGroupListingGroupFilterService */
                    class AssetGroupListingGroupFilterService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetGroupListingGroupFilterService 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 AssetGroupListingGroupFilterService 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): AssetGroupListingGroupFilterService;

                        /**
                         * Calls MutateAssetGroupListingGroupFilters.
                         * @param request MutateAssetGroupListingGroupFiltersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAssetGroupListingGroupFiltersResponse
                         */
                        public mutateAssetGroupListingGroupFilters(request: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersRequest, callback: google.ads.googleads.v23.services.AssetGroupListingGroupFilterService.MutateAssetGroupListingGroupFiltersCallback): void;

                        /**
                         * Calls MutateAssetGroupListingGroupFilters.
                         * @param request MutateAssetGroupListingGroupFiltersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssetGroupListingGroupFilters(request: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersRequest): Promise<google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse>;
                    }

                    namespace AssetGroupListingGroupFilterService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetGroupListingGroupFilterService|mutateAssetGroupListingGroupFilters}.
                         * @param error Error, if any
                         * @param [response] MutateAssetGroupListingGroupFiltersResponse
                         */
                        type MutateAssetGroupListingGroupFiltersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse) => void;
                    }

                    /** Properties of a MutateAssetGroupListingGroupFiltersRequest. */
                    interface IMutateAssetGroupListingGroupFiltersRequest {

                        /** MutateAssetGroupListingGroupFiltersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetGroupListingGroupFiltersRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation[]|null);

                        /** MutateAssetGroupListingGroupFiltersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAssetGroupListingGroupFiltersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAssetGroupListingGroupFiltersRequest. */
                    class MutateAssetGroupListingGroupFiltersRequest implements IMutateAssetGroupListingGroupFiltersRequest {

                        /**
                         * Constructs a new MutateAssetGroupListingGroupFiltersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersRequest);

                        /** MutateAssetGroupListingGroupFiltersRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetGroupListingGroupFiltersRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation[];

                        /** MutateAssetGroupListingGroupFiltersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAssetGroupListingGroupFiltersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAssetGroupListingGroupFiltersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupListingGroupFiltersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersRequest): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersRequest;

                        /**
                         * Encodes the specified MutateAssetGroupListingGroupFiltersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersRequest.verify|verify} messages.
                         * @param message MutateAssetGroupListingGroupFiltersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupListingGroupFiltersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersRequest.verify|verify} messages.
                         * @param message MutateAssetGroupListingGroupFiltersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupListingGroupFiltersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupListingGroupFiltersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersRequest;

                        /**
                         * Decodes a MutateAssetGroupListingGroupFiltersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupListingGroupFiltersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersRequest;

                        /**
                         * Verifies a MutateAssetGroupListingGroupFiltersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupListingGroupFiltersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupListingGroupFiltersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersRequest;

                        /**
                         * Creates a plain object from a MutateAssetGroupListingGroupFiltersRequest message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupListingGroupFiltersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupListingGroupFiltersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupListingGroupFiltersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupListingGroupFilterOperation. */
                    interface IAssetGroupListingGroupFilterOperation {

                        /** AssetGroupListingGroupFilterOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetGroupListingGroupFilterOperation create */
                        create?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);

                        /** AssetGroupListingGroupFilterOperation update */
                        update?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);

                        /** AssetGroupListingGroupFilterOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AssetGroupListingGroupFilterOperation. */
                    class AssetGroupListingGroupFilterOperation implements IAssetGroupListingGroupFilterOperation {

                        /**
                         * Constructs a new AssetGroupListingGroupFilterOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation);

                        /** AssetGroupListingGroupFilterOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetGroupListingGroupFilterOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);

                        /** AssetGroupListingGroupFilterOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);

                        /** AssetGroupListingGroupFilterOperation remove. */
                        public remove?: (string|null);

                        /** AssetGroupListingGroupFilterOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AssetGroupListingGroupFilterOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupListingGroupFilterOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation): google.ads.googleads.v23.services.AssetGroupListingGroupFilterOperation;

                        /**
                         * Encodes the specified AssetGroupListingGroupFilterOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupListingGroupFilterOperation.verify|verify} messages.
                         * @param message AssetGroupListingGroupFilterOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupListingGroupFilterOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupListingGroupFilterOperation.verify|verify} messages.
                         * @param message AssetGroupListingGroupFilterOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupListingGroupFilterOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupListingGroupFilterOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetGroupListingGroupFilterOperation;

                        /**
                         * Decodes an AssetGroupListingGroupFilterOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupListingGroupFilterOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetGroupListingGroupFilterOperation;

                        /**
                         * Verifies an AssetGroupListingGroupFilterOperation message.
                         * @param message Plain 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 AssetGroupListingGroupFilterOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupListingGroupFilterOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetGroupListingGroupFilterOperation;

                        /**
                         * Creates a plain object from an AssetGroupListingGroupFilterOperation message. Also converts values to other types if specified.
                         * @param message AssetGroupListingGroupFilterOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetGroupListingGroupFilterOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupListingGroupFilterOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupListingGroupFilterOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupListingGroupFiltersResponse. */
                    interface IMutateAssetGroupListingGroupFiltersResponse {

                        /** MutateAssetGroupListingGroupFiltersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult[]|null);
                    }

                    /** Represents a MutateAssetGroupListingGroupFiltersResponse. */
                    class MutateAssetGroupListingGroupFiltersResponse implements IMutateAssetGroupListingGroupFiltersResponse {

                        /**
                         * Constructs a new MutateAssetGroupListingGroupFiltersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersResponse);

                        /** MutateAssetGroupListingGroupFiltersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult[];

                        /**
                         * Creates a new MutateAssetGroupListingGroupFiltersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupListingGroupFiltersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersResponse): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse;

                        /**
                         * Encodes the specified MutateAssetGroupListingGroupFiltersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse.verify|verify} messages.
                         * @param message MutateAssetGroupListingGroupFiltersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupListingGroupFiltersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse.verify|verify} messages.
                         * @param message MutateAssetGroupListingGroupFiltersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFiltersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupListingGroupFiltersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupListingGroupFiltersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse;

                        /**
                         * Decodes a MutateAssetGroupListingGroupFiltersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupListingGroupFiltersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse;

                        /**
                         * Verifies a MutateAssetGroupListingGroupFiltersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupListingGroupFiltersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupListingGroupFiltersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse;

                        /**
                         * Creates a plain object from a MutateAssetGroupListingGroupFiltersResponse message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupListingGroupFiltersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupListingGroupFiltersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupListingGroupFiltersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupListingGroupFiltersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupListingGroupFilterResult. */
                    interface IMutateAssetGroupListingGroupFilterResult {

                        /** MutateAssetGroupListingGroupFilterResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAssetGroupListingGroupFilterResult asset_group_listing_group_filter */
                        asset_group_listing_group_filter?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);
                    }

                    /** Represents a MutateAssetGroupListingGroupFilterResult. */
                    class MutateAssetGroupListingGroupFilterResult implements IMutateAssetGroupListingGroupFilterResult {

                        /**
                         * Constructs a new MutateAssetGroupListingGroupFilterResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult);

                        /** MutateAssetGroupListingGroupFilterResult resource_name. */
                        public resource_name: string;

                        /** MutateAssetGroupListingGroupFilterResult asset_group_listing_group_filter. */
                        public asset_group_listing_group_filter?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);

                        /**
                         * Creates a new MutateAssetGroupListingGroupFilterResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupListingGroupFilterResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFilterResult;

                        /**
                         * Encodes the specified MutateAssetGroupListingGroupFilterResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupListingGroupFilterResult.verify|verify} messages.
                         * @param message MutateAssetGroupListingGroupFilterResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupListingGroupFilterResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupListingGroupFilterResult.verify|verify} messages.
                         * @param message MutateAssetGroupListingGroupFilterResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupListingGroupFilterResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupListingGroupFilterResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFilterResult;

                        /**
                         * Decodes a MutateAssetGroupListingGroupFilterResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupListingGroupFilterResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFilterResult;

                        /**
                         * Verifies a MutateAssetGroupListingGroupFilterResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupListingGroupFilterResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupListingGroupFilterResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupListingGroupFilterResult;

                        /**
                         * Creates a plain object from a MutateAssetGroupListingGroupFilterResult message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupListingGroupFilterResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupListingGroupFilterResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupListingGroupFilterResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupListingGroupFilterResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetGroupService */
                    class AssetGroupService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetGroupService 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 AssetGroupService 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): AssetGroupService;

                        /**
                         * Calls MutateAssetGroups.
                         * @param request MutateAssetGroupsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAssetGroupsResponse
                         */
                        public mutateAssetGroups(request: google.ads.googleads.v23.services.IMutateAssetGroupsRequest, callback: google.ads.googleads.v23.services.AssetGroupService.MutateAssetGroupsCallback): void;

                        /**
                         * Calls MutateAssetGroups.
                         * @param request MutateAssetGroupsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssetGroups(request: google.ads.googleads.v23.services.IMutateAssetGroupsRequest): Promise<google.ads.googleads.v23.services.MutateAssetGroupsResponse>;
                    }

                    namespace AssetGroupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetGroupService|mutateAssetGroups}.
                         * @param error Error, if any
                         * @param [response] MutateAssetGroupsResponse
                         */
                        type MutateAssetGroupsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAssetGroupsResponse) => void;
                    }

                    /** Properties of a MutateAssetGroupsRequest. */
                    interface IMutateAssetGroupsRequest {

                        /** MutateAssetGroupsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetGroupsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAssetGroupOperation[]|null);

                        /** MutateAssetGroupsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAssetGroupsRequest. */
                    class MutateAssetGroupsRequest implements IMutateAssetGroupsRequest {

                        /**
                         * Constructs a new MutateAssetGroupsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupsRequest);

                        /** MutateAssetGroupsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetGroupsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAssetGroupOperation[];

                        /** MutateAssetGroupsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAssetGroupsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupsRequest): google.ads.googleads.v23.services.MutateAssetGroupsRequest;

                        /**
                         * Encodes the specified MutateAssetGroupsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupsRequest.verify|verify} messages.
                         * @param message MutateAssetGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupsRequest.verify|verify} messages.
                         * @param message MutateAssetGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupsRequest;

                        /**
                         * Decodes a MutateAssetGroupsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupsRequest;

                        /**
                         * Verifies a MutateAssetGroupsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupsRequest;

                        /**
                         * Creates a plain object from a MutateAssetGroupsRequest message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupOperation. */
                    interface IAssetGroupOperation {

                        /** AssetGroupOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetGroupOperation create */
                        create?: (google.ads.googleads.v23.resources.IAssetGroup|null);

                        /** AssetGroupOperation update */
                        update?: (google.ads.googleads.v23.resources.IAssetGroup|null);

                        /** AssetGroupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AssetGroupOperation. */
                    class AssetGroupOperation implements IAssetGroupOperation {

                        /**
                         * Constructs a new AssetGroupOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetGroupOperation);

                        /** AssetGroupOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetGroupOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAssetGroup|null);

                        /** AssetGroupOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAssetGroup|null);

                        /** AssetGroupOperation remove. */
                        public remove?: (string|null);

                        /** AssetGroupOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AssetGroupOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetGroupOperation): google.ads.googleads.v23.services.AssetGroupOperation;

                        /**
                         * Encodes the specified AssetGroupOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupOperation.verify|verify} messages.
                         * @param message AssetGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupOperation.verify|verify} messages.
                         * @param message AssetGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetGroupOperation;

                        /**
                         * Decodes an AssetGroupOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetGroupOperation;

                        /**
                         * Verifies an AssetGroupOperation message.
                         * @param message Plain 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 AssetGroupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetGroupOperation;

                        /**
                         * Creates a plain object from an AssetGroupOperation message. Also converts values to other types if specified.
                         * @param message AssetGroupOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetGroupOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupsResponse. */
                    interface IMutateAssetGroupsResponse {

                        /** MutateAssetGroupsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAssetGroupResult[]|null);

                        /** MutateAssetGroupsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAssetGroupsResponse. */
                    class MutateAssetGroupsResponse implements IMutateAssetGroupsResponse {

                        /**
                         * Constructs a new MutateAssetGroupsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupsResponse);

                        /** MutateAssetGroupsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAssetGroupResult[];

                        /** MutateAssetGroupsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAssetGroupsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupsResponse): google.ads.googleads.v23.services.MutateAssetGroupsResponse;

                        /**
                         * Encodes the specified MutateAssetGroupsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupsResponse.verify|verify} messages.
                         * @param message MutateAssetGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupsResponse.verify|verify} messages.
                         * @param message MutateAssetGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupsResponse;

                        /**
                         * Decodes a MutateAssetGroupsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupsResponse;

                        /**
                         * Verifies a MutateAssetGroupsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupsResponse;

                        /**
                         * Creates a plain object from a MutateAssetGroupsResponse message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupResult. */
                    interface IMutateAssetGroupResult {

                        /** MutateAssetGroupResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateAssetGroupResult. */
                    class MutateAssetGroupResult implements IMutateAssetGroupResult {

                        /**
                         * Constructs a new MutateAssetGroupResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupResult);

                        /** MutateAssetGroupResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateAssetGroupResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupResult): google.ads.googleads.v23.services.MutateAssetGroupResult;

                        /**
                         * Encodes the specified MutateAssetGroupResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupResult.verify|verify} messages.
                         * @param message MutateAssetGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupResult.verify|verify} messages.
                         * @param message MutateAssetGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupResult;

                        /**
                         * Decodes a MutateAssetGroupResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupResult;

                        /**
                         * Verifies a MutateAssetGroupResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupResult;

                        /**
                         * Creates a plain object from a MutateAssetGroupResult message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetGroupSignalService */
                    class AssetGroupSignalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetGroupSignalService 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 AssetGroupSignalService 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): AssetGroupSignalService;

                        /**
                         * Calls MutateAssetGroupSignals.
                         * @param request MutateAssetGroupSignalsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAssetGroupSignalsResponse
                         */
                        public mutateAssetGroupSignals(request: google.ads.googleads.v23.services.IMutateAssetGroupSignalsRequest, callback: google.ads.googleads.v23.services.AssetGroupSignalService.MutateAssetGroupSignalsCallback): void;

                        /**
                         * Calls MutateAssetGroupSignals.
                         * @param request MutateAssetGroupSignalsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssetGroupSignals(request: google.ads.googleads.v23.services.IMutateAssetGroupSignalsRequest): Promise<google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse>;
                    }

                    namespace AssetGroupSignalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetGroupSignalService|mutateAssetGroupSignals}.
                         * @param error Error, if any
                         * @param [response] MutateAssetGroupSignalsResponse
                         */
                        type MutateAssetGroupSignalsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse) => void;
                    }

                    /** Properties of a MutateAssetGroupSignalsRequest. */
                    interface IMutateAssetGroupSignalsRequest {

                        /** MutateAssetGroupSignalsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetGroupSignalsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAssetGroupSignalOperation[]|null);

                        /** MutateAssetGroupSignalsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAssetGroupSignalsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAssetGroupSignalsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAssetGroupSignalsRequest. */
                    class MutateAssetGroupSignalsRequest implements IMutateAssetGroupSignalsRequest {

                        /**
                         * Constructs a new MutateAssetGroupSignalsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupSignalsRequest);

                        /** MutateAssetGroupSignalsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetGroupSignalsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAssetGroupSignalOperation[];

                        /** MutateAssetGroupSignalsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAssetGroupSignalsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAssetGroupSignalsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAssetGroupSignalsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupSignalsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupSignalsRequest): google.ads.googleads.v23.services.MutateAssetGroupSignalsRequest;

                        /**
                         * Encodes the specified MutateAssetGroupSignalsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupSignalsRequest.verify|verify} messages.
                         * @param message MutateAssetGroupSignalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupSignalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupSignalsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupSignalsRequest.verify|verify} messages.
                         * @param message MutateAssetGroupSignalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupSignalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupSignalsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupSignalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupSignalsRequest;

                        /**
                         * Decodes a MutateAssetGroupSignalsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupSignalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupSignalsRequest;

                        /**
                         * Verifies a MutateAssetGroupSignalsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupSignalsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupSignalsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupSignalsRequest;

                        /**
                         * Creates a plain object from a MutateAssetGroupSignalsRequest message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupSignalsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupSignalsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupSignalsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupSignalsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupSignalOperation. */
                    interface IAssetGroupSignalOperation {

                        /** AssetGroupSignalOperation exempt_policy_violation_keys */
                        exempt_policy_violation_keys?: (google.ads.googleads.v23.common.IPolicyViolationKey[]|null);

                        /** AssetGroupSignalOperation create */
                        create?: (google.ads.googleads.v23.resources.IAssetGroupSignal|null);

                        /** AssetGroupSignalOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AssetGroupSignalOperation. */
                    class AssetGroupSignalOperation implements IAssetGroupSignalOperation {

                        /**
                         * Constructs a new AssetGroupSignalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetGroupSignalOperation);

                        /** AssetGroupSignalOperation exempt_policy_violation_keys. */
                        public exempt_policy_violation_keys: google.ads.googleads.v23.common.IPolicyViolationKey[];

                        /** AssetGroupSignalOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAssetGroupSignal|null);

                        /** AssetGroupSignalOperation remove. */
                        public remove?: (string|null);

                        /** AssetGroupSignalOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AssetGroupSignalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupSignalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetGroupSignalOperation): google.ads.googleads.v23.services.AssetGroupSignalOperation;

                        /**
                         * Encodes the specified AssetGroupSignalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupSignalOperation.verify|verify} messages.
                         * @param message AssetGroupSignalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetGroupSignalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupSignalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupSignalOperation.verify|verify} messages.
                         * @param message AssetGroupSignalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetGroupSignalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupSignalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupSignalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetGroupSignalOperation;

                        /**
                         * Decodes an AssetGroupSignalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupSignalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetGroupSignalOperation;

                        /**
                         * Verifies an AssetGroupSignalOperation message.
                         * @param message Plain 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 AssetGroupSignalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupSignalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetGroupSignalOperation;

                        /**
                         * Creates a plain object from an AssetGroupSignalOperation message. Also converts values to other types if specified.
                         * @param message AssetGroupSignalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetGroupSignalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupSignalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupSignalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupSignalsResponse. */
                    interface IMutateAssetGroupSignalsResponse {

                        /** MutateAssetGroupSignalsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAssetGroupSignalResult[]|null);

                        /** MutateAssetGroupSignalsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAssetGroupSignalsResponse. */
                    class MutateAssetGroupSignalsResponse implements IMutateAssetGroupSignalsResponse {

                        /**
                         * Constructs a new MutateAssetGroupSignalsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupSignalsResponse);

                        /** MutateAssetGroupSignalsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAssetGroupSignalResult[];

                        /** MutateAssetGroupSignalsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAssetGroupSignalsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupSignalsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupSignalsResponse): google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse;

                        /**
                         * Encodes the specified MutateAssetGroupSignalsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse.verify|verify} messages.
                         * @param message MutateAssetGroupSignalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupSignalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupSignalsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse.verify|verify} messages.
                         * @param message MutateAssetGroupSignalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupSignalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupSignalsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupSignalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse;

                        /**
                         * Decodes a MutateAssetGroupSignalsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupSignalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse;

                        /**
                         * Verifies a MutateAssetGroupSignalsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupSignalsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupSignalsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse;

                        /**
                         * Creates a plain object from a MutateAssetGroupSignalsResponse message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupSignalsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupSignalsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupSignalsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupSignalsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetGroupSignalResult. */
                    interface IMutateAssetGroupSignalResult {

                        /** MutateAssetGroupSignalResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAssetGroupSignalResult asset_group_signal */
                        asset_group_signal?: (google.ads.googleads.v23.resources.IAssetGroupSignal|null);
                    }

                    /** Represents a MutateAssetGroupSignalResult. */
                    class MutateAssetGroupSignalResult implements IMutateAssetGroupSignalResult {

                        /**
                         * Constructs a new MutateAssetGroupSignalResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetGroupSignalResult);

                        /** MutateAssetGroupSignalResult resource_name. */
                        public resource_name: string;

                        /** MutateAssetGroupSignalResult asset_group_signal. */
                        public asset_group_signal?: (google.ads.googleads.v23.resources.IAssetGroupSignal|null);

                        /**
                         * Creates a new MutateAssetGroupSignalResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetGroupSignalResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetGroupSignalResult): google.ads.googleads.v23.services.MutateAssetGroupSignalResult;

                        /**
                         * Encodes the specified MutateAssetGroupSignalResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupSignalResult.verify|verify} messages.
                         * @param message MutateAssetGroupSignalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetGroupSignalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetGroupSignalResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetGroupSignalResult.verify|verify} messages.
                         * @param message MutateAssetGroupSignalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetGroupSignalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetGroupSignalResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetGroupSignalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetGroupSignalResult;

                        /**
                         * Decodes a MutateAssetGroupSignalResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetGroupSignalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetGroupSignalResult;

                        /**
                         * Verifies a MutateAssetGroupSignalResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetGroupSignalResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetGroupSignalResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetGroupSignalResult;

                        /**
                         * Creates a plain object from a MutateAssetGroupSignalResult message. Also converts values to other types if specified.
                         * @param message MutateAssetGroupSignalResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetGroupSignalResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetGroupSignalResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetGroupSignalResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetService */
                    class AssetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetService 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 AssetService 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): AssetService;

                        /**
                         * Calls MutateAssets.
                         * @param request MutateAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAssetsResponse
                         */
                        public mutateAssets(request: google.ads.googleads.v23.services.IMutateAssetsRequest, callback: google.ads.googleads.v23.services.AssetService.MutateAssetsCallback): void;

                        /**
                         * Calls MutateAssets.
                         * @param request MutateAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssets(request: google.ads.googleads.v23.services.IMutateAssetsRequest): Promise<google.ads.googleads.v23.services.MutateAssetsResponse>;
                    }

                    namespace AssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetService|mutateAssets}.
                         * @param error Error, if any
                         * @param [response] MutateAssetsResponse
                         */
                        type MutateAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAssetsResponse) => void;
                    }

                    /** Properties of a MutateAssetsRequest. */
                    interface IMutateAssetsRequest {

                        /** MutateAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAssetOperation[]|null);

                        /** MutateAssetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAssetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);

                        /** MutateAssetsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAssetsRequest. */
                    class MutateAssetsRequest implements IMutateAssetsRequest {

                        /**
                         * Constructs a new MutateAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetsRequest);

                        /** MutateAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAssetOperation[];

                        /** MutateAssetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAssetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /** MutateAssetsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetsRequest): google.ads.googleads.v23.services.MutateAssetsRequest;

                        /**
                         * Encodes the specified MutateAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetsRequest.verify|verify} messages.
                         * @param message MutateAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetsRequest.verify|verify} messages.
                         * @param message MutateAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetsRequest;

                        /**
                         * Decodes a MutateAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetsRequest;

                        /**
                         * Verifies a MutateAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetsRequest;

                        /**
                         * Creates a plain object from a MutateAssetsRequest message. Also converts values to other types if specified.
                         * @param message MutateAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetOperation. */
                    interface IAssetOperation {

                        /** AssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetOperation create */
                        create?: (google.ads.googleads.v23.resources.IAsset|null);

                        /** AssetOperation update */
                        update?: (google.ads.googleads.v23.resources.IAsset|null);
                    }

                    /** Represents an AssetOperation. */
                    class AssetOperation implements IAssetOperation {

                        /**
                         * Constructs a new AssetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetOperation);

                        /** AssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAsset|null);

                        /** AssetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAsset|null);

                        /** AssetOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new AssetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetOperation): google.ads.googleads.v23.services.AssetOperation;

                        /**
                         * Encodes the specified AssetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AssetOperation.verify|verify} messages.
                         * @param message AssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetOperation.verify|verify} messages.
                         * @param message AssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetOperation;

                        /**
                         * Decodes an AssetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetOperation;

                        /**
                         * Verifies an AssetOperation message.
                         * @param message Plain 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 AssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetOperation;

                        /**
                         * Creates a plain object from an AssetOperation message. Also converts values to other types if specified.
                         * @param message AssetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetsResponse. */
                    interface IMutateAssetsResponse {

                        /** MutateAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAssetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAssetResult[]|null);
                    }

                    /** Represents a MutateAssetsResponse. */
                    class MutateAssetsResponse implements IMutateAssetsResponse {

                        /**
                         * Constructs a new MutateAssetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetsResponse);

                        /** MutateAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAssetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAssetResult[];

                        /**
                         * Creates a new MutateAssetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetsResponse): google.ads.googleads.v23.services.MutateAssetsResponse;

                        /**
                         * Encodes the specified MutateAssetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetsResponse.verify|verify} messages.
                         * @param message MutateAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetsResponse.verify|verify} messages.
                         * @param message MutateAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetsResponse;

                        /**
                         * Decodes a MutateAssetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetsResponse;

                        /**
                         * Verifies a MutateAssetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetsResponse;

                        /**
                         * Creates a plain object from a MutateAssetsResponse message. Also converts values to other types if specified.
                         * @param message MutateAssetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetResult. */
                    interface IMutateAssetResult {

                        /** MutateAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAssetResult asset */
                        asset?: (google.ads.googleads.v23.resources.IAsset|null);
                    }

                    /** Represents a MutateAssetResult. */
                    class MutateAssetResult implements IMutateAssetResult {

                        /**
                         * Constructs a new MutateAssetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetResult);

                        /** MutateAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateAssetResult asset. */
                        public asset?: (google.ads.googleads.v23.resources.IAsset|null);

                        /**
                         * Creates a new MutateAssetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetResult): google.ads.googleads.v23.services.MutateAssetResult;

                        /**
                         * Encodes the specified MutateAssetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetResult.verify|verify} messages.
                         * @param message MutateAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetResult.verify|verify} messages.
                         * @param message MutateAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetResult;

                        /**
                         * Decodes a MutateAssetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetResult;

                        /**
                         * Verifies a MutateAssetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetResult;

                        /**
                         * Creates a plain object from a MutateAssetResult message. Also converts values to other types if specified.
                         * @param message MutateAssetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetSetAssetService */
                    class AssetSetAssetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetSetAssetService 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 AssetSetAssetService 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): AssetSetAssetService;

                        /**
                         * Calls MutateAssetSetAssets.
                         * @param request MutateAssetSetAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAssetSetAssetsResponse
                         */
                        public mutateAssetSetAssets(request: google.ads.googleads.v23.services.IMutateAssetSetAssetsRequest, callback: google.ads.googleads.v23.services.AssetSetAssetService.MutateAssetSetAssetsCallback): void;

                        /**
                         * Calls MutateAssetSetAssets.
                         * @param request MutateAssetSetAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssetSetAssets(request: google.ads.googleads.v23.services.IMutateAssetSetAssetsRequest): Promise<google.ads.googleads.v23.services.MutateAssetSetAssetsResponse>;
                    }

                    namespace AssetSetAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetSetAssetService|mutateAssetSetAssets}.
                         * @param error Error, if any
                         * @param [response] MutateAssetSetAssetsResponse
                         */
                        type MutateAssetSetAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAssetSetAssetsResponse) => void;
                    }

                    /** Properties of a MutateAssetSetAssetsRequest. */
                    interface IMutateAssetSetAssetsRequest {

                        /** MutateAssetSetAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetSetAssetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAssetSetAssetOperation[]|null);

                        /** MutateAssetSetAssetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAssetSetAssetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAssetSetAssetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAssetSetAssetsRequest. */
                    class MutateAssetSetAssetsRequest implements IMutateAssetSetAssetsRequest {

                        /**
                         * Constructs a new MutateAssetSetAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetSetAssetsRequest);

                        /** MutateAssetSetAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetSetAssetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAssetSetAssetOperation[];

                        /** MutateAssetSetAssetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAssetSetAssetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAssetSetAssetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAssetSetAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetSetAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetSetAssetsRequest): google.ads.googleads.v23.services.MutateAssetSetAssetsRequest;

                        /**
                         * Encodes the specified MutateAssetSetAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetAssetsRequest.verify|verify} messages.
                         * @param message MutateAssetSetAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetSetAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetSetAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetAssetsRequest.verify|verify} messages.
                         * @param message MutateAssetSetAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetSetAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetSetAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetSetAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetSetAssetsRequest;

                        /**
                         * Decodes a MutateAssetSetAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetSetAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetSetAssetsRequest;

                        /**
                         * Verifies a MutateAssetSetAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetSetAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetSetAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetSetAssetsRequest;

                        /**
                         * Creates a plain object from a MutateAssetSetAssetsRequest message. Also converts values to other types if specified.
                         * @param message MutateAssetSetAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetSetAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetSetAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetSetAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetSetAssetOperation. */
                    interface IAssetSetAssetOperation {

                        /** AssetSetAssetOperation create */
                        create?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);

                        /** AssetSetAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AssetSetAssetOperation. */
                    class AssetSetAssetOperation implements IAssetSetAssetOperation {

                        /**
                         * Constructs a new AssetSetAssetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetSetAssetOperation);

                        /** AssetSetAssetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);

                        /** AssetSetAssetOperation remove. */
                        public remove?: (string|null);

                        /** AssetSetAssetOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new AssetSetAssetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetAssetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetSetAssetOperation): google.ads.googleads.v23.services.AssetSetAssetOperation;

                        /**
                         * Encodes the specified AssetSetAssetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AssetSetAssetOperation.verify|verify} messages.
                         * @param message AssetSetAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetSetAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetSetAssetOperation.verify|verify} messages.
                         * @param message AssetSetAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetSetAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetAssetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetSetAssetOperation;

                        /**
                         * Decodes an AssetSetAssetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetSetAssetOperation;

                        /**
                         * Verifies an AssetSetAssetOperation message.
                         * @param message Plain 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 AssetSetAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetAssetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetSetAssetOperation;

                        /**
                         * Creates a plain object from an AssetSetAssetOperation message. Also converts values to other types if specified.
                         * @param message AssetSetAssetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetSetAssetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetAssetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetSetAssetsResponse. */
                    interface IMutateAssetSetAssetsResponse {

                        /** MutateAssetSetAssetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAssetSetAssetResult[]|null);

                        /** MutateAssetSetAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAssetSetAssetsResponse. */
                    class MutateAssetSetAssetsResponse implements IMutateAssetSetAssetsResponse {

                        /**
                         * Constructs a new MutateAssetSetAssetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetSetAssetsResponse);

                        /** MutateAssetSetAssetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAssetSetAssetResult[];

                        /** MutateAssetSetAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAssetSetAssetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetSetAssetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetSetAssetsResponse): google.ads.googleads.v23.services.MutateAssetSetAssetsResponse;

                        /**
                         * Encodes the specified MutateAssetSetAssetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetAssetsResponse.verify|verify} messages.
                         * @param message MutateAssetSetAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetSetAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetSetAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetAssetsResponse.verify|verify} messages.
                         * @param message MutateAssetSetAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetSetAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetSetAssetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetSetAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetSetAssetsResponse;

                        /**
                         * Decodes a MutateAssetSetAssetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetSetAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetSetAssetsResponse;

                        /**
                         * Verifies a MutateAssetSetAssetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetSetAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetSetAssetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetSetAssetsResponse;

                        /**
                         * Creates a plain object from a MutateAssetSetAssetsResponse message. Also converts values to other types if specified.
                         * @param message MutateAssetSetAssetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetSetAssetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetSetAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetSetAssetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetSetAssetResult. */
                    interface IMutateAssetSetAssetResult {

                        /** MutateAssetSetAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAssetSetAssetResult asset_set_asset */
                        asset_set_asset?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);
                    }

                    /** Represents a MutateAssetSetAssetResult. */
                    class MutateAssetSetAssetResult implements IMutateAssetSetAssetResult {

                        /**
                         * Constructs a new MutateAssetSetAssetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetSetAssetResult);

                        /** MutateAssetSetAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateAssetSetAssetResult asset_set_asset. */
                        public asset_set_asset?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);

                        /**
                         * Creates a new MutateAssetSetAssetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetSetAssetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetSetAssetResult): google.ads.googleads.v23.services.MutateAssetSetAssetResult;

                        /**
                         * Encodes the specified MutateAssetSetAssetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetAssetResult.verify|verify} messages.
                         * @param message MutateAssetSetAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetSetAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetSetAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetAssetResult.verify|verify} messages.
                         * @param message MutateAssetSetAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetSetAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetSetAssetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetSetAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetSetAssetResult;

                        /**
                         * Decodes a MutateAssetSetAssetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetSetAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetSetAssetResult;

                        /**
                         * Verifies a MutateAssetSetAssetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetSetAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetSetAssetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetSetAssetResult;

                        /**
                         * Creates a plain object from a MutateAssetSetAssetResult message. Also converts values to other types if specified.
                         * @param message MutateAssetSetAssetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetSetAssetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetSetAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetSetAssetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AssetSetService */
                    class AssetSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetSetService 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 AssetSetService 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): AssetSetService;

                        /**
                         * Calls MutateAssetSets.
                         * @param request MutateAssetSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAssetSetsResponse
                         */
                        public mutateAssetSets(request: google.ads.googleads.v23.services.IMutateAssetSetsRequest, callback: google.ads.googleads.v23.services.AssetSetService.MutateAssetSetsCallback): void;

                        /**
                         * Calls MutateAssetSets.
                         * @param request MutateAssetSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssetSets(request: google.ads.googleads.v23.services.IMutateAssetSetsRequest): Promise<google.ads.googleads.v23.services.MutateAssetSetsResponse>;
                    }

                    namespace AssetSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AssetSetService|mutateAssetSets}.
                         * @param error Error, if any
                         * @param [response] MutateAssetSetsResponse
                         */
                        type MutateAssetSetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAssetSetsResponse) => void;
                    }

                    /** Properties of a MutateAssetSetsRequest. */
                    interface IMutateAssetSetsRequest {

                        /** MutateAssetSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetSetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAssetSetOperation[]|null);

                        /** MutateAssetSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAssetSetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAssetSetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAssetSetsRequest. */
                    class MutateAssetSetsRequest implements IMutateAssetSetsRequest {

                        /**
                         * Constructs a new MutateAssetSetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetSetsRequest);

                        /** MutateAssetSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetSetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAssetSetOperation[];

                        /** MutateAssetSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAssetSetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAssetSetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAssetSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetSetsRequest): google.ads.googleads.v23.services.MutateAssetSetsRequest;

                        /**
                         * Encodes the specified MutateAssetSetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetsRequest.verify|verify} messages.
                         * @param message MutateAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetsRequest.verify|verify} messages.
                         * @param message MutateAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetSetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetSetsRequest;

                        /**
                         * Decodes a MutateAssetSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetSetsRequest;

                        /**
                         * Verifies a MutateAssetSetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetSetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetSetsRequest;

                        /**
                         * Creates a plain object from a MutateAssetSetsRequest message. Also converts values to other types if specified.
                         * @param message MutateAssetSetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetSetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetSetOperation. */
                    interface IAssetSetOperation {

                        /** AssetSetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetSetOperation create */
                        create?: (google.ads.googleads.v23.resources.IAssetSet|null);

                        /** AssetSetOperation update */
                        update?: (google.ads.googleads.v23.resources.IAssetSet|null);

                        /** AssetSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AssetSetOperation. */
                    class AssetSetOperation implements IAssetSetOperation {

                        /**
                         * Constructs a new AssetSetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetSetOperation);

                        /** AssetSetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetSetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAssetSet|null);

                        /** AssetSetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAssetSet|null);

                        /** AssetSetOperation remove. */
                        public remove?: (string|null);

                        /** AssetSetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AssetSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetSetOperation): google.ads.googleads.v23.services.AssetSetOperation;

                        /**
                         * Encodes the specified AssetSetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AssetSetOperation.verify|verify} messages.
                         * @param message AssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetSetOperation.verify|verify} messages.
                         * @param message AssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetSetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetSetOperation;

                        /**
                         * Decodes an AssetSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetSetOperation;

                        /**
                         * Verifies an AssetSetOperation message.
                         * @param message Plain 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 AssetSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetSetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetSetOperation;

                        /**
                         * Creates a plain object from an AssetSetOperation message. Also converts values to other types if specified.
                         * @param message AssetSetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetSetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetSetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetSetsResponse. */
                    interface IMutateAssetSetsResponse {

                        /** MutateAssetSetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAssetSetResult[]|null);

                        /** MutateAssetSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAssetSetsResponse. */
                    class MutateAssetSetsResponse implements IMutateAssetSetsResponse {

                        /**
                         * Constructs a new MutateAssetSetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetSetsResponse);

                        /** MutateAssetSetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAssetSetResult[];

                        /** MutateAssetSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAssetSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetSetsResponse): google.ads.googleads.v23.services.MutateAssetSetsResponse;

                        /**
                         * Encodes the specified MutateAssetSetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetsResponse.verify|verify} messages.
                         * @param message MutateAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetsResponse.verify|verify} messages.
                         * @param message MutateAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetSetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetSetsResponse;

                        /**
                         * Decodes a MutateAssetSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetSetsResponse;

                        /**
                         * Verifies a MutateAssetSetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetSetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetSetsResponse;

                        /**
                         * Creates a plain object from a MutateAssetSetsResponse message. Also converts values to other types if specified.
                         * @param message MutateAssetSetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetSetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAssetSetResult. */
                    interface IMutateAssetSetResult {

                        /** MutateAssetSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAssetSetResult asset_set */
                        asset_set?: (google.ads.googleads.v23.resources.IAssetSet|null);
                    }

                    /** Represents a MutateAssetSetResult. */
                    class MutateAssetSetResult implements IMutateAssetSetResult {

                        /**
                         * Constructs a new MutateAssetSetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAssetSetResult);

                        /** MutateAssetSetResult resource_name. */
                        public resource_name: string;

                        /** MutateAssetSetResult asset_set. */
                        public asset_set?: (google.ads.googleads.v23.resources.IAssetSet|null);

                        /**
                         * Creates a new MutateAssetSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAssetSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAssetSetResult): google.ads.googleads.v23.services.MutateAssetSetResult;

                        /**
                         * Encodes the specified MutateAssetSetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetResult.verify|verify} messages.
                         * @param message MutateAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAssetSetResult.verify|verify} messages.
                         * @param message MutateAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetSetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAssetSetResult;

                        /**
                         * Decodes a MutateAssetSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAssetSetResult;

                        /**
                         * Verifies a MutateAssetSetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAssetSetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAssetSetResult;

                        /**
                         * Creates a plain object from a MutateAssetSetResult message. Also converts values to other types if specified.
                         * @param message MutateAssetSetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAssetSetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAssetSetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AudienceInsightsService */
                    class AudienceInsightsService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AudienceInsightsService 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 AudienceInsightsService 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): AudienceInsightsService;

                        /**
                         * Calls GenerateInsightsFinderReport.
                         * @param request GenerateInsightsFinderReportRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateInsightsFinderReportResponse
                         */
                        public generateInsightsFinderReport(request: google.ads.googleads.v23.services.IGenerateInsightsFinderReportRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.GenerateInsightsFinderReportCallback): void;

                        /**
                         * Calls GenerateInsightsFinderReport.
                         * @param request GenerateInsightsFinderReportRequest message or plain object
                         * @returns Promise
                         */
                        public generateInsightsFinderReport(request: google.ads.googleads.v23.services.IGenerateInsightsFinderReportRequest): Promise<google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse>;

                        /**
                         * Calls ListAudienceInsightsAttributes.
                         * @param request ListAudienceInsightsAttributesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListAudienceInsightsAttributesResponse
                         */
                        public listAudienceInsightsAttributes(request: google.ads.googleads.v23.services.IListAudienceInsightsAttributesRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.ListAudienceInsightsAttributesCallback): void;

                        /**
                         * Calls ListAudienceInsightsAttributes.
                         * @param request ListAudienceInsightsAttributesRequest message or plain object
                         * @returns Promise
                         */
                        public listAudienceInsightsAttributes(request: google.ads.googleads.v23.services.IListAudienceInsightsAttributesRequest): Promise<google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse>;

                        /**
                         * Calls ListInsightsEligibleDates.
                         * @param request ListInsightsEligibleDatesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListInsightsEligibleDatesResponse
                         */
                        public listInsightsEligibleDates(request: google.ads.googleads.v23.services.IListInsightsEligibleDatesRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.ListInsightsEligibleDatesCallback): void;

                        /**
                         * Calls ListInsightsEligibleDates.
                         * @param request ListInsightsEligibleDatesRequest message or plain object
                         * @returns Promise
                         */
                        public listInsightsEligibleDates(request: google.ads.googleads.v23.services.IListInsightsEligibleDatesRequest): Promise<google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse>;

                        /**
                         * Calls GenerateAudienceCompositionInsights.
                         * @param request GenerateAudienceCompositionInsightsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateAudienceCompositionInsightsResponse
                         */
                        public generateAudienceCompositionInsights(request: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.GenerateAudienceCompositionInsightsCallback): void;

                        /**
                         * Calls GenerateAudienceCompositionInsights.
                         * @param request GenerateAudienceCompositionInsightsRequest message or plain object
                         * @returns Promise
                         */
                        public generateAudienceCompositionInsights(request: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsRequest): Promise<google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse>;

                        /**
                         * Calls GenerateAudienceDefinition.
                         * @param request GenerateAudienceDefinitionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateAudienceDefinitionResponse
                         */
                        public generateAudienceDefinition(request: google.ads.googleads.v23.services.IGenerateAudienceDefinitionRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.GenerateAudienceDefinitionCallback): void;

                        /**
                         * Calls GenerateAudienceDefinition.
                         * @param request GenerateAudienceDefinitionRequest message or plain object
                         * @returns Promise
                         */
                        public generateAudienceDefinition(request: google.ads.googleads.v23.services.IGenerateAudienceDefinitionRequest): Promise<google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse>;

                        /**
                         * Calls GenerateSuggestedTargetingInsights.
                         * @param request GenerateSuggestedTargetingInsightsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateSuggestedTargetingInsightsResponse
                         */
                        public generateSuggestedTargetingInsights(request: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.GenerateSuggestedTargetingInsightsCallback): void;

                        /**
                         * Calls GenerateSuggestedTargetingInsights.
                         * @param request GenerateSuggestedTargetingInsightsRequest message or plain object
                         * @returns Promise
                         */
                        public generateSuggestedTargetingInsights(request: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsRequest): Promise<google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse>;

                        /**
                         * Calls GenerateAudienceOverlapInsights.
                         * @param request GenerateAudienceOverlapInsightsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateAudienceOverlapInsightsResponse
                         */
                        public generateAudienceOverlapInsights(request: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.GenerateAudienceOverlapInsightsCallback): void;

                        /**
                         * Calls GenerateAudienceOverlapInsights.
                         * @param request GenerateAudienceOverlapInsightsRequest message or plain object
                         * @returns Promise
                         */
                        public generateAudienceOverlapInsights(request: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsRequest): Promise<google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse>;

                        /**
                         * Calls GenerateTargetingSuggestionMetrics.
                         * @param request GenerateTargetingSuggestionMetricsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateTargetingSuggestionMetricsResponse
                         */
                        public generateTargetingSuggestionMetrics(request: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsRequest, callback: google.ads.googleads.v23.services.AudienceInsightsService.GenerateTargetingSuggestionMetricsCallback): void;

                        /**
                         * Calls GenerateTargetingSuggestionMetrics.
                         * @param request GenerateTargetingSuggestionMetricsRequest message or plain object
                         * @returns Promise
                         */
                        public generateTargetingSuggestionMetrics(request: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsRequest): Promise<google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse>;
                    }

                    namespace AudienceInsightsService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|generateInsightsFinderReport}.
                         * @param error Error, if any
                         * @param [response] GenerateInsightsFinderReportResponse
                         */
                        type GenerateInsightsFinderReportCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|listAudienceInsightsAttributes}.
                         * @param error Error, if any
                         * @param [response] ListAudienceInsightsAttributesResponse
                         */
                        type ListAudienceInsightsAttributesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|listInsightsEligibleDates}.
                         * @param error Error, if any
                         * @param [response] ListInsightsEligibleDatesResponse
                         */
                        type ListInsightsEligibleDatesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|generateAudienceCompositionInsights}.
                         * @param error Error, if any
                         * @param [response] GenerateAudienceCompositionInsightsResponse
                         */
                        type GenerateAudienceCompositionInsightsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|generateAudienceDefinition}.
                         * @param error Error, if any
                         * @param [response] GenerateAudienceDefinitionResponse
                         */
                        type GenerateAudienceDefinitionCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|generateSuggestedTargetingInsights}.
                         * @param error Error, if any
                         * @param [response] GenerateSuggestedTargetingInsightsResponse
                         */
                        type GenerateSuggestedTargetingInsightsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|generateAudienceOverlapInsights}.
                         * @param error Error, if any
                         * @param [response] GenerateAudienceOverlapInsightsResponse
                         */
                        type GenerateAudienceOverlapInsightsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceInsightsService|generateTargetingSuggestionMetrics}.
                         * @param error Error, if any
                         * @param [response] GenerateTargetingSuggestionMetricsResponse
                         */
                        type GenerateTargetingSuggestionMetricsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse) => void;
                    }

                    /** Properties of a GenerateInsightsFinderReportRequest. */
                    interface IGenerateInsightsFinderReportRequest {

                        /** GenerateInsightsFinderReportRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateInsightsFinderReportRequest baseline_audience */
                        baseline_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateInsightsFinderReportRequest specific_audience */
                        specific_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateInsightsFinderReportRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateInsightsFinderReportRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateInsightsFinderReportRequest. */
                    class GenerateInsightsFinderReportRequest implements IGenerateInsightsFinderReportRequest {

                        /**
                         * Constructs a new GenerateInsightsFinderReportRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateInsightsFinderReportRequest);

                        /** GenerateInsightsFinderReportRequest customer_id. */
                        public customer_id: string;

                        /** GenerateInsightsFinderReportRequest baseline_audience. */
                        public baseline_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateInsightsFinderReportRequest specific_audience. */
                        public specific_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateInsightsFinderReportRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateInsightsFinderReportRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateInsightsFinderReportRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateInsightsFinderReportRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateInsightsFinderReportRequest): google.ads.googleads.v23.services.GenerateInsightsFinderReportRequest;

                        /**
                         * Encodes the specified GenerateInsightsFinderReportRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateInsightsFinderReportRequest.verify|verify} messages.
                         * @param message GenerateInsightsFinderReportRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateInsightsFinderReportRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateInsightsFinderReportRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateInsightsFinderReportRequest.verify|verify} messages.
                         * @param message GenerateInsightsFinderReportRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateInsightsFinderReportRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateInsightsFinderReportRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateInsightsFinderReportRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateInsightsFinderReportRequest;

                        /**
                         * Decodes a GenerateInsightsFinderReportRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateInsightsFinderReportRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateInsightsFinderReportRequest;

                        /**
                         * Verifies a GenerateInsightsFinderReportRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateInsightsFinderReportRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateInsightsFinderReportRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateInsightsFinderReportRequest;

                        /**
                         * Creates a plain object from a GenerateInsightsFinderReportRequest message. Also converts values to other types if specified.
                         * @param message GenerateInsightsFinderReportRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateInsightsFinderReportRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateInsightsFinderReportRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateInsightsFinderReportRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateInsightsFinderReportResponse. */
                    interface IGenerateInsightsFinderReportResponse {

                        /** GenerateInsightsFinderReportResponse saved_report_url */
                        saved_report_url?: (string|null);
                    }

                    /** Represents a GenerateInsightsFinderReportResponse. */
                    class GenerateInsightsFinderReportResponse implements IGenerateInsightsFinderReportResponse {

                        /**
                         * Constructs a new GenerateInsightsFinderReportResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateInsightsFinderReportResponse);

                        /** GenerateInsightsFinderReportResponse saved_report_url. */
                        public saved_report_url: string;

                        /**
                         * Creates a new GenerateInsightsFinderReportResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateInsightsFinderReportResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateInsightsFinderReportResponse): google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse;

                        /**
                         * Encodes the specified GenerateInsightsFinderReportResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse.verify|verify} messages.
                         * @param message GenerateInsightsFinderReportResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateInsightsFinderReportResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateInsightsFinderReportResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse.verify|verify} messages.
                         * @param message GenerateInsightsFinderReportResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateInsightsFinderReportResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateInsightsFinderReportResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateInsightsFinderReportResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse;

                        /**
                         * Decodes a GenerateInsightsFinderReportResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateInsightsFinderReportResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse;

                        /**
                         * Verifies a GenerateInsightsFinderReportResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateInsightsFinderReportResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateInsightsFinderReportResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse;

                        /**
                         * Creates a plain object from a GenerateInsightsFinderReportResponse message. Also converts values to other types if specified.
                         * @param message GenerateInsightsFinderReportResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateInsightsFinderReportResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateInsightsFinderReportResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateInsightsFinderReportResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAudienceCompositionInsightsRequest. */
                    interface IGenerateAudienceCompositionInsightsRequest {

                        /** GenerateAudienceCompositionInsightsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateAudienceCompositionInsightsRequest audience */
                        audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateAudienceCompositionInsightsRequest baseline_audience */
                        baseline_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateAudienceCompositionInsightsRequest data_month */
                        data_month?: (string|null);

                        /** GenerateAudienceCompositionInsightsRequest dimensions */
                        dimensions?: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[]|null);

                        /** GenerateAudienceCompositionInsightsRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateAudienceCompositionInsightsRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateAudienceCompositionInsightsRequest. */
                    class GenerateAudienceCompositionInsightsRequest implements IGenerateAudienceCompositionInsightsRequest {

                        /**
                         * Constructs a new GenerateAudienceCompositionInsightsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsRequest);

                        /** GenerateAudienceCompositionInsightsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateAudienceCompositionInsightsRequest audience. */
                        public audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateAudienceCompositionInsightsRequest baseline_audience. */
                        public baseline_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** GenerateAudienceCompositionInsightsRequest data_month. */
                        public data_month: string;

                        /** GenerateAudienceCompositionInsightsRequest dimensions. */
                        public dimensions: google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[];

                        /** GenerateAudienceCompositionInsightsRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateAudienceCompositionInsightsRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateAudienceCompositionInsightsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAudienceCompositionInsightsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsRequest): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsRequest;

                        /**
                         * Encodes the specified GenerateAudienceCompositionInsightsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsRequest.verify|verify} messages.
                         * @param message GenerateAudienceCompositionInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAudienceCompositionInsightsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsRequest.verify|verify} messages.
                         * @param message GenerateAudienceCompositionInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAudienceCompositionInsightsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAudienceCompositionInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsRequest;

                        /**
                         * Decodes a GenerateAudienceCompositionInsightsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAudienceCompositionInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsRequest;

                        /**
                         * Verifies a GenerateAudienceCompositionInsightsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAudienceCompositionInsightsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAudienceCompositionInsightsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsRequest;

                        /**
                         * Creates a plain object from a GenerateAudienceCompositionInsightsRequest message. Also converts values to other types if specified.
                         * @param message GenerateAudienceCompositionInsightsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAudienceCompositionInsightsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAudienceCompositionInsightsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAudienceCompositionInsightsResponse. */
                    interface IGenerateAudienceCompositionInsightsResponse {

                        /** GenerateAudienceCompositionInsightsResponse sections */
                        sections?: (google.ads.googleads.v23.services.IAudienceCompositionSection[]|null);
                    }

                    /** Represents a GenerateAudienceCompositionInsightsResponse. */
                    class GenerateAudienceCompositionInsightsResponse implements IGenerateAudienceCompositionInsightsResponse {

                        /**
                         * Constructs a new GenerateAudienceCompositionInsightsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsResponse);

                        /** GenerateAudienceCompositionInsightsResponse sections. */
                        public sections: google.ads.googleads.v23.services.IAudienceCompositionSection[];

                        /**
                         * Creates a new GenerateAudienceCompositionInsightsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAudienceCompositionInsightsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsResponse): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse;

                        /**
                         * Encodes the specified GenerateAudienceCompositionInsightsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse.verify|verify} messages.
                         * @param message GenerateAudienceCompositionInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAudienceCompositionInsightsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse.verify|verify} messages.
                         * @param message GenerateAudienceCompositionInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAudienceCompositionInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAudienceCompositionInsightsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAudienceCompositionInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse;

                        /**
                         * Decodes a GenerateAudienceCompositionInsightsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAudienceCompositionInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse;

                        /**
                         * Verifies a GenerateAudienceCompositionInsightsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAudienceCompositionInsightsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAudienceCompositionInsightsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse;

                        /**
                         * Creates a plain object from a GenerateAudienceCompositionInsightsResponse message. Also converts values to other types if specified.
                         * @param message GenerateAudienceCompositionInsightsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAudienceCompositionInsightsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAudienceCompositionInsightsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAudienceCompositionInsightsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateSuggestedTargetingInsightsRequest. */
                    interface IGenerateSuggestedTargetingInsightsRequest {

                        /** GenerateSuggestedTargetingInsightsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateSuggestedTargetingInsightsRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateSuggestedTargetingInsightsRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** GenerateSuggestedTargetingInsightsRequest audience_definition */
                        audience_definition?: (google.ads.googleads.v23.services.IInsightsAudienceDefinition|null);

                        /** GenerateSuggestedTargetingInsightsRequest audience_description */
                        audience_description?: (google.ads.googleads.v23.services.IInsightsAudienceDescription|null);
                    }

                    /** Represents a GenerateSuggestedTargetingInsightsRequest. */
                    class GenerateSuggestedTargetingInsightsRequest implements IGenerateSuggestedTargetingInsightsRequest {

                        /**
                         * Constructs a new GenerateSuggestedTargetingInsightsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsRequest);

                        /** GenerateSuggestedTargetingInsightsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateSuggestedTargetingInsightsRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateSuggestedTargetingInsightsRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** GenerateSuggestedTargetingInsightsRequest audience_definition. */
                        public audience_definition?: (google.ads.googleads.v23.services.IInsightsAudienceDefinition|null);

                        /** GenerateSuggestedTargetingInsightsRequest audience_description. */
                        public audience_description?: (google.ads.googleads.v23.services.IInsightsAudienceDescription|null);

                        /** GenerateSuggestedTargetingInsightsRequest audience_input. */
                        public audience_input?: ("audience_definition"|"audience_description");

                        /**
                         * Creates a new GenerateSuggestedTargetingInsightsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateSuggestedTargetingInsightsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsRequest): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsRequest;

                        /**
                         * Encodes the specified GenerateSuggestedTargetingInsightsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsRequest.verify|verify} messages.
                         * @param message GenerateSuggestedTargetingInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateSuggestedTargetingInsightsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsRequest.verify|verify} messages.
                         * @param message GenerateSuggestedTargetingInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateSuggestedTargetingInsightsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateSuggestedTargetingInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsRequest;

                        /**
                         * Decodes a GenerateSuggestedTargetingInsightsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateSuggestedTargetingInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsRequest;

                        /**
                         * Verifies a GenerateSuggestedTargetingInsightsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateSuggestedTargetingInsightsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateSuggestedTargetingInsightsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsRequest;

                        /**
                         * Creates a plain object from a GenerateSuggestedTargetingInsightsRequest message. Also converts values to other types if specified.
                         * @param message GenerateSuggestedTargetingInsightsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateSuggestedTargetingInsightsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateSuggestedTargetingInsightsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateSuggestedTargetingInsightsResponse. */
                    interface IGenerateSuggestedTargetingInsightsResponse {

                        /** GenerateSuggestedTargetingInsightsResponse suggestions */
                        suggestions?: (google.ads.googleads.v23.services.ITargetingSuggestionMetrics[]|null);
                    }

                    /** Represents a GenerateSuggestedTargetingInsightsResponse. */
                    class GenerateSuggestedTargetingInsightsResponse implements IGenerateSuggestedTargetingInsightsResponse {

                        /**
                         * Constructs a new GenerateSuggestedTargetingInsightsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsResponse);

                        /** GenerateSuggestedTargetingInsightsResponse suggestions. */
                        public suggestions: google.ads.googleads.v23.services.ITargetingSuggestionMetrics[];

                        /**
                         * Creates a new GenerateSuggestedTargetingInsightsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateSuggestedTargetingInsightsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsResponse): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse;

                        /**
                         * Encodes the specified GenerateSuggestedTargetingInsightsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse.verify|verify} messages.
                         * @param message GenerateSuggestedTargetingInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateSuggestedTargetingInsightsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse.verify|verify} messages.
                         * @param message GenerateSuggestedTargetingInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateSuggestedTargetingInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateSuggestedTargetingInsightsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateSuggestedTargetingInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse;

                        /**
                         * Decodes a GenerateSuggestedTargetingInsightsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateSuggestedTargetingInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse;

                        /**
                         * Verifies a GenerateSuggestedTargetingInsightsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateSuggestedTargetingInsightsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateSuggestedTargetingInsightsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse;

                        /**
                         * Creates a plain object from a GenerateSuggestedTargetingInsightsResponse message. Also converts values to other types if specified.
                         * @param message GenerateSuggestedTargetingInsightsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateSuggestedTargetingInsightsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateSuggestedTargetingInsightsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateSuggestedTargetingInsightsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetingSuggestionMetrics. */
                    interface ITargetingSuggestionMetrics {

                        /** TargetingSuggestionMetrics locations */
                        locations?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);

                        /** TargetingSuggestionMetrics age_ranges */
                        age_ranges?: (google.ads.googleads.v23.common.IAgeRangeInfo[]|null);

                        /** TargetingSuggestionMetrics gender */
                        gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** TargetingSuggestionMetrics parental_status */
                        parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** TargetingSuggestionMetrics user_interests */
                        user_interests?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadataGroup[]|null);

                        /** TargetingSuggestionMetrics coverage */
                        coverage?: (number|null);

                        /** TargetingSuggestionMetrics index */
                        index?: (number|null);

                        /** TargetingSuggestionMetrics potential_youtube_reach */
                        potential_youtube_reach?: (number|null);
                    }

                    /** Represents a TargetingSuggestionMetrics. */
                    class TargetingSuggestionMetrics implements ITargetingSuggestionMetrics {

                        /**
                         * Constructs a new TargetingSuggestionMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ITargetingSuggestionMetrics);

                        /** TargetingSuggestionMetrics locations. */
                        public locations: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /** TargetingSuggestionMetrics age_ranges. */
                        public age_ranges: google.ads.googleads.v23.common.IAgeRangeInfo[];

                        /** TargetingSuggestionMetrics gender. */
                        public gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** TargetingSuggestionMetrics parental_status. */
                        public parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** TargetingSuggestionMetrics user_interests. */
                        public user_interests: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadataGroup[];

                        /** TargetingSuggestionMetrics coverage. */
                        public coverage: number;

                        /** TargetingSuggestionMetrics index. */
                        public index: number;

                        /** TargetingSuggestionMetrics potential_youtube_reach. */
                        public potential_youtube_reach: number;

                        /**
                         * Creates a new TargetingSuggestionMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetingSuggestionMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ITargetingSuggestionMetrics): google.ads.googleads.v23.services.TargetingSuggestionMetrics;

                        /**
                         * Encodes the specified TargetingSuggestionMetrics message. Does not implicitly {@link google.ads.googleads.v23.services.TargetingSuggestionMetrics.verify|verify} messages.
                         * @param message TargetingSuggestionMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ITargetingSuggestionMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetingSuggestionMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.TargetingSuggestionMetrics.verify|verify} messages.
                         * @param message TargetingSuggestionMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ITargetingSuggestionMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetingSuggestionMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetingSuggestionMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.TargetingSuggestionMetrics;

                        /**
                         * Decodes a TargetingSuggestionMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetingSuggestionMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.TargetingSuggestionMetrics;

                        /**
                         * Verifies a TargetingSuggestionMetrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetingSuggestionMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetingSuggestionMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.TargetingSuggestionMetrics;

                        /**
                         * Creates a plain object from a TargetingSuggestionMetrics message. Also converts values to other types if specified.
                         * @param message TargetingSuggestionMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.TargetingSuggestionMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetingSuggestionMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetingSuggestionMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListAudienceInsightsAttributesRequest. */
                    interface IListAudienceInsightsAttributesRequest {

                        /** ListAudienceInsightsAttributesRequest customer_id */
                        customer_id?: (string|null);

                        /** ListAudienceInsightsAttributesRequest dimensions */
                        dimensions?: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[]|null);

                        /** ListAudienceInsightsAttributesRequest query_text */
                        query_text?: (string|null);

                        /** ListAudienceInsightsAttributesRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** ListAudienceInsightsAttributesRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** ListAudienceInsightsAttributesRequest location_country_filters */
                        location_country_filters?: (google.ads.googleads.v23.common.ILocationInfo[]|null);

                        /** ListAudienceInsightsAttributesRequest youtube_reach_location */
                        youtube_reach_location?: (google.ads.googleads.v23.common.ILocationInfo|null);
                    }

                    /** Represents a ListAudienceInsightsAttributesRequest. */
                    class ListAudienceInsightsAttributesRequest implements IListAudienceInsightsAttributesRequest {

                        /**
                         * Constructs a new ListAudienceInsightsAttributesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListAudienceInsightsAttributesRequest);

                        /** ListAudienceInsightsAttributesRequest customer_id. */
                        public customer_id: string;

                        /** ListAudienceInsightsAttributesRequest dimensions. */
                        public dimensions: google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[];

                        /** ListAudienceInsightsAttributesRequest query_text. */
                        public query_text: string;

                        /** ListAudienceInsightsAttributesRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** ListAudienceInsightsAttributesRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** ListAudienceInsightsAttributesRequest location_country_filters. */
                        public location_country_filters: google.ads.googleads.v23.common.ILocationInfo[];

                        /** ListAudienceInsightsAttributesRequest youtube_reach_location. */
                        public youtube_reach_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /**
                         * Creates a new ListAudienceInsightsAttributesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListAudienceInsightsAttributesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListAudienceInsightsAttributesRequest): google.ads.googleads.v23.services.ListAudienceInsightsAttributesRequest;

                        /**
                         * Encodes the specified ListAudienceInsightsAttributesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListAudienceInsightsAttributesRequest.verify|verify} messages.
                         * @param message ListAudienceInsightsAttributesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListAudienceInsightsAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListAudienceInsightsAttributesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListAudienceInsightsAttributesRequest.verify|verify} messages.
                         * @param message ListAudienceInsightsAttributesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListAudienceInsightsAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListAudienceInsightsAttributesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListAudienceInsightsAttributesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListAudienceInsightsAttributesRequest;

                        /**
                         * Decodes a ListAudienceInsightsAttributesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListAudienceInsightsAttributesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListAudienceInsightsAttributesRequest;

                        /**
                         * Verifies a ListAudienceInsightsAttributesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListAudienceInsightsAttributesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListAudienceInsightsAttributesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListAudienceInsightsAttributesRequest;

                        /**
                         * Creates a plain object from a ListAudienceInsightsAttributesRequest message. Also converts values to other types if specified.
                         * @param message ListAudienceInsightsAttributesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListAudienceInsightsAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListAudienceInsightsAttributesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListAudienceInsightsAttributesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListAudienceInsightsAttributesResponse. */
                    interface IListAudienceInsightsAttributesResponse {

                        /** ListAudienceInsightsAttributesResponse attributes */
                        attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);
                    }

                    /** Represents a ListAudienceInsightsAttributesResponse. */
                    class ListAudienceInsightsAttributesResponse implements IListAudienceInsightsAttributesResponse {

                        /**
                         * Constructs a new ListAudienceInsightsAttributesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListAudienceInsightsAttributesResponse);

                        /** ListAudienceInsightsAttributesResponse attributes. */
                        public attributes: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /**
                         * Creates a new ListAudienceInsightsAttributesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListAudienceInsightsAttributesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListAudienceInsightsAttributesResponse): google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse;

                        /**
                         * Encodes the specified ListAudienceInsightsAttributesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse.verify|verify} messages.
                         * @param message ListAudienceInsightsAttributesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListAudienceInsightsAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListAudienceInsightsAttributesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse.verify|verify} messages.
                         * @param message ListAudienceInsightsAttributesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListAudienceInsightsAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListAudienceInsightsAttributesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListAudienceInsightsAttributesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse;

                        /**
                         * Decodes a ListAudienceInsightsAttributesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListAudienceInsightsAttributesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse;

                        /**
                         * Verifies a ListAudienceInsightsAttributesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListAudienceInsightsAttributesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListAudienceInsightsAttributesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse;

                        /**
                         * Creates a plain object from a ListAudienceInsightsAttributesResponse message. Also converts values to other types if specified.
                         * @param message ListAudienceInsightsAttributesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListAudienceInsightsAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListAudienceInsightsAttributesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListAudienceInsightsAttributesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListInsightsEligibleDatesRequest. */
                    interface IListInsightsEligibleDatesRequest {

                        /** ListInsightsEligibleDatesRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListInsightsEligibleDatesRequest. */
                    class ListInsightsEligibleDatesRequest implements IListInsightsEligibleDatesRequest {

                        /**
                         * Constructs a new ListInsightsEligibleDatesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListInsightsEligibleDatesRequest);

                        /** ListInsightsEligibleDatesRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListInsightsEligibleDatesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInsightsEligibleDatesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListInsightsEligibleDatesRequest): google.ads.googleads.v23.services.ListInsightsEligibleDatesRequest;

                        /**
                         * Encodes the specified ListInsightsEligibleDatesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListInsightsEligibleDatesRequest.verify|verify} messages.
                         * @param message ListInsightsEligibleDatesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListInsightsEligibleDatesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInsightsEligibleDatesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListInsightsEligibleDatesRequest.verify|verify} messages.
                         * @param message ListInsightsEligibleDatesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListInsightsEligibleDatesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInsightsEligibleDatesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInsightsEligibleDatesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListInsightsEligibleDatesRequest;

                        /**
                         * Decodes a ListInsightsEligibleDatesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInsightsEligibleDatesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListInsightsEligibleDatesRequest;

                        /**
                         * Verifies a ListInsightsEligibleDatesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInsightsEligibleDatesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInsightsEligibleDatesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListInsightsEligibleDatesRequest;

                        /**
                         * Creates a plain object from a ListInsightsEligibleDatesRequest message. Also converts values to other types if specified.
                         * @param message ListInsightsEligibleDatesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListInsightsEligibleDatesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInsightsEligibleDatesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInsightsEligibleDatesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListInsightsEligibleDatesResponse. */
                    interface IListInsightsEligibleDatesResponse {

                        /** ListInsightsEligibleDatesResponse data_months */
                        data_months?: (string[]|null);

                        /** ListInsightsEligibleDatesResponse last_thirty_days */
                        last_thirty_days?: (google.ads.googleads.v23.common.IDateRange|null);
                    }

                    /** Represents a ListInsightsEligibleDatesResponse. */
                    class ListInsightsEligibleDatesResponse implements IListInsightsEligibleDatesResponse {

                        /**
                         * Constructs a new ListInsightsEligibleDatesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListInsightsEligibleDatesResponse);

                        /** ListInsightsEligibleDatesResponse data_months. */
                        public data_months: string[];

                        /** ListInsightsEligibleDatesResponse last_thirty_days. */
                        public last_thirty_days?: (google.ads.googleads.v23.common.IDateRange|null);

                        /**
                         * Creates a new ListInsightsEligibleDatesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInsightsEligibleDatesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListInsightsEligibleDatesResponse): google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse;

                        /**
                         * Encodes the specified ListInsightsEligibleDatesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse.verify|verify} messages.
                         * @param message ListInsightsEligibleDatesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListInsightsEligibleDatesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInsightsEligibleDatesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse.verify|verify} messages.
                         * @param message ListInsightsEligibleDatesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListInsightsEligibleDatesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInsightsEligibleDatesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInsightsEligibleDatesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse;

                        /**
                         * Decodes a ListInsightsEligibleDatesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInsightsEligibleDatesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse;

                        /**
                         * Verifies a ListInsightsEligibleDatesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInsightsEligibleDatesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInsightsEligibleDatesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse;

                        /**
                         * Creates a plain object from a ListInsightsEligibleDatesResponse message. Also converts values to other types if specified.
                         * @param message ListInsightsEligibleDatesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListInsightsEligibleDatesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInsightsEligibleDatesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInsightsEligibleDatesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAudienceOverlapInsightsRequest. */
                    interface IGenerateAudienceOverlapInsightsRequest {

                        /** GenerateAudienceOverlapInsightsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateAudienceOverlapInsightsRequest country_location */
                        country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** GenerateAudienceOverlapInsightsRequest primary_attribute */
                        primary_attribute?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute|null);

                        /** GenerateAudienceOverlapInsightsRequest dimensions */
                        dimensions?: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[]|null);

                        /** GenerateAudienceOverlapInsightsRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateAudienceOverlapInsightsRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateAudienceOverlapInsightsRequest. */
                    class GenerateAudienceOverlapInsightsRequest implements IGenerateAudienceOverlapInsightsRequest {

                        /**
                         * Constructs a new GenerateAudienceOverlapInsightsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsRequest);

                        /** GenerateAudienceOverlapInsightsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateAudienceOverlapInsightsRequest country_location. */
                        public country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** GenerateAudienceOverlapInsightsRequest primary_attribute. */
                        public primary_attribute?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute|null);

                        /** GenerateAudienceOverlapInsightsRequest dimensions. */
                        public dimensions: google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[];

                        /** GenerateAudienceOverlapInsightsRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateAudienceOverlapInsightsRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateAudienceOverlapInsightsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAudienceOverlapInsightsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsRequest): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsRequest;

                        /**
                         * Encodes the specified GenerateAudienceOverlapInsightsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsRequest.verify|verify} messages.
                         * @param message GenerateAudienceOverlapInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAudienceOverlapInsightsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsRequest.verify|verify} messages.
                         * @param message GenerateAudienceOverlapInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAudienceOverlapInsightsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAudienceOverlapInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsRequest;

                        /**
                         * Decodes a GenerateAudienceOverlapInsightsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAudienceOverlapInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsRequest;

                        /**
                         * Verifies a GenerateAudienceOverlapInsightsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAudienceOverlapInsightsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAudienceOverlapInsightsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsRequest;

                        /**
                         * Creates a plain object from a GenerateAudienceOverlapInsightsRequest message. Also converts values to other types if specified.
                         * @param message GenerateAudienceOverlapInsightsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAudienceOverlapInsightsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAudienceOverlapInsightsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAudienceOverlapInsightsResponse. */
                    interface IGenerateAudienceOverlapInsightsResponse {

                        /** GenerateAudienceOverlapInsightsResponse primary_attribute_metadata */
                        primary_attribute_metadata?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** GenerateAudienceOverlapInsightsResponse dimension_results */
                        dimension_results?: (google.ads.googleads.v23.services.IDimensionOverlapResult[]|null);
                    }

                    /** Represents a GenerateAudienceOverlapInsightsResponse. */
                    class GenerateAudienceOverlapInsightsResponse implements IGenerateAudienceOverlapInsightsResponse {

                        /**
                         * Constructs a new GenerateAudienceOverlapInsightsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsResponse);

                        /** GenerateAudienceOverlapInsightsResponse primary_attribute_metadata. */
                        public primary_attribute_metadata?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** GenerateAudienceOverlapInsightsResponse dimension_results. */
                        public dimension_results: google.ads.googleads.v23.services.IDimensionOverlapResult[];

                        /**
                         * Creates a new GenerateAudienceOverlapInsightsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAudienceOverlapInsightsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsResponse): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse;

                        /**
                         * Encodes the specified GenerateAudienceOverlapInsightsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse.verify|verify} messages.
                         * @param message GenerateAudienceOverlapInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAudienceOverlapInsightsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse.verify|verify} messages.
                         * @param message GenerateAudienceOverlapInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAudienceOverlapInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAudienceOverlapInsightsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAudienceOverlapInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse;

                        /**
                         * Decodes a GenerateAudienceOverlapInsightsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAudienceOverlapInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse;

                        /**
                         * Verifies a GenerateAudienceOverlapInsightsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAudienceOverlapInsightsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAudienceOverlapInsightsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse;

                        /**
                         * Creates a plain object from a GenerateAudienceOverlapInsightsResponse message. Also converts values to other types if specified.
                         * @param message GenerateAudienceOverlapInsightsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAudienceOverlapInsightsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAudienceOverlapInsightsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAudienceOverlapInsightsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DimensionOverlapResult. */
                    interface IDimensionOverlapResult {

                        /** DimensionOverlapResult dimension */
                        dimension?: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|null);

                        /** DimensionOverlapResult items */
                        items?: (google.ads.googleads.v23.services.IAudienceOverlapItem[]|null);
                    }

                    /** Represents a DimensionOverlapResult. */
                    class DimensionOverlapResult implements IDimensionOverlapResult {

                        /**
                         * Constructs a new DimensionOverlapResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IDimensionOverlapResult);

                        /** DimensionOverlapResult dimension. */
                        public dimension: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension);

                        /** DimensionOverlapResult items. */
                        public items: google.ads.googleads.v23.services.IAudienceOverlapItem[];

                        /**
                         * Creates a new DimensionOverlapResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DimensionOverlapResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IDimensionOverlapResult): google.ads.googleads.v23.services.DimensionOverlapResult;

                        /**
                         * Encodes the specified DimensionOverlapResult message. Does not implicitly {@link google.ads.googleads.v23.services.DimensionOverlapResult.verify|verify} messages.
                         * @param message DimensionOverlapResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IDimensionOverlapResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DimensionOverlapResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.DimensionOverlapResult.verify|verify} messages.
                         * @param message DimensionOverlapResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IDimensionOverlapResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DimensionOverlapResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DimensionOverlapResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.DimensionOverlapResult;

                        /**
                         * Decodes a DimensionOverlapResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DimensionOverlapResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.DimensionOverlapResult;

                        /**
                         * Verifies a DimensionOverlapResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DimensionOverlapResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DimensionOverlapResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.DimensionOverlapResult;

                        /**
                         * Creates a plain object from a DimensionOverlapResult message. Also converts values to other types if specified.
                         * @param message DimensionOverlapResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.DimensionOverlapResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DimensionOverlapResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DimensionOverlapResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceOverlapItem. */
                    interface IAudienceOverlapItem {

                        /** AudienceOverlapItem attribute_metadata */
                        attribute_metadata?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** AudienceOverlapItem potential_youtube_reach_intersection */
                        potential_youtube_reach_intersection?: (number|null);
                    }

                    /** Represents an AudienceOverlapItem. */
                    class AudienceOverlapItem implements IAudienceOverlapItem {

                        /**
                         * Constructs a new AudienceOverlapItem.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceOverlapItem);

                        /** AudienceOverlapItem attribute_metadata. */
                        public attribute_metadata?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** AudienceOverlapItem potential_youtube_reach_intersection. */
                        public potential_youtube_reach_intersection: number;

                        /**
                         * Creates a new AudienceOverlapItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceOverlapItem instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceOverlapItem): google.ads.googleads.v23.services.AudienceOverlapItem;

                        /**
                         * Encodes the specified AudienceOverlapItem message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceOverlapItem.verify|verify} messages.
                         * @param message AudienceOverlapItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceOverlapItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceOverlapItem message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceOverlapItem.verify|verify} messages.
                         * @param message AudienceOverlapItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceOverlapItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceOverlapItem message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceOverlapItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceOverlapItem;

                        /**
                         * Decodes an AudienceOverlapItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceOverlapItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceOverlapItem;

                        /**
                         * Verifies an AudienceOverlapItem message.
                         * @param message Plain 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 AudienceOverlapItem message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceOverlapItem
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceOverlapItem;

                        /**
                         * Creates a plain object from an AudienceOverlapItem message. Also converts values to other types if specified.
                         * @param message AudienceOverlapItem
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceOverlapItem, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceOverlapItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceOverlapItem
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateTargetingSuggestionMetricsRequest. */
                    interface IGenerateTargetingSuggestionMetricsRequest {

                        /** GenerateTargetingSuggestionMetricsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateTargetingSuggestionMetricsRequest audiences */
                        audiences?: (google.ads.googleads.v23.services.IInsightsAudience[]|null);

                        /** GenerateTargetingSuggestionMetricsRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateTargetingSuggestionMetricsRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateTargetingSuggestionMetricsRequest. */
                    class GenerateTargetingSuggestionMetricsRequest implements IGenerateTargetingSuggestionMetricsRequest {

                        /**
                         * Constructs a new GenerateTargetingSuggestionMetricsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsRequest);

                        /** GenerateTargetingSuggestionMetricsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateTargetingSuggestionMetricsRequest audiences. */
                        public audiences: google.ads.googleads.v23.services.IInsightsAudience[];

                        /** GenerateTargetingSuggestionMetricsRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateTargetingSuggestionMetricsRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateTargetingSuggestionMetricsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateTargetingSuggestionMetricsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsRequest): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsRequest;

                        /**
                         * Encodes the specified GenerateTargetingSuggestionMetricsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsRequest.verify|verify} messages.
                         * @param message GenerateTargetingSuggestionMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateTargetingSuggestionMetricsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsRequest.verify|verify} messages.
                         * @param message GenerateTargetingSuggestionMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateTargetingSuggestionMetricsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateTargetingSuggestionMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsRequest;

                        /**
                         * Decodes a GenerateTargetingSuggestionMetricsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateTargetingSuggestionMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsRequest;

                        /**
                         * Verifies a GenerateTargetingSuggestionMetricsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateTargetingSuggestionMetricsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateTargetingSuggestionMetricsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsRequest;

                        /**
                         * Creates a plain object from a GenerateTargetingSuggestionMetricsRequest message. Also converts values to other types if specified.
                         * @param message GenerateTargetingSuggestionMetricsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateTargetingSuggestionMetricsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateTargetingSuggestionMetricsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateTargetingSuggestionMetricsResponse. */
                    interface IGenerateTargetingSuggestionMetricsResponse {

                        /** GenerateTargetingSuggestionMetricsResponse suggestions */
                        suggestions?: (google.ads.googleads.v23.services.ITargetingSuggestionMetrics[]|null);
                    }

                    /** Represents a GenerateTargetingSuggestionMetricsResponse. */
                    class GenerateTargetingSuggestionMetricsResponse implements IGenerateTargetingSuggestionMetricsResponse {

                        /**
                         * Constructs a new GenerateTargetingSuggestionMetricsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsResponse);

                        /** GenerateTargetingSuggestionMetricsResponse suggestions. */
                        public suggestions: google.ads.googleads.v23.services.ITargetingSuggestionMetrics[];

                        /**
                         * Creates a new GenerateTargetingSuggestionMetricsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateTargetingSuggestionMetricsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsResponse): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse;

                        /**
                         * Encodes the specified GenerateTargetingSuggestionMetricsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse.verify|verify} messages.
                         * @param message GenerateTargetingSuggestionMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateTargetingSuggestionMetricsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse.verify|verify} messages.
                         * @param message GenerateTargetingSuggestionMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateTargetingSuggestionMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateTargetingSuggestionMetricsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateTargetingSuggestionMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse;

                        /**
                         * Decodes a GenerateTargetingSuggestionMetricsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateTargetingSuggestionMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse;

                        /**
                         * Verifies a GenerateTargetingSuggestionMetricsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateTargetingSuggestionMetricsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateTargetingSuggestionMetricsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse;

                        /**
                         * Creates a plain object from a GenerateTargetingSuggestionMetricsResponse message. Also converts values to other types if specified.
                         * @param message GenerateTargetingSuggestionMetricsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateTargetingSuggestionMetricsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateTargetingSuggestionMetricsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateTargetingSuggestionMetricsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAudienceDefinitionRequest. */
                    interface IGenerateAudienceDefinitionRequest {

                        /** GenerateAudienceDefinitionRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateAudienceDefinitionRequest audience_description */
                        audience_description?: (google.ads.googleads.v23.services.IInsightsAudienceDescription|null);

                        /** GenerateAudienceDefinitionRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateAudienceDefinitionRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateAudienceDefinitionRequest. */
                    class GenerateAudienceDefinitionRequest implements IGenerateAudienceDefinitionRequest {

                        /**
                         * Constructs a new GenerateAudienceDefinitionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAudienceDefinitionRequest);

                        /** GenerateAudienceDefinitionRequest customer_id. */
                        public customer_id: string;

                        /** GenerateAudienceDefinitionRequest audience_description. */
                        public audience_description?: (google.ads.googleads.v23.services.IInsightsAudienceDescription|null);

                        /** GenerateAudienceDefinitionRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateAudienceDefinitionRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateAudienceDefinitionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAudienceDefinitionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAudienceDefinitionRequest): google.ads.googleads.v23.services.GenerateAudienceDefinitionRequest;

                        /**
                         * Encodes the specified GenerateAudienceDefinitionRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceDefinitionRequest.verify|verify} messages.
                         * @param message GenerateAudienceDefinitionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAudienceDefinitionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAudienceDefinitionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceDefinitionRequest.verify|verify} messages.
                         * @param message GenerateAudienceDefinitionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAudienceDefinitionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAudienceDefinitionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAudienceDefinitionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAudienceDefinitionRequest;

                        /**
                         * Decodes a GenerateAudienceDefinitionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAudienceDefinitionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAudienceDefinitionRequest;

                        /**
                         * Verifies a GenerateAudienceDefinitionRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAudienceDefinitionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAudienceDefinitionRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAudienceDefinitionRequest;

                        /**
                         * Creates a plain object from a GenerateAudienceDefinitionRequest message. Also converts values to other types if specified.
                         * @param message GenerateAudienceDefinitionRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAudienceDefinitionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAudienceDefinitionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAudienceDefinitionRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAudienceDefinitionResponse. */
                    interface IGenerateAudienceDefinitionResponse {

                        /** GenerateAudienceDefinitionResponse high_relevance_attributes */
                        high_relevance_attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);

                        /** GenerateAudienceDefinitionResponse medium_relevance_attributes */
                        medium_relevance_attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);
                    }

                    /** Represents a GenerateAudienceDefinitionResponse. */
                    class GenerateAudienceDefinitionResponse implements IGenerateAudienceDefinitionResponse {

                        /**
                         * Constructs a new GenerateAudienceDefinitionResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAudienceDefinitionResponse);

                        /** GenerateAudienceDefinitionResponse high_relevance_attributes. */
                        public high_relevance_attributes: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /** GenerateAudienceDefinitionResponse medium_relevance_attributes. */
                        public medium_relevance_attributes: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /**
                         * Creates a new GenerateAudienceDefinitionResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAudienceDefinitionResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAudienceDefinitionResponse): google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse;

                        /**
                         * Encodes the specified GenerateAudienceDefinitionResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse.verify|verify} messages.
                         * @param message GenerateAudienceDefinitionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAudienceDefinitionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAudienceDefinitionResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse.verify|verify} messages.
                         * @param message GenerateAudienceDefinitionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAudienceDefinitionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAudienceDefinitionResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAudienceDefinitionResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse;

                        /**
                         * Decodes a GenerateAudienceDefinitionResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAudienceDefinitionResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse;

                        /**
                         * Verifies a GenerateAudienceDefinitionResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAudienceDefinitionResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAudienceDefinitionResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse;

                        /**
                         * Creates a plain object from a GenerateAudienceDefinitionResponse message. Also converts values to other types if specified.
                         * @param message GenerateAudienceDefinitionResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAudienceDefinitionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAudienceDefinitionResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAudienceDefinitionResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceInsightsDimensions. */
                    interface IAudienceInsightsDimensions {

                        /** AudienceInsightsDimensions dimensions */
                        dimensions?: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[]|null);
                    }

                    /** Represents an AudienceInsightsDimensions. */
                    class AudienceInsightsDimensions implements IAudienceInsightsDimensions {

                        /**
                         * Constructs a new AudienceInsightsDimensions.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceInsightsDimensions);

                        /** AudienceInsightsDimensions dimensions. */
                        public dimensions: google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension[];

                        /**
                         * Creates a new AudienceInsightsDimensions instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceInsightsDimensions instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceInsightsDimensions): google.ads.googleads.v23.services.AudienceInsightsDimensions;

                        /**
                         * Encodes the specified AudienceInsightsDimensions message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceInsightsDimensions.verify|verify} messages.
                         * @param message AudienceInsightsDimensions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceInsightsDimensions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceInsightsDimensions message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceInsightsDimensions.verify|verify} messages.
                         * @param message AudienceInsightsDimensions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceInsightsDimensions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceInsightsDimensions message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceInsightsDimensions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceInsightsDimensions;

                        /**
                         * Decodes an AudienceInsightsDimensions message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceInsightsDimensions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceInsightsDimensions;

                        /**
                         * Verifies an AudienceInsightsDimensions message.
                         * @param message Plain 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 AudienceInsightsDimensions message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceInsightsDimensions
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceInsightsDimensions;

                        /**
                         * Creates a plain object from an AudienceInsightsDimensions message. Also converts values to other types if specified.
                         * @param message AudienceInsightsDimensions
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceInsightsDimensions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceInsightsDimensions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceInsightsDimensions
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an InsightsAudienceDefinition. */
                    interface IInsightsAudienceDefinition {

                        /** InsightsAudienceDefinition audience */
                        audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** InsightsAudienceDefinition baseline_audience */
                        baseline_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** InsightsAudienceDefinition data_month */
                        data_month?: (string|null);
                    }

                    /** Represents an InsightsAudienceDefinition. */
                    class InsightsAudienceDefinition implements IInsightsAudienceDefinition {

                        /**
                         * Constructs a new InsightsAudienceDefinition.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IInsightsAudienceDefinition);

                        /** InsightsAudienceDefinition audience. */
                        public audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** InsightsAudienceDefinition baseline_audience. */
                        public baseline_audience?: (google.ads.googleads.v23.services.IInsightsAudience|null);

                        /** InsightsAudienceDefinition data_month. */
                        public data_month: string;

                        /**
                         * Creates a new InsightsAudienceDefinition instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsightsAudienceDefinition instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IInsightsAudienceDefinition): google.ads.googleads.v23.services.InsightsAudienceDefinition;

                        /**
                         * Encodes the specified InsightsAudienceDefinition message. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudienceDefinition.verify|verify} messages.
                         * @param message InsightsAudienceDefinition message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IInsightsAudienceDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsightsAudienceDefinition message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudienceDefinition.verify|verify} messages.
                         * @param message InsightsAudienceDefinition message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IInsightsAudienceDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsightsAudienceDefinition message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsightsAudienceDefinition
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.InsightsAudienceDefinition;

                        /**
                         * Decodes an InsightsAudienceDefinition message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsightsAudienceDefinition
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.InsightsAudienceDefinition;

                        /**
                         * Verifies an InsightsAudienceDefinition message.
                         * @param message Plain 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 InsightsAudienceDefinition message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsightsAudienceDefinition
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.InsightsAudienceDefinition;

                        /**
                         * Creates a plain object from an InsightsAudienceDefinition message. Also converts values to other types if specified.
                         * @param message InsightsAudienceDefinition
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.InsightsAudienceDefinition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsightsAudienceDefinition to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsightsAudienceDefinition
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an InsightsAudienceDescription. */
                    interface IInsightsAudienceDescription {

                        /** InsightsAudienceDescription country_locations */
                        country_locations?: (google.ads.googleads.v23.common.ILocationInfo[]|null);

                        /** InsightsAudienceDescription audience_description */
                        audience_description?: (string|null);

                        /** InsightsAudienceDescription marketing_objective */
                        marketing_objective?: (google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum.AudienceInsightsMarketingObjective|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum.AudienceInsightsMarketingObjective|null);

                        /** InsightsAudienceDescription audience_dimensions */
                        audience_dimensions?: (google.ads.googleads.v23.services.IAudienceInsightsDimensions|null);
                    }

                    /** Represents an InsightsAudienceDescription. */
                    class InsightsAudienceDescription implements IInsightsAudienceDescription {

                        /**
                         * Constructs a new InsightsAudienceDescription.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IInsightsAudienceDescription);

                        /** InsightsAudienceDescription country_locations. */
                        public country_locations: google.ads.googleads.v23.common.ILocationInfo[];

                        /** InsightsAudienceDescription audience_description. */
                        public audience_description: string;

                        /** InsightsAudienceDescription marketing_objective. */
                        public marketing_objective?: (google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum.AudienceInsightsMarketingObjective|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsMarketingObjectiveEnum.AudienceInsightsMarketingObjective|null);

                        /** InsightsAudienceDescription audience_dimensions. */
                        public audience_dimensions?: (google.ads.googleads.v23.services.IAudienceInsightsDimensions|null);

                        /** InsightsAudienceDescription output_types. */
                        public output_types?: ("marketing_objective"|"audience_dimensions");

                        /**
                         * Creates a new InsightsAudienceDescription instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsightsAudienceDescription instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IInsightsAudienceDescription): google.ads.googleads.v23.services.InsightsAudienceDescription;

                        /**
                         * Encodes the specified InsightsAudienceDescription message. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudienceDescription.verify|verify} messages.
                         * @param message InsightsAudienceDescription message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IInsightsAudienceDescription, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsightsAudienceDescription message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudienceDescription.verify|verify} messages.
                         * @param message InsightsAudienceDescription message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IInsightsAudienceDescription, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsightsAudienceDescription message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsightsAudienceDescription
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.InsightsAudienceDescription;

                        /**
                         * Decodes an InsightsAudienceDescription message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsightsAudienceDescription
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.InsightsAudienceDescription;

                        /**
                         * Verifies an InsightsAudienceDescription message.
                         * @param message Plain 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 InsightsAudienceDescription message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsightsAudienceDescription
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.InsightsAudienceDescription;

                        /**
                         * Creates a plain object from an InsightsAudienceDescription message. Also converts values to other types if specified.
                         * @param message InsightsAudienceDescription
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.InsightsAudienceDescription, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsightsAudienceDescription to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsightsAudienceDescription
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an InsightsAudience. */
                    interface IInsightsAudience {

                        /** InsightsAudience country_locations */
                        country_locations?: (google.ads.googleads.v23.common.ILocationInfo[]|null);

                        /** InsightsAudience sub_country_locations */
                        sub_country_locations?: (google.ads.googleads.v23.common.ILocationInfo[]|null);

                        /** InsightsAudience gender */
                        gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** InsightsAudience age_ranges */
                        age_ranges?: (google.ads.googleads.v23.common.IAgeRangeInfo[]|null);

                        /** InsightsAudience parental_status */
                        parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** InsightsAudience income_ranges */
                        income_ranges?: (google.ads.googleads.v23.common.IIncomeRangeInfo[]|null);

                        /** InsightsAudience lineups */
                        lineups?: (google.ads.googleads.v23.common.IAudienceInsightsLineup[]|null);

                        /** InsightsAudience user_list */
                        user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** InsightsAudience topic_audience_combinations */
                        topic_audience_combinations?: (google.ads.googleads.v23.services.IInsightsAudienceAttributeGroup[]|null);
                    }

                    /** Represents an InsightsAudience. */
                    class InsightsAudience implements IInsightsAudience {

                        /**
                         * Constructs a new InsightsAudience.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IInsightsAudience);

                        /** InsightsAudience country_locations. */
                        public country_locations: google.ads.googleads.v23.common.ILocationInfo[];

                        /** InsightsAudience sub_country_locations. */
                        public sub_country_locations: google.ads.googleads.v23.common.ILocationInfo[];

                        /** InsightsAudience gender. */
                        public gender?: (google.ads.googleads.v23.common.IGenderInfo|null);

                        /** InsightsAudience age_ranges. */
                        public age_ranges: google.ads.googleads.v23.common.IAgeRangeInfo[];

                        /** InsightsAudience parental_status. */
                        public parental_status?: (google.ads.googleads.v23.common.IParentalStatusInfo|null);

                        /** InsightsAudience income_ranges. */
                        public income_ranges: google.ads.googleads.v23.common.IIncomeRangeInfo[];

                        /** InsightsAudience lineups. */
                        public lineups: google.ads.googleads.v23.common.IAudienceInsightsLineup[];

                        /** InsightsAudience user_list. */
                        public user_list?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** InsightsAudience topic_audience_combinations. */
                        public topic_audience_combinations: google.ads.googleads.v23.services.IInsightsAudienceAttributeGroup[];

                        /**
                         * Creates a new InsightsAudience instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsightsAudience instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IInsightsAudience): google.ads.googleads.v23.services.InsightsAudience;

                        /**
                         * Encodes the specified InsightsAudience message. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudience.verify|verify} messages.
                         * @param message InsightsAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IInsightsAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsightsAudience message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudience.verify|verify} messages.
                         * @param message InsightsAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IInsightsAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsightsAudience message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsightsAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.InsightsAudience;

                        /**
                         * Decodes an InsightsAudience message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsightsAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.InsightsAudience;

                        /**
                         * Verifies an InsightsAudience message.
                         * @param message Plain 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 InsightsAudience message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsightsAudience
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.InsightsAudience;

                        /**
                         * Creates a plain object from an InsightsAudience message. Also converts values to other types if specified.
                         * @param message InsightsAudience
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.InsightsAudience, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsightsAudience to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsightsAudience
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an InsightsAudienceAttributeGroup. */
                    interface IInsightsAudienceAttributeGroup {

                        /** InsightsAudienceAttributeGroup attributes */
                        attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute[]|null);
                    }

                    /** Represents an InsightsAudienceAttributeGroup. */
                    class InsightsAudienceAttributeGroup implements IInsightsAudienceAttributeGroup {

                        /**
                         * Constructs a new InsightsAudienceAttributeGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IInsightsAudienceAttributeGroup);

                        /** InsightsAudienceAttributeGroup attributes. */
                        public attributes: google.ads.googleads.v23.common.IAudienceInsightsAttribute[];

                        /**
                         * Creates a new InsightsAudienceAttributeGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsightsAudienceAttributeGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IInsightsAudienceAttributeGroup): google.ads.googleads.v23.services.InsightsAudienceAttributeGroup;

                        /**
                         * Encodes the specified InsightsAudienceAttributeGroup message. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudienceAttributeGroup.verify|verify} messages.
                         * @param message InsightsAudienceAttributeGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IInsightsAudienceAttributeGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsightsAudienceAttributeGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.InsightsAudienceAttributeGroup.verify|verify} messages.
                         * @param message InsightsAudienceAttributeGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IInsightsAudienceAttributeGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsightsAudienceAttributeGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsightsAudienceAttributeGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.InsightsAudienceAttributeGroup;

                        /**
                         * Decodes an InsightsAudienceAttributeGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsightsAudienceAttributeGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.InsightsAudienceAttributeGroup;

                        /**
                         * Verifies an InsightsAudienceAttributeGroup message.
                         * @param message Plain 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 InsightsAudienceAttributeGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsightsAudienceAttributeGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.InsightsAudienceAttributeGroup;

                        /**
                         * Creates a plain object from an InsightsAudienceAttributeGroup message. Also converts values to other types if specified.
                         * @param message InsightsAudienceAttributeGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.InsightsAudienceAttributeGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsightsAudienceAttributeGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsightsAudienceAttributeGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceCompositionSection. */
                    interface IAudienceCompositionSection {

                        /** AudienceCompositionSection dimension */
                        dimension?: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|null);

                        /** AudienceCompositionSection top_attributes */
                        top_attributes?: (google.ads.googleads.v23.services.IAudienceCompositionAttribute[]|null);

                        /** AudienceCompositionSection clustered_attributes */
                        clustered_attributes?: (google.ads.googleads.v23.services.IAudienceCompositionAttributeCluster[]|null);
                    }

                    /** Represents an AudienceCompositionSection. */
                    class AudienceCompositionSection implements IAudienceCompositionSection {

                        /**
                         * Constructs a new AudienceCompositionSection.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceCompositionSection);

                        /** AudienceCompositionSection dimension. */
                        public dimension: (google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension|keyof typeof google.ads.googleads.v23.enums.AudienceInsightsDimensionEnum.AudienceInsightsDimension);

                        /** AudienceCompositionSection top_attributes. */
                        public top_attributes: google.ads.googleads.v23.services.IAudienceCompositionAttribute[];

                        /** AudienceCompositionSection clustered_attributes. */
                        public clustered_attributes: google.ads.googleads.v23.services.IAudienceCompositionAttributeCluster[];

                        /**
                         * Creates a new AudienceCompositionSection instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceCompositionSection instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceCompositionSection): google.ads.googleads.v23.services.AudienceCompositionSection;

                        /**
                         * Encodes the specified AudienceCompositionSection message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionSection.verify|verify} messages.
                         * @param message AudienceCompositionSection message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceCompositionSection, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceCompositionSection message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionSection.verify|verify} messages.
                         * @param message AudienceCompositionSection message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceCompositionSection, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceCompositionSection message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceCompositionSection
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceCompositionSection;

                        /**
                         * Decodes an AudienceCompositionSection message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceCompositionSection
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceCompositionSection;

                        /**
                         * Verifies an AudienceCompositionSection message.
                         * @param message Plain 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 AudienceCompositionSection message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceCompositionSection
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceCompositionSection;

                        /**
                         * Creates a plain object from an AudienceCompositionSection message. Also converts values to other types if specified.
                         * @param message AudienceCompositionSection
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceCompositionSection, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceCompositionSection to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceCompositionSection
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceCompositionAttributeCluster. */
                    interface IAudienceCompositionAttributeCluster {

                        /** AudienceCompositionAttributeCluster cluster_display_name */
                        cluster_display_name?: (string|null);

                        /** AudienceCompositionAttributeCluster cluster_metrics */
                        cluster_metrics?: (google.ads.googleads.v23.services.IAudienceCompositionMetrics|null);

                        /** AudienceCompositionAttributeCluster attributes */
                        attributes?: (google.ads.googleads.v23.services.IAudienceCompositionAttribute[]|null);
                    }

                    /** Represents an AudienceCompositionAttributeCluster. */
                    class AudienceCompositionAttributeCluster implements IAudienceCompositionAttributeCluster {

                        /**
                         * Constructs a new AudienceCompositionAttributeCluster.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceCompositionAttributeCluster);

                        /** AudienceCompositionAttributeCluster cluster_display_name. */
                        public cluster_display_name: string;

                        /** AudienceCompositionAttributeCluster cluster_metrics. */
                        public cluster_metrics?: (google.ads.googleads.v23.services.IAudienceCompositionMetrics|null);

                        /** AudienceCompositionAttributeCluster attributes. */
                        public attributes: google.ads.googleads.v23.services.IAudienceCompositionAttribute[];

                        /**
                         * Creates a new AudienceCompositionAttributeCluster instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceCompositionAttributeCluster instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceCompositionAttributeCluster): google.ads.googleads.v23.services.AudienceCompositionAttributeCluster;

                        /**
                         * Encodes the specified AudienceCompositionAttributeCluster message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionAttributeCluster.verify|verify} messages.
                         * @param message AudienceCompositionAttributeCluster message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceCompositionAttributeCluster, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceCompositionAttributeCluster message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionAttributeCluster.verify|verify} messages.
                         * @param message AudienceCompositionAttributeCluster message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceCompositionAttributeCluster, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceCompositionAttributeCluster message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceCompositionAttributeCluster
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceCompositionAttributeCluster;

                        /**
                         * Decodes an AudienceCompositionAttributeCluster message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceCompositionAttributeCluster
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceCompositionAttributeCluster;

                        /**
                         * Verifies an AudienceCompositionAttributeCluster message.
                         * @param message Plain 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 AudienceCompositionAttributeCluster message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceCompositionAttributeCluster
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceCompositionAttributeCluster;

                        /**
                         * Creates a plain object from an AudienceCompositionAttributeCluster message. Also converts values to other types if specified.
                         * @param message AudienceCompositionAttributeCluster
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceCompositionAttributeCluster, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceCompositionAttributeCluster to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceCompositionAttributeCluster
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceCompositionMetrics. */
                    interface IAudienceCompositionMetrics {

                        /** AudienceCompositionMetrics baseline_audience_share */
                        baseline_audience_share?: (number|null);

                        /** AudienceCompositionMetrics audience_share */
                        audience_share?: (number|null);

                        /** AudienceCompositionMetrics index */
                        index?: (number|null);

                        /** AudienceCompositionMetrics score */
                        score?: (number|null);
                    }

                    /** Represents an AudienceCompositionMetrics. */
                    class AudienceCompositionMetrics implements IAudienceCompositionMetrics {

                        /**
                         * Constructs a new AudienceCompositionMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceCompositionMetrics);

                        /** AudienceCompositionMetrics baseline_audience_share. */
                        public baseline_audience_share: number;

                        /** AudienceCompositionMetrics audience_share. */
                        public audience_share: number;

                        /** AudienceCompositionMetrics index. */
                        public index: number;

                        /** AudienceCompositionMetrics score. */
                        public score: number;

                        /**
                         * Creates a new AudienceCompositionMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceCompositionMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceCompositionMetrics): google.ads.googleads.v23.services.AudienceCompositionMetrics;

                        /**
                         * Encodes the specified AudienceCompositionMetrics message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionMetrics.verify|verify} messages.
                         * @param message AudienceCompositionMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceCompositionMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceCompositionMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionMetrics.verify|verify} messages.
                         * @param message AudienceCompositionMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceCompositionMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceCompositionMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceCompositionMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceCompositionMetrics;

                        /**
                         * Decodes an AudienceCompositionMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceCompositionMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceCompositionMetrics;

                        /**
                         * Verifies an AudienceCompositionMetrics message.
                         * @param message Plain 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 AudienceCompositionMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceCompositionMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceCompositionMetrics;

                        /**
                         * Creates a plain object from an AudienceCompositionMetrics message. Also converts values to other types if specified.
                         * @param message AudienceCompositionMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceCompositionMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceCompositionMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceCompositionMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceCompositionAttribute. */
                    interface IAudienceCompositionAttribute {

                        /** AudienceCompositionAttribute attribute_metadata */
                        attribute_metadata?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** AudienceCompositionAttribute metrics */
                        metrics?: (google.ads.googleads.v23.services.IAudienceCompositionMetrics|null);
                    }

                    /** Represents an AudienceCompositionAttribute. */
                    class AudienceCompositionAttribute implements IAudienceCompositionAttribute {

                        /**
                         * Constructs a new AudienceCompositionAttribute.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceCompositionAttribute);

                        /** AudienceCompositionAttribute attribute_metadata. */
                        public attribute_metadata?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** AudienceCompositionAttribute metrics. */
                        public metrics?: (google.ads.googleads.v23.services.IAudienceCompositionMetrics|null);

                        /**
                         * Creates a new AudienceCompositionAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceCompositionAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceCompositionAttribute): google.ads.googleads.v23.services.AudienceCompositionAttribute;

                        /**
                         * Encodes the specified AudienceCompositionAttribute message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionAttribute.verify|verify} messages.
                         * @param message AudienceCompositionAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceCompositionAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceCompositionAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceCompositionAttribute.verify|verify} messages.
                         * @param message AudienceCompositionAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceCompositionAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceCompositionAttribute message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceCompositionAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceCompositionAttribute;

                        /**
                         * Decodes an AudienceCompositionAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceCompositionAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceCompositionAttribute;

                        /**
                         * Verifies an AudienceCompositionAttribute message.
                         * @param message Plain 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 AudienceCompositionAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceCompositionAttribute
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceCompositionAttribute;

                        /**
                         * Creates a plain object from an AudienceCompositionAttribute message. Also converts values to other types if specified.
                         * @param message AudienceCompositionAttribute
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceCompositionAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceCompositionAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceCompositionAttribute
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AudienceService */
                    class AudienceService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AudienceService 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 AudienceService 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): AudienceService;

                        /**
                         * Calls MutateAudiences.
                         * @param request MutateAudiencesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAudiencesResponse
                         */
                        public mutateAudiences(request: google.ads.googleads.v23.services.IMutateAudiencesRequest, callback: google.ads.googleads.v23.services.AudienceService.MutateAudiencesCallback): void;

                        /**
                         * Calls MutateAudiences.
                         * @param request MutateAudiencesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAudiences(request: google.ads.googleads.v23.services.IMutateAudiencesRequest): Promise<google.ads.googleads.v23.services.MutateAudiencesResponse>;
                    }

                    namespace AudienceService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AudienceService|mutateAudiences}.
                         * @param error Error, if any
                         * @param [response] MutateAudiencesResponse
                         */
                        type MutateAudiencesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateAudiencesResponse) => void;
                    }

                    /** Properties of a MutateAudiencesRequest. */
                    interface IMutateAudiencesRequest {

                        /** MutateAudiencesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAudiencesRequest operations */
                        operations?: (google.ads.googleads.v23.services.IAudienceOperation[]|null);

                        /** MutateAudiencesRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAudiencesRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAudiencesRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAudiencesRequest. */
                    class MutateAudiencesRequest implements IMutateAudiencesRequest {

                        /**
                         * Constructs a new MutateAudiencesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAudiencesRequest);

                        /** MutateAudiencesRequest customer_id. */
                        public customer_id: string;

                        /** MutateAudiencesRequest operations. */
                        public operations: google.ads.googleads.v23.services.IAudienceOperation[];

                        /** MutateAudiencesRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAudiencesRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAudiencesRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAudiencesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAudiencesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAudiencesRequest): google.ads.googleads.v23.services.MutateAudiencesRequest;

                        /**
                         * Encodes the specified MutateAudiencesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAudiencesRequest.verify|verify} messages.
                         * @param message MutateAudiencesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAudiencesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAudiencesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAudiencesRequest.verify|verify} messages.
                         * @param message MutateAudiencesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAudiencesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAudiencesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAudiencesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAudiencesRequest;

                        /**
                         * Decodes a MutateAudiencesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAudiencesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAudiencesRequest;

                        /**
                         * Verifies a MutateAudiencesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAudiencesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAudiencesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAudiencesRequest;

                        /**
                         * Creates a plain object from a MutateAudiencesRequest message. Also converts values to other types if specified.
                         * @param message MutateAudiencesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAudiencesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAudiencesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAudiencesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAudiencesResponse. */
                    interface IMutateAudiencesResponse {

                        /** MutateAudiencesResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateAudienceResult[]|null);

                        /** MutateAudiencesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateAudiencesResponse. */
                    class MutateAudiencesResponse implements IMutateAudiencesResponse {

                        /**
                         * Constructs a new MutateAudiencesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAudiencesResponse);

                        /** MutateAudiencesResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateAudienceResult[];

                        /** MutateAudiencesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateAudiencesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAudiencesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAudiencesResponse): google.ads.googleads.v23.services.MutateAudiencesResponse;

                        /**
                         * Encodes the specified MutateAudiencesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAudiencesResponse.verify|verify} messages.
                         * @param message MutateAudiencesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAudiencesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAudiencesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAudiencesResponse.verify|verify} messages.
                         * @param message MutateAudiencesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAudiencesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAudiencesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAudiencesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAudiencesResponse;

                        /**
                         * Decodes a MutateAudiencesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAudiencesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAudiencesResponse;

                        /**
                         * Verifies a MutateAudiencesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAudiencesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAudiencesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAudiencesResponse;

                        /**
                         * Creates a plain object from a MutateAudiencesResponse message. Also converts values to other types if specified.
                         * @param message MutateAudiencesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAudiencesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAudiencesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAudiencesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceOperation. */
                    interface IAudienceOperation {

                        /** AudienceOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AudienceOperation create */
                        create?: (google.ads.googleads.v23.resources.IAudience|null);

                        /** AudienceOperation update */
                        update?: (google.ads.googleads.v23.resources.IAudience|null);
                    }

                    /** Represents an AudienceOperation. */
                    class AudienceOperation implements IAudienceOperation {

                        /**
                         * Constructs a new AudienceOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceOperation);

                        /** AudienceOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AudienceOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IAudience|null);

                        /** AudienceOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IAudience|null);

                        /** AudienceOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new AudienceOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceOperation): google.ads.googleads.v23.services.AudienceOperation;

                        /**
                         * Encodes the specified AudienceOperation message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceOperation.verify|verify} messages.
                         * @param message AudienceOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceOperation.verify|verify} messages.
                         * @param message AudienceOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceOperation;

                        /**
                         * Decodes an AudienceOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceOperation;

                        /**
                         * Verifies an AudienceOperation message.
                         * @param message Plain 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 AudienceOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceOperation;

                        /**
                         * Creates a plain object from an AudienceOperation message. Also converts values to other types if specified.
                         * @param message AudienceOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateAudienceResult. */
                    interface IMutateAudienceResult {

                        /** MutateAudienceResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAudienceResult audience */
                        audience?: (google.ads.googleads.v23.resources.IAudience|null);
                    }

                    /** Represents a MutateAudienceResult. */
                    class MutateAudienceResult implements IMutateAudienceResult {

                        /**
                         * Constructs a new MutateAudienceResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateAudienceResult);

                        /** MutateAudienceResult resource_name. */
                        public resource_name: string;

                        /** MutateAudienceResult audience. */
                        public audience?: (google.ads.googleads.v23.resources.IAudience|null);

                        /**
                         * Creates a new MutateAudienceResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAudienceResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateAudienceResult): google.ads.googleads.v23.services.MutateAudienceResult;

                        /**
                         * Encodes the specified MutateAudienceResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateAudienceResult.verify|verify} messages.
                         * @param message MutateAudienceResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateAudienceResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAudienceResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateAudienceResult.verify|verify} messages.
                         * @param message MutateAudienceResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateAudienceResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAudienceResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateAudienceResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateAudienceResult;

                        /**
                         * Decodes a MutateAudienceResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAudienceResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateAudienceResult;

                        /**
                         * Verifies a MutateAudienceResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAudienceResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateAudienceResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateAudienceResult;

                        /**
                         * Creates a plain object from a MutateAudienceResult message. Also converts values to other types if specified.
                         * @param message MutateAudienceResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateAudienceResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAudienceResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateAudienceResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an AutomaticallyCreatedAssetRemovalService */
                    class AutomaticallyCreatedAssetRemovalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AutomaticallyCreatedAssetRemovalService 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 AutomaticallyCreatedAssetRemovalService 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): AutomaticallyCreatedAssetRemovalService;

                        /**
                         * Calls RemoveCampaignAutomaticallyCreatedAsset.
                         * @param request RemoveCampaignAutomaticallyCreatedAssetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RemoveCampaignAutomaticallyCreatedAssetResponse
                         */
                        public removeCampaignAutomaticallyCreatedAsset(request: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetRequest, callback: google.ads.googleads.v23.services.AutomaticallyCreatedAssetRemovalService.RemoveCampaignAutomaticallyCreatedAssetCallback): void;

                        /**
                         * Calls RemoveCampaignAutomaticallyCreatedAsset.
                         * @param request RemoveCampaignAutomaticallyCreatedAssetRequest message or plain object
                         * @returns Promise
                         */
                        public removeCampaignAutomaticallyCreatedAsset(request: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetRequest): Promise<google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse>;
                    }

                    namespace AutomaticallyCreatedAssetRemovalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.AutomaticallyCreatedAssetRemovalService|removeCampaignAutomaticallyCreatedAsset}.
                         * @param error Error, if any
                         * @param [response] RemoveCampaignAutomaticallyCreatedAssetResponse
                         */
                        type RemoveCampaignAutomaticallyCreatedAssetCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse) => void;
                    }

                    /** Properties of a RemoveCampaignAutomaticallyCreatedAssetRequest. */
                    interface IRemoveCampaignAutomaticallyCreatedAssetRequest {

                        /** RemoveCampaignAutomaticallyCreatedAssetRequest customer_id */
                        customer_id?: (string|null);

                        /** RemoveCampaignAutomaticallyCreatedAssetRequest operations */
                        operations?: (google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetOperation[]|null);

                        /** RemoveCampaignAutomaticallyCreatedAssetRequest partial_failure */
                        partial_failure?: (boolean|null);
                    }

                    /** Represents a RemoveCampaignAutomaticallyCreatedAssetRequest. */
                    class RemoveCampaignAutomaticallyCreatedAssetRequest implements IRemoveCampaignAutomaticallyCreatedAssetRequest {

                        /**
                         * Constructs a new RemoveCampaignAutomaticallyCreatedAssetRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetRequest);

                        /** RemoveCampaignAutomaticallyCreatedAssetRequest customer_id. */
                        public customer_id: string;

                        /** RemoveCampaignAutomaticallyCreatedAssetRequest operations. */
                        public operations: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetOperation[];

                        /** RemoveCampaignAutomaticallyCreatedAssetRequest partial_failure. */
                        public partial_failure: boolean;

                        /**
                         * Creates a new RemoveCampaignAutomaticallyCreatedAssetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveCampaignAutomaticallyCreatedAssetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetRequest): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetRequest;

                        /**
                         * Encodes the specified RemoveCampaignAutomaticallyCreatedAssetRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetRequest.verify|verify} messages.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveCampaignAutomaticallyCreatedAssetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetRequest.verify|verify} messages.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveCampaignAutomaticallyCreatedAssetRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveCampaignAutomaticallyCreatedAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetRequest;

                        /**
                         * Decodes a RemoveCampaignAutomaticallyCreatedAssetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveCampaignAutomaticallyCreatedAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetRequest;

                        /**
                         * Verifies a RemoveCampaignAutomaticallyCreatedAssetRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveCampaignAutomaticallyCreatedAssetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveCampaignAutomaticallyCreatedAssetRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetRequest;

                        /**
                         * Creates a plain object from a RemoveCampaignAutomaticallyCreatedAssetRequest message. Also converts values to other types if specified.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveCampaignAutomaticallyCreatedAssetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveCampaignAutomaticallyCreatedAssetRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveCampaignAutomaticallyCreatedAssetOperation. */
                    interface IRemoveCampaignAutomaticallyCreatedAssetOperation {

                        /** RemoveCampaignAutomaticallyCreatedAssetOperation campaign */
                        campaign?: (string|null);

                        /** RemoveCampaignAutomaticallyCreatedAssetOperation asset */
                        asset?: (string|null);

                        /** RemoveCampaignAutomaticallyCreatedAssetOperation field_type */
                        field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents a RemoveCampaignAutomaticallyCreatedAssetOperation. */
                    class RemoveCampaignAutomaticallyCreatedAssetOperation implements IRemoveCampaignAutomaticallyCreatedAssetOperation {

                        /**
                         * Constructs a new RemoveCampaignAutomaticallyCreatedAssetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetOperation);

                        /** RemoveCampaignAutomaticallyCreatedAssetOperation campaign. */
                        public campaign: string;

                        /** RemoveCampaignAutomaticallyCreatedAssetOperation asset. */
                        public asset: string;

                        /** RemoveCampaignAutomaticallyCreatedAssetOperation field_type. */
                        public field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /**
                         * Creates a new RemoveCampaignAutomaticallyCreatedAssetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveCampaignAutomaticallyCreatedAssetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetOperation): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetOperation;

                        /**
                         * Encodes the specified RemoveCampaignAutomaticallyCreatedAssetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetOperation.verify|verify} messages.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveCampaignAutomaticallyCreatedAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetOperation.verify|verify} messages.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveCampaignAutomaticallyCreatedAssetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveCampaignAutomaticallyCreatedAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetOperation;

                        /**
                         * Decodes a RemoveCampaignAutomaticallyCreatedAssetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveCampaignAutomaticallyCreatedAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetOperation;

                        /**
                         * Verifies a RemoveCampaignAutomaticallyCreatedAssetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveCampaignAutomaticallyCreatedAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveCampaignAutomaticallyCreatedAssetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetOperation;

                        /**
                         * Creates a plain object from a RemoveCampaignAutomaticallyCreatedAssetOperation message. Also converts values to other types if specified.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveCampaignAutomaticallyCreatedAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveCampaignAutomaticallyCreatedAssetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveCampaignAutomaticallyCreatedAssetResponse. */
                    interface IRemoveCampaignAutomaticallyCreatedAssetResponse {

                        /** RemoveCampaignAutomaticallyCreatedAssetResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a RemoveCampaignAutomaticallyCreatedAssetResponse. */
                    class RemoveCampaignAutomaticallyCreatedAssetResponse implements IRemoveCampaignAutomaticallyCreatedAssetResponse {

                        /**
                         * Constructs a new RemoveCampaignAutomaticallyCreatedAssetResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetResponse);

                        /** RemoveCampaignAutomaticallyCreatedAssetResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new RemoveCampaignAutomaticallyCreatedAssetResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveCampaignAutomaticallyCreatedAssetResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetResponse): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse;

                        /**
                         * Encodes the specified RemoveCampaignAutomaticallyCreatedAssetResponse message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse.verify|verify} messages.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveCampaignAutomaticallyCreatedAssetResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse.verify|verify} messages.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveCampaignAutomaticallyCreatedAssetResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveCampaignAutomaticallyCreatedAssetResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveCampaignAutomaticallyCreatedAssetResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse;

                        /**
                         * Decodes a RemoveCampaignAutomaticallyCreatedAssetResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveCampaignAutomaticallyCreatedAssetResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse;

                        /**
                         * Verifies a RemoveCampaignAutomaticallyCreatedAssetResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveCampaignAutomaticallyCreatedAssetResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveCampaignAutomaticallyCreatedAssetResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse;

                        /**
                         * Creates a plain object from a RemoveCampaignAutomaticallyCreatedAssetResponse message. Also converts values to other types if specified.
                         * @param message RemoveCampaignAutomaticallyCreatedAssetResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveCampaignAutomaticallyCreatedAssetResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveCampaignAutomaticallyCreatedAssetResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveCampaignAutomaticallyCreatedAssetResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a BatchJobService */
                    class BatchJobService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BatchJobService 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 BatchJobService 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): BatchJobService;

                        /**
                         * Calls MutateBatchJob.
                         * @param request MutateBatchJobRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateBatchJobResponse
                         */
                        public mutateBatchJob(request: google.ads.googleads.v23.services.IMutateBatchJobRequest, callback: google.ads.googleads.v23.services.BatchJobService.MutateBatchJobCallback): void;

                        /**
                         * Calls MutateBatchJob.
                         * @param request MutateBatchJobRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBatchJob(request: google.ads.googleads.v23.services.IMutateBatchJobRequest): Promise<google.ads.googleads.v23.services.MutateBatchJobResponse>;

                        /**
                         * Calls ListBatchJobResults.
                         * @param request ListBatchJobResultsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBatchJobResultsResponse
                         */
                        public listBatchJobResults(request: google.ads.googleads.v23.services.IListBatchJobResultsRequest, callback: google.ads.googleads.v23.services.BatchJobService.ListBatchJobResultsCallback): void;

                        /**
                         * Calls ListBatchJobResults.
                         * @param request ListBatchJobResultsRequest message or plain object
                         * @returns Promise
                         */
                        public listBatchJobResults(request: google.ads.googleads.v23.services.IListBatchJobResultsRequest): Promise<google.ads.googleads.v23.services.ListBatchJobResultsResponse>;

                        /**
                         * Calls RunBatchJob.
                         * @param request RunBatchJobRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public runBatchJob(request: google.ads.googleads.v23.services.IRunBatchJobRequest, callback: google.ads.googleads.v23.services.BatchJobService.RunBatchJobCallback): void;

                        /**
                         * Calls RunBatchJob.
                         * @param request RunBatchJobRequest message or plain object
                         * @returns Promise
                         */
                        public runBatchJob(request: google.ads.googleads.v23.services.IRunBatchJobRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls AddBatchJobOperations.
                         * @param request AddBatchJobOperationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AddBatchJobOperationsResponse
                         */
                        public addBatchJobOperations(request: google.ads.googleads.v23.services.IAddBatchJobOperationsRequest, callback: google.ads.googleads.v23.services.BatchJobService.AddBatchJobOperationsCallback): void;

                        /**
                         * Calls AddBatchJobOperations.
                         * @param request AddBatchJobOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public addBatchJobOperations(request: google.ads.googleads.v23.services.IAddBatchJobOperationsRequest): Promise<google.ads.googleads.v23.services.AddBatchJobOperationsResponse>;
                    }

                    namespace BatchJobService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BatchJobService|mutateBatchJob}.
                         * @param error Error, if any
                         * @param [response] MutateBatchJobResponse
                         */
                        type MutateBatchJobCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateBatchJobResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BatchJobService|listBatchJobResults}.
                         * @param error Error, if any
                         * @param [response] ListBatchJobResultsResponse
                         */
                        type ListBatchJobResultsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListBatchJobResultsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BatchJobService|runBatchJob}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type RunBatchJobCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BatchJobService|addBatchJobOperations}.
                         * @param error Error, if any
                         * @param [response] AddBatchJobOperationsResponse
                         */
                        type AddBatchJobOperationsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.AddBatchJobOperationsResponse) => void;
                    }

                    /** Properties of a MutateBatchJobRequest. */
                    interface IMutateBatchJobRequest {

                        /** MutateBatchJobRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBatchJobRequest operation */
                        operation?: (google.ads.googleads.v23.services.IBatchJobOperation|null);
                    }

                    /** Represents a MutateBatchJobRequest. */
                    class MutateBatchJobRequest implements IMutateBatchJobRequest {

                        /**
                         * Constructs a new MutateBatchJobRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBatchJobRequest);

                        /** MutateBatchJobRequest customer_id. */
                        public customer_id: string;

                        /** MutateBatchJobRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.IBatchJobOperation|null);

                        /**
                         * Creates a new MutateBatchJobRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBatchJobRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBatchJobRequest): google.ads.googleads.v23.services.MutateBatchJobRequest;

                        /**
                         * Encodes the specified MutateBatchJobRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBatchJobRequest.verify|verify} messages.
                         * @param message MutateBatchJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBatchJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBatchJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBatchJobRequest.verify|verify} messages.
                         * @param message MutateBatchJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBatchJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBatchJobRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBatchJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBatchJobRequest;

                        /**
                         * Decodes a MutateBatchJobRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBatchJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBatchJobRequest;

                        /**
                         * Verifies a MutateBatchJobRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBatchJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBatchJobRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBatchJobRequest;

                        /**
                         * Creates a plain object from a MutateBatchJobRequest message. Also converts values to other types if specified.
                         * @param message MutateBatchJobRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBatchJobRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBatchJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBatchJobRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BatchJobOperation. */
                    interface IBatchJobOperation {

                        /** BatchJobOperation create */
                        create?: (google.ads.googleads.v23.resources.IBatchJob|null);

                        /** BatchJobOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BatchJobOperation. */
                    class BatchJobOperation implements IBatchJobOperation {

                        /**
                         * Constructs a new BatchJobOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBatchJobOperation);

                        /** BatchJobOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IBatchJob|null);

                        /** BatchJobOperation remove. */
                        public remove?: (string|null);

                        /** BatchJobOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new BatchJobOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJobOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBatchJobOperation): google.ads.googleads.v23.services.BatchJobOperation;

                        /**
                         * Encodes the specified BatchJobOperation message. Does not implicitly {@link google.ads.googleads.v23.services.BatchJobOperation.verify|verify} messages.
                         * @param message BatchJobOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBatchJobOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BatchJobOperation.verify|verify} messages.
                         * @param message BatchJobOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBatchJobOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BatchJobOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BatchJobOperation;

                        /**
                         * Decodes a BatchJobOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BatchJobOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BatchJobOperation;

                        /**
                         * Verifies a BatchJobOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BatchJobOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BatchJobOperation;

                        /**
                         * Creates a plain object from a BatchJobOperation message. Also converts values to other types if specified.
                         * @param message BatchJobOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BatchJobOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BatchJobOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBatchJobResponse. */
                    interface IMutateBatchJobResponse {

                        /** MutateBatchJobResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateBatchJobResult|null);
                    }

                    /** Represents a MutateBatchJobResponse. */
                    class MutateBatchJobResponse implements IMutateBatchJobResponse {

                        /**
                         * Constructs a new MutateBatchJobResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBatchJobResponse);

                        /** MutateBatchJobResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateBatchJobResult|null);

                        /**
                         * Creates a new MutateBatchJobResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBatchJobResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBatchJobResponse): google.ads.googleads.v23.services.MutateBatchJobResponse;

                        /**
                         * Encodes the specified MutateBatchJobResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBatchJobResponse.verify|verify} messages.
                         * @param message MutateBatchJobResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBatchJobResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBatchJobResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBatchJobResponse.verify|verify} messages.
                         * @param message MutateBatchJobResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBatchJobResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBatchJobResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBatchJobResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBatchJobResponse;

                        /**
                         * Decodes a MutateBatchJobResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBatchJobResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBatchJobResponse;

                        /**
                         * Verifies a MutateBatchJobResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBatchJobResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBatchJobResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBatchJobResponse;

                        /**
                         * Creates a plain object from a MutateBatchJobResponse message. Also converts values to other types if specified.
                         * @param message MutateBatchJobResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBatchJobResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBatchJobResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBatchJobResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBatchJobResult. */
                    interface IMutateBatchJobResult {

                        /** MutateBatchJobResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateBatchJobResult. */
                    class MutateBatchJobResult implements IMutateBatchJobResult {

                        /**
                         * Constructs a new MutateBatchJobResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBatchJobResult);

                        /** MutateBatchJobResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateBatchJobResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBatchJobResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBatchJobResult): google.ads.googleads.v23.services.MutateBatchJobResult;

                        /**
                         * Encodes the specified MutateBatchJobResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBatchJobResult.verify|verify} messages.
                         * @param message MutateBatchJobResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBatchJobResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBatchJobResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBatchJobResult.verify|verify} messages.
                         * @param message MutateBatchJobResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBatchJobResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBatchJobResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBatchJobResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBatchJobResult;

                        /**
                         * Decodes a MutateBatchJobResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBatchJobResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBatchJobResult;

                        /**
                         * Verifies a MutateBatchJobResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBatchJobResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBatchJobResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBatchJobResult;

                        /**
                         * Creates a plain object from a MutateBatchJobResult message. Also converts values to other types if specified.
                         * @param message MutateBatchJobResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBatchJobResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBatchJobResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBatchJobResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RunBatchJobRequest. */
                    interface IRunBatchJobRequest {

                        /** RunBatchJobRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a RunBatchJobRequest. */
                    class RunBatchJobRequest implements IRunBatchJobRequest {

                        /**
                         * Constructs a new RunBatchJobRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRunBatchJobRequest);

                        /** RunBatchJobRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new RunBatchJobRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RunBatchJobRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRunBatchJobRequest): google.ads.googleads.v23.services.RunBatchJobRequest;

                        /**
                         * Encodes the specified RunBatchJobRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RunBatchJobRequest.verify|verify} messages.
                         * @param message RunBatchJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRunBatchJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RunBatchJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RunBatchJobRequest.verify|verify} messages.
                         * @param message RunBatchJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRunBatchJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RunBatchJobRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RunBatchJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RunBatchJobRequest;

                        /**
                         * Decodes a RunBatchJobRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RunBatchJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RunBatchJobRequest;

                        /**
                         * Verifies a RunBatchJobRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RunBatchJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RunBatchJobRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RunBatchJobRequest;

                        /**
                         * Creates a plain object from a RunBatchJobRequest message. Also converts values to other types if specified.
                         * @param message RunBatchJobRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RunBatchJobRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RunBatchJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RunBatchJobRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddBatchJobOperationsRequest. */
                    interface IAddBatchJobOperationsRequest {

                        /** AddBatchJobOperationsRequest resource_name */
                        resource_name?: (string|null);

                        /** AddBatchJobOperationsRequest sequence_token */
                        sequence_token?: (string|null);

                        /** AddBatchJobOperationsRequest mutate_operations */
                        mutate_operations?: (google.ads.googleads.v23.services.IMutateOperation[]|null);
                    }

                    /** Represents an AddBatchJobOperationsRequest. */
                    class AddBatchJobOperationsRequest implements IAddBatchJobOperationsRequest {

                        /**
                         * Constructs a new AddBatchJobOperationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAddBatchJobOperationsRequest);

                        /** AddBatchJobOperationsRequest resource_name. */
                        public resource_name: string;

                        /** AddBatchJobOperationsRequest sequence_token. */
                        public sequence_token: string;

                        /** AddBatchJobOperationsRequest mutate_operations. */
                        public mutate_operations: google.ads.googleads.v23.services.IMutateOperation[];

                        /**
                         * Creates a new AddBatchJobOperationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddBatchJobOperationsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAddBatchJobOperationsRequest): google.ads.googleads.v23.services.AddBatchJobOperationsRequest;

                        /**
                         * Encodes the specified AddBatchJobOperationsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.AddBatchJobOperationsRequest.verify|verify} messages.
                         * @param message AddBatchJobOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAddBatchJobOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddBatchJobOperationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AddBatchJobOperationsRequest.verify|verify} messages.
                         * @param message AddBatchJobOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAddBatchJobOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddBatchJobOperationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddBatchJobOperationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AddBatchJobOperationsRequest;

                        /**
                         * Decodes an AddBatchJobOperationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddBatchJobOperationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AddBatchJobOperationsRequest;

                        /**
                         * Verifies an AddBatchJobOperationsRequest message.
                         * @param message Plain 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 AddBatchJobOperationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddBatchJobOperationsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AddBatchJobOperationsRequest;

                        /**
                         * Creates a plain object from an AddBatchJobOperationsRequest message. Also converts values to other types if specified.
                         * @param message AddBatchJobOperationsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AddBatchJobOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddBatchJobOperationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddBatchJobOperationsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddBatchJobOperationsResponse. */
                    interface IAddBatchJobOperationsResponse {

                        /** AddBatchJobOperationsResponse total_operations */
                        total_operations?: (number|null);

                        /** AddBatchJobOperationsResponse next_sequence_token */
                        next_sequence_token?: (string|null);
                    }

                    /** Represents an AddBatchJobOperationsResponse. */
                    class AddBatchJobOperationsResponse implements IAddBatchJobOperationsResponse {

                        /**
                         * Constructs a new AddBatchJobOperationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAddBatchJobOperationsResponse);

                        /** AddBatchJobOperationsResponse total_operations. */
                        public total_operations: number;

                        /** AddBatchJobOperationsResponse next_sequence_token. */
                        public next_sequence_token: string;

                        /**
                         * Creates a new AddBatchJobOperationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddBatchJobOperationsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAddBatchJobOperationsResponse): google.ads.googleads.v23.services.AddBatchJobOperationsResponse;

                        /**
                         * Encodes the specified AddBatchJobOperationsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.AddBatchJobOperationsResponse.verify|verify} messages.
                         * @param message AddBatchJobOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAddBatchJobOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddBatchJobOperationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AddBatchJobOperationsResponse.verify|verify} messages.
                         * @param message AddBatchJobOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAddBatchJobOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddBatchJobOperationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddBatchJobOperationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AddBatchJobOperationsResponse;

                        /**
                         * Decodes an AddBatchJobOperationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddBatchJobOperationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AddBatchJobOperationsResponse;

                        /**
                         * Verifies an AddBatchJobOperationsResponse message.
                         * @param message Plain 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 AddBatchJobOperationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddBatchJobOperationsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AddBatchJobOperationsResponse;

                        /**
                         * Creates a plain object from an AddBatchJobOperationsResponse message. Also converts values to other types if specified.
                         * @param message AddBatchJobOperationsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AddBatchJobOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddBatchJobOperationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddBatchJobOperationsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBatchJobResultsRequest. */
                    interface IListBatchJobResultsRequest {

                        /** ListBatchJobResultsRequest resource_name */
                        resource_name?: (string|null);

                        /** ListBatchJobResultsRequest page_token */
                        page_token?: (string|null);

                        /** ListBatchJobResultsRequest page_size */
                        page_size?: (number|null);

                        /** ListBatchJobResultsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a ListBatchJobResultsRequest. */
                    class ListBatchJobResultsRequest implements IListBatchJobResultsRequest {

                        /**
                         * Constructs a new ListBatchJobResultsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBatchJobResultsRequest);

                        /** ListBatchJobResultsRequest resource_name. */
                        public resource_name: string;

                        /** ListBatchJobResultsRequest page_token. */
                        public page_token: string;

                        /** ListBatchJobResultsRequest page_size. */
                        public page_size: number;

                        /** ListBatchJobResultsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new ListBatchJobResultsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBatchJobResultsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBatchJobResultsRequest): google.ads.googleads.v23.services.ListBatchJobResultsRequest;

                        /**
                         * Encodes the specified ListBatchJobResultsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListBatchJobResultsRequest.verify|verify} messages.
                         * @param message ListBatchJobResultsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBatchJobResultsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBatchJobResultsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBatchJobResultsRequest.verify|verify} messages.
                         * @param message ListBatchJobResultsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBatchJobResultsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBatchJobResultsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBatchJobResultsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBatchJobResultsRequest;

                        /**
                         * Decodes a ListBatchJobResultsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBatchJobResultsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBatchJobResultsRequest;

                        /**
                         * Verifies a ListBatchJobResultsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBatchJobResultsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBatchJobResultsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBatchJobResultsRequest;

                        /**
                         * Creates a plain object from a ListBatchJobResultsRequest message. Also converts values to other types if specified.
                         * @param message ListBatchJobResultsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBatchJobResultsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBatchJobResultsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBatchJobResultsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBatchJobResultsResponse. */
                    interface IListBatchJobResultsResponse {

                        /** ListBatchJobResultsResponse results */
                        results?: (google.ads.googleads.v23.services.IBatchJobResult[]|null);

                        /** ListBatchJobResultsResponse next_page_token */
                        next_page_token?: (string|null);
                    }

                    /** Represents a ListBatchJobResultsResponse. */
                    class ListBatchJobResultsResponse implements IListBatchJobResultsResponse {

                        /**
                         * Constructs a new ListBatchJobResultsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBatchJobResultsResponse);

                        /** ListBatchJobResultsResponse results. */
                        public results: google.ads.googleads.v23.services.IBatchJobResult[];

                        /** ListBatchJobResultsResponse next_page_token. */
                        public next_page_token: string;

                        /**
                         * Creates a new ListBatchJobResultsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBatchJobResultsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBatchJobResultsResponse): google.ads.googleads.v23.services.ListBatchJobResultsResponse;

                        /**
                         * Encodes the specified ListBatchJobResultsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListBatchJobResultsResponse.verify|verify} messages.
                         * @param message ListBatchJobResultsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBatchJobResultsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBatchJobResultsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBatchJobResultsResponse.verify|verify} messages.
                         * @param message ListBatchJobResultsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBatchJobResultsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBatchJobResultsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBatchJobResultsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBatchJobResultsResponse;

                        /**
                         * Decodes a ListBatchJobResultsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBatchJobResultsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBatchJobResultsResponse;

                        /**
                         * Verifies a ListBatchJobResultsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBatchJobResultsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBatchJobResultsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBatchJobResultsResponse;

                        /**
                         * Creates a plain object from a ListBatchJobResultsResponse message. Also converts values to other types if specified.
                         * @param message ListBatchJobResultsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBatchJobResultsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBatchJobResultsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBatchJobResultsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BatchJobResult. */
                    interface IBatchJobResult {

                        /** BatchJobResult operation_index */
                        operation_index?: (number|null);

                        /** BatchJobResult mutate_operation_response */
                        mutate_operation_response?: (google.ads.googleads.v23.services.IMutateOperationResponse|null);

                        /** BatchJobResult status */
                        status?: (google.rpc.IStatus|null);
                    }

                    /** Represents a BatchJobResult. */
                    class BatchJobResult implements IBatchJobResult {

                        /**
                         * Constructs a new BatchJobResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBatchJobResult);

                        /** BatchJobResult operation_index. */
                        public operation_index: number;

                        /** BatchJobResult mutate_operation_response. */
                        public mutate_operation_response?: (google.ads.googleads.v23.services.IMutateOperationResponse|null);

                        /** BatchJobResult status. */
                        public status?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new BatchJobResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJobResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBatchJobResult): google.ads.googleads.v23.services.BatchJobResult;

                        /**
                         * Encodes the specified BatchJobResult message. Does not implicitly {@link google.ads.googleads.v23.services.BatchJobResult.verify|verify} messages.
                         * @param message BatchJobResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBatchJobResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BatchJobResult.verify|verify} messages.
                         * @param message BatchJobResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBatchJobResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BatchJobResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BatchJobResult;

                        /**
                         * Decodes a BatchJobResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BatchJobResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BatchJobResult;

                        /**
                         * Verifies a BatchJobResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BatchJobResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BatchJobResult;

                        /**
                         * Creates a plain object from a BatchJobResult message. Also converts values to other types if specified.
                         * @param message BatchJobResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BatchJobResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BatchJobResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a GoogleAdsService */
                    class GoogleAdsService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new GoogleAdsService 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 GoogleAdsService 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): GoogleAdsService;

                        /**
                         * Calls Search.
                         * @param request SearchGoogleAdsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SearchGoogleAdsResponse
                         */
                        public search(request: google.ads.googleads.v23.services.ISearchGoogleAdsRequest, callback: google.ads.googleads.v23.services.GoogleAdsService.SearchCallback): void;

                        /**
                         * Calls Search.
                         * @param request SearchGoogleAdsRequest message or plain object
                         * @returns Promise
                         */
                        public search(request: google.ads.googleads.v23.services.ISearchGoogleAdsRequest): Promise<google.ads.googleads.v23.services.SearchGoogleAdsResponse>;

                        /**
                         * Calls SearchStream.
                         * @param request SearchGoogleAdsStreamRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SearchGoogleAdsStreamResponse
                         */
                        public searchStream(request: google.ads.googleads.v23.services.ISearchGoogleAdsStreamRequest, callback: google.ads.googleads.v23.services.GoogleAdsService.SearchStreamCallback): void;

                        /**
                         * Calls SearchStream.
                         * @param request SearchGoogleAdsStreamRequest message or plain object
                         * @returns Promise
                         */
                        public searchStream(request: google.ads.googleads.v23.services.ISearchGoogleAdsStreamRequest): Promise<google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse>;

                        /**
                         * Calls Mutate.
                         * @param request MutateGoogleAdsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateGoogleAdsResponse
                         */
                        public mutate(request: google.ads.googleads.v23.services.IMutateGoogleAdsRequest, callback: google.ads.googleads.v23.services.GoogleAdsService.MutateCallback): void;

                        /**
                         * Calls Mutate.
                         * @param request MutateGoogleAdsRequest message or plain object
                         * @returns Promise
                         */
                        public mutate(request: google.ads.googleads.v23.services.IMutateGoogleAdsRequest): Promise<google.ads.googleads.v23.services.MutateGoogleAdsResponse>;
                    }

                    namespace GoogleAdsService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.GoogleAdsService|search}.
                         * @param error Error, if any
                         * @param [response] SearchGoogleAdsResponse
                         */
                        type SearchCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SearchGoogleAdsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.GoogleAdsService|searchStream}.
                         * @param error Error, if any
                         * @param [response] SearchGoogleAdsStreamResponse
                         */
                        type SearchStreamCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.GoogleAdsService|mutate}.
                         * @param error Error, if any
                         * @param [response] MutateGoogleAdsResponse
                         */
                        type MutateCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateGoogleAdsResponse) => void;
                    }

                    /** Properties of a SearchGoogleAdsRequest. */
                    interface ISearchGoogleAdsRequest {

                        /** SearchGoogleAdsRequest customer_id */
                        customer_id?: (string|null);

                        /** SearchGoogleAdsRequest query */
                        query?: (string|null);

                        /** SearchGoogleAdsRequest page_token */
                        page_token?: (string|null);

                        /** SearchGoogleAdsRequest page_size */
                        page_size?: (number|null);

                        /** SearchGoogleAdsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** SearchGoogleAdsRequest search_settings */
                        search_settings?: (google.ads.googleads.v23.services.ISearchSettings|null);
                    }

                    /** Represents a SearchGoogleAdsRequest. */
                    class SearchGoogleAdsRequest implements ISearchGoogleAdsRequest {

                        /**
                         * Constructs a new SearchGoogleAdsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsRequest);

                        /** SearchGoogleAdsRequest customer_id. */
                        public customer_id: string;

                        /** SearchGoogleAdsRequest query. */
                        public query: string;

                        /** SearchGoogleAdsRequest page_token. */
                        public page_token: string;

                        /** SearchGoogleAdsRequest page_size. */
                        public page_size: number;

                        /** SearchGoogleAdsRequest validate_only. */
                        public validate_only: boolean;

                        /** SearchGoogleAdsRequest search_settings. */
                        public search_settings?: (google.ads.googleads.v23.services.ISearchSettings|null);

                        /**
                         * Creates a new SearchGoogleAdsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsRequest): google.ads.googleads.v23.services.SearchGoogleAdsRequest;

                        /**
                         * Encodes the specified SearchGoogleAdsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsRequest.verify|verify} messages.
                         * @param message SearchGoogleAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchGoogleAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsRequest.verify|verify} messages.
                         * @param message SearchGoogleAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchGoogleAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchGoogleAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchGoogleAdsRequest;

                        /**
                         * Decodes a SearchGoogleAdsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchGoogleAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchGoogleAdsRequest;

                        /**
                         * Verifies a SearchGoogleAdsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchGoogleAdsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchGoogleAdsRequest;

                        /**
                         * Creates a plain object from a SearchGoogleAdsRequest message. Also converts values to other types if specified.
                         * @param message SearchGoogleAdsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchGoogleAdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchGoogleAdsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchGoogleAdsResponse. */
                    interface ISearchGoogleAdsResponse {

                        /** SearchGoogleAdsResponse results */
                        results?: (google.ads.googleads.v23.services.IGoogleAdsRow[]|null);

                        /** SearchGoogleAdsResponse next_page_token */
                        next_page_token?: (string|null);

                        /** SearchGoogleAdsResponse total_results_count */
                        total_results_count?: (number|null);

                        /** SearchGoogleAdsResponse field_mask */
                        field_mask?: (google.protobuf.IFieldMask|null);

                        /** SearchGoogleAdsResponse summary_row */
                        summary_row?: (google.ads.googleads.v23.services.IGoogleAdsRow|null);

                        /** SearchGoogleAdsResponse query_resource_consumption */
                        query_resource_consumption?: (number|null);

                        /** SearchGoogleAdsResponse metric_attributes */
                        metric_attributes?: (google.ads.googleads.v23.services.IMetricAttributes[]|null);
                    }

                    /** Represents a SearchGoogleAdsResponse. */
                    class SearchGoogleAdsResponse implements ISearchGoogleAdsResponse {

                        /**
                         * Constructs a new SearchGoogleAdsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsResponse);

                        /** SearchGoogleAdsResponse results. */
                        public results: google.ads.googleads.v23.services.IGoogleAdsRow[];

                        /** SearchGoogleAdsResponse next_page_token. */
                        public next_page_token: string;

                        /** SearchGoogleAdsResponse total_results_count. */
                        public total_results_count: number;

                        /** SearchGoogleAdsResponse field_mask. */
                        public field_mask?: (google.protobuf.IFieldMask|null);

                        /** SearchGoogleAdsResponse summary_row. */
                        public summary_row?: (google.ads.googleads.v23.services.IGoogleAdsRow|null);

                        /** SearchGoogleAdsResponse query_resource_consumption. */
                        public query_resource_consumption: number;

                        /** SearchGoogleAdsResponse metric_attributes. */
                        public metric_attributes: google.ads.googleads.v23.services.IMetricAttributes[];

                        /**
                         * Creates a new SearchGoogleAdsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsResponse): google.ads.googleads.v23.services.SearchGoogleAdsResponse;

                        /**
                         * Encodes the specified SearchGoogleAdsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsResponse.verify|verify} messages.
                         * @param message SearchGoogleAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchGoogleAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsResponse.verify|verify} messages.
                         * @param message SearchGoogleAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchGoogleAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchGoogleAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchGoogleAdsResponse;

                        /**
                         * Decodes a SearchGoogleAdsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchGoogleAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchGoogleAdsResponse;

                        /**
                         * Verifies a SearchGoogleAdsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchGoogleAdsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchGoogleAdsResponse;

                        /**
                         * Creates a plain object from a SearchGoogleAdsResponse message. Also converts values to other types if specified.
                         * @param message SearchGoogleAdsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchGoogleAdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchGoogleAdsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchGoogleAdsStreamRequest. */
                    interface ISearchGoogleAdsStreamRequest {

                        /** SearchGoogleAdsStreamRequest customer_id */
                        customer_id?: (string|null);

                        /** SearchGoogleAdsStreamRequest query */
                        query?: (string|null);

                        /** SearchGoogleAdsStreamRequest summary_row_setting */
                        summary_row_setting?: (google.ads.googleads.v23.enums.SummaryRowSettingEnum.SummaryRowSetting|keyof typeof google.ads.googleads.v23.enums.SummaryRowSettingEnum.SummaryRowSetting|null);
                    }

                    /** Represents a SearchGoogleAdsStreamRequest. */
                    class SearchGoogleAdsStreamRequest implements ISearchGoogleAdsStreamRequest {

                        /**
                         * Constructs a new SearchGoogleAdsStreamRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsStreamRequest);

                        /** SearchGoogleAdsStreamRequest customer_id. */
                        public customer_id: string;

                        /** SearchGoogleAdsStreamRequest query. */
                        public query: string;

                        /** SearchGoogleAdsStreamRequest summary_row_setting. */
                        public summary_row_setting: (google.ads.googleads.v23.enums.SummaryRowSettingEnum.SummaryRowSetting|keyof typeof google.ads.googleads.v23.enums.SummaryRowSettingEnum.SummaryRowSetting);

                        /**
                         * Creates a new SearchGoogleAdsStreamRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsStreamRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsStreamRequest): google.ads.googleads.v23.services.SearchGoogleAdsStreamRequest;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsStreamRequest.verify|verify} messages.
                         * @param message SearchGoogleAdsStreamRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchGoogleAdsStreamRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsStreamRequest.verify|verify} messages.
                         * @param message SearchGoogleAdsStreamRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchGoogleAdsStreamRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsStreamRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchGoogleAdsStreamRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchGoogleAdsStreamRequest;

                        /**
                         * Decodes a SearchGoogleAdsStreamRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchGoogleAdsStreamRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchGoogleAdsStreamRequest;

                        /**
                         * Verifies a SearchGoogleAdsStreamRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsStreamRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchGoogleAdsStreamRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchGoogleAdsStreamRequest;

                        /**
                         * Creates a plain object from a SearchGoogleAdsStreamRequest message. Also converts values to other types if specified.
                         * @param message SearchGoogleAdsStreamRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchGoogleAdsStreamRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsStreamRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchGoogleAdsStreamRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchGoogleAdsStreamResponse. */
                    interface ISearchGoogleAdsStreamResponse {

                        /** SearchGoogleAdsStreamResponse results */
                        results?: (google.ads.googleads.v23.services.IGoogleAdsRow[]|null);

                        /** SearchGoogleAdsStreamResponse field_mask */
                        field_mask?: (google.protobuf.IFieldMask|null);

                        /** SearchGoogleAdsStreamResponse summary_row */
                        summary_row?: (google.ads.googleads.v23.services.IGoogleAdsRow|null);

                        /** SearchGoogleAdsStreamResponse request_id */
                        request_id?: (string|null);

                        /** SearchGoogleAdsStreamResponse query_resource_consumption */
                        query_resource_consumption?: (number|null);

                        /** SearchGoogleAdsStreamResponse metric_attributes */
                        metric_attributes?: (google.ads.googleads.v23.services.IMetricAttributes[]|null);
                    }

                    /** Represents a SearchGoogleAdsStreamResponse. */
                    class SearchGoogleAdsStreamResponse implements ISearchGoogleAdsStreamResponse {

                        /**
                         * Constructs a new SearchGoogleAdsStreamResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsStreamResponse);

                        /** SearchGoogleAdsStreamResponse results. */
                        public results: google.ads.googleads.v23.services.IGoogleAdsRow[];

                        /** SearchGoogleAdsStreamResponse field_mask. */
                        public field_mask?: (google.protobuf.IFieldMask|null);

                        /** SearchGoogleAdsStreamResponse summary_row. */
                        public summary_row?: (google.ads.googleads.v23.services.IGoogleAdsRow|null);

                        /** SearchGoogleAdsStreamResponse request_id. */
                        public request_id: string;

                        /** SearchGoogleAdsStreamResponse query_resource_consumption. */
                        public query_resource_consumption: number;

                        /** SearchGoogleAdsStreamResponse metric_attributes. */
                        public metric_attributes: google.ads.googleads.v23.services.IMetricAttributes[];

                        /**
                         * Creates a new SearchGoogleAdsStreamResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsStreamResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsStreamResponse): google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse.verify|verify} messages.
                         * @param message SearchGoogleAdsStreamResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchGoogleAdsStreamResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse.verify|verify} messages.
                         * @param message SearchGoogleAdsStreamResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchGoogleAdsStreamResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsStreamResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchGoogleAdsStreamResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse;

                        /**
                         * Decodes a SearchGoogleAdsStreamResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchGoogleAdsStreamResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse;

                        /**
                         * Verifies a SearchGoogleAdsStreamResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsStreamResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchGoogleAdsStreamResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse;

                        /**
                         * Creates a plain object from a SearchGoogleAdsStreamResponse message. Also converts values to other types if specified.
                         * @param message SearchGoogleAdsStreamResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchGoogleAdsStreamResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsStreamResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchGoogleAdsStreamResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GoogleAdsRow. */
                    interface IGoogleAdsRow {

                        /** GoogleAdsRow account_budget */
                        account_budget?: (google.ads.googleads.v23.resources.IAccountBudget|null);

                        /** GoogleAdsRow account_budget_proposal */
                        account_budget_proposal?: (google.ads.googleads.v23.resources.IAccountBudgetProposal|null);

                        /** GoogleAdsRow account_link */
                        account_link?: (google.ads.googleads.v23.resources.IAccountLink|null);

                        /** GoogleAdsRow ad */
                        ad?: (google.ads.googleads.v23.resources.IAd|null);

                        /** GoogleAdsRow ad_group */
                        ad_group?: (google.ads.googleads.v23.resources.IAdGroup|null);

                        /** GoogleAdsRow ad_group_ad */
                        ad_group_ad?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                        /** GoogleAdsRow ad_group_ad_asset_combination_view */
                        ad_group_ad_asset_combination_view?: (google.ads.googleads.v23.resources.IAdGroupAdAssetCombinationView|null);

                        /** GoogleAdsRow ad_group_ad_asset_view */
                        ad_group_ad_asset_view?: (google.ads.googleads.v23.resources.IAdGroupAdAssetView|null);

                        /** GoogleAdsRow ad_group_ad_label */
                        ad_group_ad_label?: (google.ads.googleads.v23.resources.IAdGroupAdLabel|null);

                        /** GoogleAdsRow ad_group_asset */
                        ad_group_asset?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                        /** GoogleAdsRow ad_group_asset_set */
                        ad_group_asset_set?: (google.ads.googleads.v23.resources.IAdGroupAssetSet|null);

                        /** GoogleAdsRow ad_group_audience_view */
                        ad_group_audience_view?: (google.ads.googleads.v23.resources.IAdGroupAudienceView|null);

                        /** GoogleAdsRow ad_group_bid_modifier */
                        ad_group_bid_modifier?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                        /** GoogleAdsRow ad_group_criterion */
                        ad_group_criterion?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                        /** GoogleAdsRow ad_group_criterion_customizer */
                        ad_group_criterion_customizer?: (google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer|null);

                        /** GoogleAdsRow ad_group_criterion_label */
                        ad_group_criterion_label?: (google.ads.googleads.v23.resources.IAdGroupCriterionLabel|null);

                        /** GoogleAdsRow ad_group_criterion_simulation */
                        ad_group_criterion_simulation?: (google.ads.googleads.v23.resources.IAdGroupCriterionSimulation|null);

                        /** GoogleAdsRow ad_group_customizer */
                        ad_group_customizer?: (google.ads.googleads.v23.resources.IAdGroupCustomizer|null);

                        /** GoogleAdsRow ad_group_label */
                        ad_group_label?: (google.ads.googleads.v23.resources.IAdGroupLabel|null);

                        /** GoogleAdsRow ad_group_simulation */
                        ad_group_simulation?: (google.ads.googleads.v23.resources.IAdGroupSimulation|null);

                        /** GoogleAdsRow ad_parameter */
                        ad_parameter?: (google.ads.googleads.v23.resources.IAdParameter|null);

                        /** GoogleAdsRow age_range_view */
                        age_range_view?: (google.ads.googleads.v23.resources.IAgeRangeView|null);

                        /** GoogleAdsRow ad_schedule_view */
                        ad_schedule_view?: (google.ads.googleads.v23.resources.IAdScheduleView|null);

                        /** GoogleAdsRow ai_max_search_term_ad_combination_view */
                        ai_max_search_term_ad_combination_view?: (google.ads.googleads.v23.resources.IAiMaxSearchTermAdCombinationView|null);

                        /** GoogleAdsRow domain_category */
                        domain_category?: (google.ads.googleads.v23.resources.IDomainCategory|null);

                        /** GoogleAdsRow asset */
                        asset?: (google.ads.googleads.v23.resources.IAsset|null);

                        /** GoogleAdsRow asset_field_type_view */
                        asset_field_type_view?: (google.ads.googleads.v23.resources.IAssetFieldTypeView|null);

                        /** GoogleAdsRow channel_aggregate_asset_view */
                        channel_aggregate_asset_view?: (google.ads.googleads.v23.resources.IChannelAggregateAssetView|null);

                        /** GoogleAdsRow campaign_aggregate_asset_view */
                        campaign_aggregate_asset_view?: (google.ads.googleads.v23.resources.ICampaignAggregateAssetView|null);

                        /** GoogleAdsRow asset_group_asset */
                        asset_group_asset?: (google.ads.googleads.v23.resources.IAssetGroupAsset|null);

                        /** GoogleAdsRow asset_group_signal */
                        asset_group_signal?: (google.ads.googleads.v23.resources.IAssetGroupSignal|null);

                        /** GoogleAdsRow asset_group_listing_group_filter */
                        asset_group_listing_group_filter?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);

                        /** GoogleAdsRow asset_group_product_group_view */
                        asset_group_product_group_view?: (google.ads.googleads.v23.resources.IAssetGroupProductGroupView|null);

                        /** GoogleAdsRow asset_group_top_combination_view */
                        asset_group_top_combination_view?: (google.ads.googleads.v23.resources.IAssetGroupTopCombinationView|null);

                        /** GoogleAdsRow asset_group */
                        asset_group?: (google.ads.googleads.v23.resources.IAssetGroup|null);

                        /** GoogleAdsRow asset_set_asset */
                        asset_set_asset?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);

                        /** GoogleAdsRow asset_set */
                        asset_set?: (google.ads.googleads.v23.resources.IAssetSet|null);

                        /** GoogleAdsRow asset_set_type_view */
                        asset_set_type_view?: (google.ads.googleads.v23.resources.IAssetSetTypeView|null);

                        /** GoogleAdsRow batch_job */
                        batch_job?: (google.ads.googleads.v23.resources.IBatchJob|null);

                        /** GoogleAdsRow bidding_data_exclusion */
                        bidding_data_exclusion?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);

                        /** GoogleAdsRow bidding_seasonality_adjustment */
                        bidding_seasonality_adjustment?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);

                        /** GoogleAdsRow bidding_strategy */
                        bidding_strategy?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);

                        /** GoogleAdsRow bidding_strategy_simulation */
                        bidding_strategy_simulation?: (google.ads.googleads.v23.resources.IBiddingStrategySimulation|null);

                        /** GoogleAdsRow billing_setup */
                        billing_setup?: (google.ads.googleads.v23.resources.IBillingSetup|null);

                        /** GoogleAdsRow call_view */
                        call_view?: (google.ads.googleads.v23.resources.ICallView|null);

                        /** GoogleAdsRow campaign_budget */
                        campaign_budget?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                        /** GoogleAdsRow campaign */
                        campaign?: (google.ads.googleads.v23.resources.ICampaign|null);

                        /** GoogleAdsRow campaign_asset */
                        campaign_asset?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                        /** GoogleAdsRow campaign_asset_set */
                        campaign_asset_set?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);

                        /** GoogleAdsRow campaign_audience_view */
                        campaign_audience_view?: (google.ads.googleads.v23.resources.ICampaignAudienceView|null);

                        /** GoogleAdsRow campaign_bid_modifier */
                        campaign_bid_modifier?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);

                        /** GoogleAdsRow campaign_conversion_goal */
                        campaign_conversion_goal?: (google.ads.googleads.v23.resources.ICampaignConversionGoal|null);

                        /** GoogleAdsRow campaign_criterion */
                        campaign_criterion?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                        /** GoogleAdsRow campaign_customizer */
                        campaign_customizer?: (google.ads.googleads.v23.resources.ICampaignCustomizer|null);

                        /** GoogleAdsRow campaign_draft */
                        campaign_draft?: (google.ads.googleads.v23.resources.ICampaignDraft|null);

                        /** GoogleAdsRow campaign_group */
                        campaign_group?: (google.ads.googleads.v23.resources.ICampaignGroup|null);

                        /** GoogleAdsRow campaign_goal_config */
                        campaign_goal_config?: (google.ads.googleads.v23.resources.ICampaignGoalConfig|null);

                        /** GoogleAdsRow campaign_label */
                        campaign_label?: (google.ads.googleads.v23.resources.ICampaignLabel|null);

                        /** GoogleAdsRow campaign_lifecycle_goal */
                        campaign_lifecycle_goal?: (google.ads.googleads.v23.resources.ICampaignLifecycleGoal|null);

                        /** GoogleAdsRow campaign_search_term_insight */
                        campaign_search_term_insight?: (google.ads.googleads.v23.resources.ICampaignSearchTermInsight|null);

                        /** GoogleAdsRow campaign_search_term_view */
                        campaign_search_term_view?: (google.ads.googleads.v23.resources.ICampaignSearchTermView|null);

                        /** GoogleAdsRow campaign_shared_set */
                        campaign_shared_set?: (google.ads.googleads.v23.resources.ICampaignSharedSet|null);

                        /** GoogleAdsRow campaign_simulation */
                        campaign_simulation?: (google.ads.googleads.v23.resources.ICampaignSimulation|null);

                        /** GoogleAdsRow carrier_constant */
                        carrier_constant?: (google.ads.googleads.v23.resources.ICarrierConstant|null);

                        /** GoogleAdsRow change_event */
                        change_event?: (google.ads.googleads.v23.resources.IChangeEvent|null);

                        /** GoogleAdsRow change_status */
                        change_status?: (google.ads.googleads.v23.resources.IChangeStatus|null);

                        /** GoogleAdsRow combined_audience */
                        combined_audience?: (google.ads.googleads.v23.resources.ICombinedAudience|null);

                        /** GoogleAdsRow audience */
                        audience?: (google.ads.googleads.v23.resources.IAudience|null);

                        /** GoogleAdsRow conversion_action */
                        conversion_action?: (google.ads.googleads.v23.resources.IConversionAction|null);

                        /** GoogleAdsRow conversion_custom_variable */
                        conversion_custom_variable?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);

                        /** GoogleAdsRow conversion_goal_campaign_config */
                        conversion_goal_campaign_config?: (google.ads.googleads.v23.resources.IConversionGoalCampaignConfig|null);

                        /** GoogleAdsRow conversion_value_rule */
                        conversion_value_rule?: (google.ads.googleads.v23.resources.IConversionValueRule|null);

                        /** GoogleAdsRow conversion_value_rule_set */
                        conversion_value_rule_set?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);

                        /** GoogleAdsRow click_view */
                        click_view?: (google.ads.googleads.v23.resources.IClickView|null);

                        /** GoogleAdsRow currency_constant */
                        currency_constant?: (google.ads.googleads.v23.resources.ICurrencyConstant|null);

                        /** GoogleAdsRow custom_audience */
                        custom_audience?: (google.ads.googleads.v23.resources.ICustomAudience|null);

                        /** GoogleAdsRow custom_conversion_goal */
                        custom_conversion_goal?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);

                        /** GoogleAdsRow custom_interest */
                        custom_interest?: (google.ads.googleads.v23.resources.ICustomInterest|null);

                        /** GoogleAdsRow customer */
                        customer?: (google.ads.googleads.v23.resources.ICustomer|null);

                        /** GoogleAdsRow customer_asset */
                        customer_asset?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                        /** GoogleAdsRow customer_asset_set */
                        customer_asset_set?: (google.ads.googleads.v23.resources.ICustomerAssetSet|null);

                        /** GoogleAdsRow accessible_bidding_strategy */
                        accessible_bidding_strategy?: (google.ads.googleads.v23.resources.IAccessibleBiddingStrategy|null);

                        /** GoogleAdsRow customer_customizer */
                        customer_customizer?: (google.ads.googleads.v23.resources.ICustomerCustomizer|null);

                        /** GoogleAdsRow customer_manager_link */
                        customer_manager_link?: (google.ads.googleads.v23.resources.ICustomerManagerLink|null);

                        /** GoogleAdsRow customer_client_link */
                        customer_client_link?: (google.ads.googleads.v23.resources.ICustomerClientLink|null);

                        /** GoogleAdsRow customer_client */
                        customer_client?: (google.ads.googleads.v23.resources.ICustomerClient|null);

                        /** GoogleAdsRow customer_conversion_goal */
                        customer_conversion_goal?: (google.ads.googleads.v23.resources.ICustomerConversionGoal|null);

                        /** GoogleAdsRow customer_label */
                        customer_label?: (google.ads.googleads.v23.resources.ICustomerLabel|null);

                        /** GoogleAdsRow customer_lifecycle_goal */
                        customer_lifecycle_goal?: (google.ads.googleads.v23.resources.ICustomerLifecycleGoal|null);

                        /** GoogleAdsRow customer_negative_criterion */
                        customer_negative_criterion?: (google.ads.googleads.v23.resources.ICustomerNegativeCriterion|null);

                        /** GoogleAdsRow customer_search_term_insight */
                        customer_search_term_insight?: (google.ads.googleads.v23.resources.ICustomerSearchTermInsight|null);

                        /** GoogleAdsRow customer_user_access */
                        customer_user_access?: (google.ads.googleads.v23.resources.ICustomerUserAccess|null);

                        /** GoogleAdsRow customer_user_access_invitation */
                        customer_user_access_invitation?: (google.ads.googleads.v23.resources.ICustomerUserAccessInvitation|null);

                        /** GoogleAdsRow customizer_attribute */
                        customizer_attribute?: (google.ads.googleads.v23.resources.ICustomizerAttribute|null);

                        /** GoogleAdsRow data_link */
                        data_link?: (google.ads.googleads.v23.resources.IDataLink|null);

                        /** GoogleAdsRow detail_content_suitability_placement_view */
                        detail_content_suitability_placement_view?: (google.ads.googleads.v23.resources.IDetailContentSuitabilityPlacementView|null);

                        /** GoogleAdsRow detail_placement_view */
                        detail_placement_view?: (google.ads.googleads.v23.resources.IDetailPlacementView|null);

                        /** GoogleAdsRow detailed_demographic */
                        detailed_demographic?: (google.ads.googleads.v23.resources.IDetailedDemographic|null);

                        /** GoogleAdsRow display_keyword_view */
                        display_keyword_view?: (google.ads.googleads.v23.resources.IDisplayKeywordView|null);

                        /** GoogleAdsRow distance_view */
                        distance_view?: (google.ads.googleads.v23.resources.IDistanceView|null);

                        /** GoogleAdsRow dynamic_search_ads_search_term_view */
                        dynamic_search_ads_search_term_view?: (google.ads.googleads.v23.resources.IDynamicSearchAdsSearchTermView|null);

                        /** GoogleAdsRow expanded_landing_page_view */
                        expanded_landing_page_view?: (google.ads.googleads.v23.resources.IExpandedLandingPageView|null);

                        /** GoogleAdsRow final_url_expansion_asset_view */
                        final_url_expansion_asset_view?: (google.ads.googleads.v23.resources.IFinalUrlExpansionAssetView|null);

                        /** GoogleAdsRow gender_view */
                        gender_view?: (google.ads.googleads.v23.resources.IGenderView|null);

                        /** GoogleAdsRow geo_target_constant */
                        geo_target_constant?: (google.ads.googleads.v23.resources.IGeoTargetConstant|null);

                        /** GoogleAdsRow geographic_view */
                        geographic_view?: (google.ads.googleads.v23.resources.IGeographicView|null);

                        /** GoogleAdsRow goal */
                        goal?: (google.ads.googleads.v23.resources.IGoal|null);

                        /** GoogleAdsRow group_content_suitability_placement_view */
                        group_content_suitability_placement_view?: (google.ads.googleads.v23.resources.IGroupContentSuitabilityPlacementView|null);

                        /** GoogleAdsRow group_placement_view */
                        group_placement_view?: (google.ads.googleads.v23.resources.IGroupPlacementView|null);

                        /** GoogleAdsRow hotel_group_view */
                        hotel_group_view?: (google.ads.googleads.v23.resources.IHotelGroupView|null);

                        /** GoogleAdsRow hotel_performance_view */
                        hotel_performance_view?: (google.ads.googleads.v23.resources.IHotelPerformanceView|null);

                        /** GoogleAdsRow hotel_reconciliation */
                        hotel_reconciliation?: (google.ads.googleads.v23.resources.IHotelReconciliation|null);

                        /** GoogleAdsRow income_range_view */
                        income_range_view?: (google.ads.googleads.v23.resources.IIncomeRangeView|null);

                        /** GoogleAdsRow keyword_view */
                        keyword_view?: (google.ads.googleads.v23.resources.IKeywordView|null);

                        /** GoogleAdsRow keyword_plan */
                        keyword_plan?: (google.ads.googleads.v23.resources.IKeywordPlan|null);

                        /** GoogleAdsRow keyword_plan_campaign */
                        keyword_plan_campaign?: (google.ads.googleads.v23.resources.IKeywordPlanCampaign|null);

                        /** GoogleAdsRow keyword_plan_campaign_keyword */
                        keyword_plan_campaign_keyword?: (google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword|null);

                        /** GoogleAdsRow keyword_plan_ad_group */
                        keyword_plan_ad_group?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroup|null);

                        /** GoogleAdsRow keyword_plan_ad_group_keyword */
                        keyword_plan_ad_group_keyword?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword|null);

                        /** GoogleAdsRow keyword_theme_constant */
                        keyword_theme_constant?: (google.ads.googleads.v23.resources.IKeywordThemeConstant|null);

                        /** GoogleAdsRow label */
                        label?: (google.ads.googleads.v23.resources.ILabel|null);

                        /** GoogleAdsRow landing_page_view */
                        landing_page_view?: (google.ads.googleads.v23.resources.ILandingPageView|null);

                        /** GoogleAdsRow language_constant */
                        language_constant?: (google.ads.googleads.v23.resources.ILanguageConstant|null);

                        /** GoogleAdsRow location_view */
                        location_view?: (google.ads.googleads.v23.resources.ILocationView|null);

                        /** GoogleAdsRow location_interest_view */
                        location_interest_view?: (google.ads.googleads.v23.resources.ILocationInterestView|null);

                        /** GoogleAdsRow managed_placement_view */
                        managed_placement_view?: (google.ads.googleads.v23.resources.IManagedPlacementView|null);

                        /** GoogleAdsRow matched_location_interest_view */
                        matched_location_interest_view?: (google.ads.googleads.v23.resources.IMatchedLocationInterestView|null);

                        /** GoogleAdsRow content_criterion_view */
                        content_criterion_view?: (google.ads.googleads.v23.resources.IContentCriterionView|null);

                        /** GoogleAdsRow media_file */
                        media_file?: (google.ads.googleads.v23.resources.IMediaFile|null);

                        /** GoogleAdsRow local_services_employee */
                        local_services_employee?: (google.ads.googleads.v23.resources.ILocalServicesEmployee|null);

                        /** GoogleAdsRow local_services_verification_artifact */
                        local_services_verification_artifact?: (google.ads.googleads.v23.resources.ILocalServicesVerificationArtifact|null);

                        /** GoogleAdsRow mobile_app_category_constant */
                        mobile_app_category_constant?: (google.ads.googleads.v23.resources.IMobileAppCategoryConstant|null);

                        /** GoogleAdsRow mobile_device_constant */
                        mobile_device_constant?: (google.ads.googleads.v23.resources.IMobileDeviceConstant|null);

                        /** GoogleAdsRow offline_conversion_upload_client_summary */
                        offline_conversion_upload_client_summary?: (google.ads.googleads.v23.resources.IOfflineConversionUploadClientSummary|null);

                        /** GoogleAdsRow offline_conversion_upload_conversion_action_summary */
                        offline_conversion_upload_conversion_action_summary?: (google.ads.googleads.v23.resources.IOfflineConversionUploadConversionActionSummary|null);

                        /** GoogleAdsRow offline_user_data_job */
                        offline_user_data_job?: (google.ads.googleads.v23.resources.IOfflineUserDataJob|null);

                        /** GoogleAdsRow operating_system_version_constant */
                        operating_system_version_constant?: (google.ads.googleads.v23.resources.IOperatingSystemVersionConstant|null);

                        /** GoogleAdsRow paid_organic_search_term_view */
                        paid_organic_search_term_view?: (google.ads.googleads.v23.resources.IPaidOrganicSearchTermView|null);

                        /** GoogleAdsRow qualifying_question */
                        qualifying_question?: (google.ads.googleads.v23.resources.IQualifyingQuestion|null);

                        /** GoogleAdsRow parental_status_view */
                        parental_status_view?: (google.ads.googleads.v23.resources.IParentalStatusView|null);

                        /** GoogleAdsRow per_store_view */
                        per_store_view?: (google.ads.googleads.v23.resources.IPerStoreView|null);

                        /** GoogleAdsRow performance_max_placement_view */
                        performance_max_placement_view?: (google.ads.googleads.v23.resources.IPerformanceMaxPlacementView|null);

                        /** GoogleAdsRow product_category_constant */
                        product_category_constant?: (google.ads.googleads.v23.resources.IProductCategoryConstant|null);

                        /** GoogleAdsRow product_group_view */
                        product_group_view?: (google.ads.googleads.v23.resources.IProductGroupView|null);

                        /** GoogleAdsRow product_link */
                        product_link?: (google.ads.googleads.v23.resources.IProductLink|null);

                        /** GoogleAdsRow product_link_invitation */
                        product_link_invitation?: (google.ads.googleads.v23.resources.IProductLinkInvitation|null);

                        /** GoogleAdsRow recommendation */
                        recommendation?: (google.ads.googleads.v23.resources.IRecommendation|null);

                        /** GoogleAdsRow recommendation_subscription */
                        recommendation_subscription?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);

                        /** GoogleAdsRow search_term_view */
                        search_term_view?: (google.ads.googleads.v23.resources.ISearchTermView|null);

                        /** GoogleAdsRow shared_criterion */
                        shared_criterion?: (google.ads.googleads.v23.resources.ISharedCriterion|null);

                        /** GoogleAdsRow shared_set */
                        shared_set?: (google.ads.googleads.v23.resources.ISharedSet|null);

                        /** GoogleAdsRow smart_campaign_setting */
                        smart_campaign_setting?: (google.ads.googleads.v23.resources.ISmartCampaignSetting|null);

                        /** GoogleAdsRow shopping_performance_view */
                        shopping_performance_view?: (google.ads.googleads.v23.resources.IShoppingPerformanceView|null);

                        /** GoogleAdsRow shopping_product */
                        shopping_product?: (google.ads.googleads.v23.resources.IShoppingProduct|null);

                        /** GoogleAdsRow smart_campaign_search_term_view */
                        smart_campaign_search_term_view?: (google.ads.googleads.v23.resources.ISmartCampaignSearchTermView|null);

                        /** GoogleAdsRow targeting_expansion_view */
                        targeting_expansion_view?: (google.ads.googleads.v23.resources.ITargetingExpansionView|null);

                        /** GoogleAdsRow third_party_app_analytics_link */
                        third_party_app_analytics_link?: (google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLink|null);

                        /** GoogleAdsRow topic_view */
                        topic_view?: (google.ads.googleads.v23.resources.ITopicView|null);

                        /** GoogleAdsRow travel_activity_group_view */
                        travel_activity_group_view?: (google.ads.googleads.v23.resources.ITravelActivityGroupView|null);

                        /** GoogleAdsRow travel_activity_performance_view */
                        travel_activity_performance_view?: (google.ads.googleads.v23.resources.ITravelActivityPerformanceView|null);

                        /** GoogleAdsRow experiment */
                        experiment?: (google.ads.googleads.v23.resources.IExperiment|null);

                        /** GoogleAdsRow experiment_arm */
                        experiment_arm?: (google.ads.googleads.v23.resources.IExperimentArm|null);

                        /** GoogleAdsRow user_interest */
                        user_interest?: (google.ads.googleads.v23.resources.IUserInterest|null);

                        /** GoogleAdsRow life_event */
                        life_event?: (google.ads.googleads.v23.resources.ILifeEvent|null);

                        /** GoogleAdsRow user_list */
                        user_list?: (google.ads.googleads.v23.resources.IUserList|null);

                        /** GoogleAdsRow user_list_customer_type */
                        user_list_customer_type?: (google.ads.googleads.v23.resources.IUserListCustomerType|null);

                        /** GoogleAdsRow user_location_view */
                        user_location_view?: (google.ads.googleads.v23.resources.IUserLocationView|null);

                        /** GoogleAdsRow remarketing_action */
                        remarketing_action?: (google.ads.googleads.v23.resources.IRemarketingAction|null);

                        /** GoogleAdsRow topic_constant */
                        topic_constant?: (google.ads.googleads.v23.resources.ITopicConstant|null);

                        /** GoogleAdsRow video */
                        video?: (google.ads.googleads.v23.resources.IVideo|null);

                        /** GoogleAdsRow webpage_view */
                        webpage_view?: (google.ads.googleads.v23.resources.IWebpageView|null);

                        /** GoogleAdsRow lead_form_submission_data */
                        lead_form_submission_data?: (google.ads.googleads.v23.resources.ILeadFormSubmissionData|null);

                        /** GoogleAdsRow local_services_lead */
                        local_services_lead?: (google.ads.googleads.v23.resources.ILocalServicesLead|null);

                        /** GoogleAdsRow local_services_lead_conversation */
                        local_services_lead_conversation?: (google.ads.googleads.v23.resources.ILocalServicesLeadConversation|null);

                        /** GoogleAdsRow android_privacy_shared_key_google_ad_group */
                        android_privacy_shared_key_google_ad_group?: (google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleAdGroup|null);

                        /** GoogleAdsRow android_privacy_shared_key_google_campaign */
                        android_privacy_shared_key_google_campaign?: (google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleCampaign|null);

                        /** GoogleAdsRow android_privacy_shared_key_google_network_type */
                        android_privacy_shared_key_google_network_type?: (google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleNetworkType|null);

                        /** GoogleAdsRow applied_incentive */
                        applied_incentive?: (google.ads.googleads.v23.resources.IAppliedIncentive|null);

                        /** GoogleAdsRow metrics */
                        metrics?: (google.ads.googleads.v23.common.IMetrics|null);

                        /** GoogleAdsRow segments */
                        segments?: (google.ads.googleads.v23.common.ISegments|null);
                    }

                    /** Represents a GoogleAdsRow. */
                    class GoogleAdsRow implements IGoogleAdsRow {

                        /**
                         * Constructs a new GoogleAdsRow.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGoogleAdsRow);

                        /** GoogleAdsRow account_budget. */
                        public account_budget?: (google.ads.googleads.v23.resources.IAccountBudget|null);

                        /** GoogleAdsRow account_budget_proposal. */
                        public account_budget_proposal?: (google.ads.googleads.v23.resources.IAccountBudgetProposal|null);

                        /** GoogleAdsRow account_link. */
                        public account_link?: (google.ads.googleads.v23.resources.IAccountLink|null);

                        /** GoogleAdsRow ad. */
                        public ad?: (google.ads.googleads.v23.resources.IAd|null);

                        /** GoogleAdsRow ad_group. */
                        public ad_group?: (google.ads.googleads.v23.resources.IAdGroup|null);

                        /** GoogleAdsRow ad_group_ad. */
                        public ad_group_ad?: (google.ads.googleads.v23.resources.IAdGroupAd|null);

                        /** GoogleAdsRow ad_group_ad_asset_combination_view. */
                        public ad_group_ad_asset_combination_view?: (google.ads.googleads.v23.resources.IAdGroupAdAssetCombinationView|null);

                        /** GoogleAdsRow ad_group_ad_asset_view. */
                        public ad_group_ad_asset_view?: (google.ads.googleads.v23.resources.IAdGroupAdAssetView|null);

                        /** GoogleAdsRow ad_group_ad_label. */
                        public ad_group_ad_label?: (google.ads.googleads.v23.resources.IAdGroupAdLabel|null);

                        /** GoogleAdsRow ad_group_asset. */
                        public ad_group_asset?: (google.ads.googleads.v23.resources.IAdGroupAsset|null);

                        /** GoogleAdsRow ad_group_asset_set. */
                        public ad_group_asset_set?: (google.ads.googleads.v23.resources.IAdGroupAssetSet|null);

                        /** GoogleAdsRow ad_group_audience_view. */
                        public ad_group_audience_view?: (google.ads.googleads.v23.resources.IAdGroupAudienceView|null);

                        /** GoogleAdsRow ad_group_bid_modifier. */
                        public ad_group_bid_modifier?: (google.ads.googleads.v23.resources.IAdGroupBidModifier|null);

                        /** GoogleAdsRow ad_group_criterion. */
                        public ad_group_criterion?: (google.ads.googleads.v23.resources.IAdGroupCriterion|null);

                        /** GoogleAdsRow ad_group_criterion_customizer. */
                        public ad_group_criterion_customizer?: (google.ads.googleads.v23.resources.IAdGroupCriterionCustomizer|null);

                        /** GoogleAdsRow ad_group_criterion_label. */
                        public ad_group_criterion_label?: (google.ads.googleads.v23.resources.IAdGroupCriterionLabel|null);

                        /** GoogleAdsRow ad_group_criterion_simulation. */
                        public ad_group_criterion_simulation?: (google.ads.googleads.v23.resources.IAdGroupCriterionSimulation|null);

                        /** GoogleAdsRow ad_group_customizer. */
                        public ad_group_customizer?: (google.ads.googleads.v23.resources.IAdGroupCustomizer|null);

                        /** GoogleAdsRow ad_group_label. */
                        public ad_group_label?: (google.ads.googleads.v23.resources.IAdGroupLabel|null);

                        /** GoogleAdsRow ad_group_simulation. */
                        public ad_group_simulation?: (google.ads.googleads.v23.resources.IAdGroupSimulation|null);

                        /** GoogleAdsRow ad_parameter. */
                        public ad_parameter?: (google.ads.googleads.v23.resources.IAdParameter|null);

                        /** GoogleAdsRow age_range_view. */
                        public age_range_view?: (google.ads.googleads.v23.resources.IAgeRangeView|null);

                        /** GoogleAdsRow ad_schedule_view. */
                        public ad_schedule_view?: (google.ads.googleads.v23.resources.IAdScheduleView|null);

                        /** GoogleAdsRow ai_max_search_term_ad_combination_view. */
                        public ai_max_search_term_ad_combination_view?: (google.ads.googleads.v23.resources.IAiMaxSearchTermAdCombinationView|null);

                        /** GoogleAdsRow domain_category. */
                        public domain_category?: (google.ads.googleads.v23.resources.IDomainCategory|null);

                        /** GoogleAdsRow asset. */
                        public asset?: (google.ads.googleads.v23.resources.IAsset|null);

                        /** GoogleAdsRow asset_field_type_view. */
                        public asset_field_type_view?: (google.ads.googleads.v23.resources.IAssetFieldTypeView|null);

                        /** GoogleAdsRow channel_aggregate_asset_view. */
                        public channel_aggregate_asset_view?: (google.ads.googleads.v23.resources.IChannelAggregateAssetView|null);

                        /** GoogleAdsRow campaign_aggregate_asset_view. */
                        public campaign_aggregate_asset_view?: (google.ads.googleads.v23.resources.ICampaignAggregateAssetView|null);

                        /** GoogleAdsRow asset_group_asset. */
                        public asset_group_asset?: (google.ads.googleads.v23.resources.IAssetGroupAsset|null);

                        /** GoogleAdsRow asset_group_signal. */
                        public asset_group_signal?: (google.ads.googleads.v23.resources.IAssetGroupSignal|null);

                        /** GoogleAdsRow asset_group_listing_group_filter. */
                        public asset_group_listing_group_filter?: (google.ads.googleads.v23.resources.IAssetGroupListingGroupFilter|null);

                        /** GoogleAdsRow asset_group_product_group_view. */
                        public asset_group_product_group_view?: (google.ads.googleads.v23.resources.IAssetGroupProductGroupView|null);

                        /** GoogleAdsRow asset_group_top_combination_view. */
                        public asset_group_top_combination_view?: (google.ads.googleads.v23.resources.IAssetGroupTopCombinationView|null);

                        /** GoogleAdsRow asset_group. */
                        public asset_group?: (google.ads.googleads.v23.resources.IAssetGroup|null);

                        /** GoogleAdsRow asset_set_asset. */
                        public asset_set_asset?: (google.ads.googleads.v23.resources.IAssetSetAsset|null);

                        /** GoogleAdsRow asset_set. */
                        public asset_set?: (google.ads.googleads.v23.resources.IAssetSet|null);

                        /** GoogleAdsRow asset_set_type_view. */
                        public asset_set_type_view?: (google.ads.googleads.v23.resources.IAssetSetTypeView|null);

                        /** GoogleAdsRow batch_job. */
                        public batch_job?: (google.ads.googleads.v23.resources.IBatchJob|null);

                        /** GoogleAdsRow bidding_data_exclusion. */
                        public bidding_data_exclusion?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);

                        /** GoogleAdsRow bidding_seasonality_adjustment. */
                        public bidding_seasonality_adjustment?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);

                        /** GoogleAdsRow bidding_strategy. */
                        public bidding_strategy?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);

                        /** GoogleAdsRow bidding_strategy_simulation. */
                        public bidding_strategy_simulation?: (google.ads.googleads.v23.resources.IBiddingStrategySimulation|null);

                        /** GoogleAdsRow billing_setup. */
                        public billing_setup?: (google.ads.googleads.v23.resources.IBillingSetup|null);

                        /** GoogleAdsRow call_view. */
                        public call_view?: (google.ads.googleads.v23.resources.ICallView|null);

                        /** GoogleAdsRow campaign_budget. */
                        public campaign_budget?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                        /** GoogleAdsRow campaign. */
                        public campaign?: (google.ads.googleads.v23.resources.ICampaign|null);

                        /** GoogleAdsRow campaign_asset. */
                        public campaign_asset?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                        /** GoogleAdsRow campaign_asset_set. */
                        public campaign_asset_set?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);

                        /** GoogleAdsRow campaign_audience_view. */
                        public campaign_audience_view?: (google.ads.googleads.v23.resources.ICampaignAudienceView|null);

                        /** GoogleAdsRow campaign_bid_modifier. */
                        public campaign_bid_modifier?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);

                        /** GoogleAdsRow campaign_conversion_goal. */
                        public campaign_conversion_goal?: (google.ads.googleads.v23.resources.ICampaignConversionGoal|null);

                        /** GoogleAdsRow campaign_criterion. */
                        public campaign_criterion?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                        /** GoogleAdsRow campaign_customizer. */
                        public campaign_customizer?: (google.ads.googleads.v23.resources.ICampaignCustomizer|null);

                        /** GoogleAdsRow campaign_draft. */
                        public campaign_draft?: (google.ads.googleads.v23.resources.ICampaignDraft|null);

                        /** GoogleAdsRow campaign_group. */
                        public campaign_group?: (google.ads.googleads.v23.resources.ICampaignGroup|null);

                        /** GoogleAdsRow campaign_goal_config. */
                        public campaign_goal_config?: (google.ads.googleads.v23.resources.ICampaignGoalConfig|null);

                        /** GoogleAdsRow campaign_label. */
                        public campaign_label?: (google.ads.googleads.v23.resources.ICampaignLabel|null);

                        /** GoogleAdsRow campaign_lifecycle_goal. */
                        public campaign_lifecycle_goal?: (google.ads.googleads.v23.resources.ICampaignLifecycleGoal|null);

                        /** GoogleAdsRow campaign_search_term_insight. */
                        public campaign_search_term_insight?: (google.ads.googleads.v23.resources.ICampaignSearchTermInsight|null);

                        /** GoogleAdsRow campaign_search_term_view. */
                        public campaign_search_term_view?: (google.ads.googleads.v23.resources.ICampaignSearchTermView|null);

                        /** GoogleAdsRow campaign_shared_set. */
                        public campaign_shared_set?: (google.ads.googleads.v23.resources.ICampaignSharedSet|null);

                        /** GoogleAdsRow campaign_simulation. */
                        public campaign_simulation?: (google.ads.googleads.v23.resources.ICampaignSimulation|null);

                        /** GoogleAdsRow carrier_constant. */
                        public carrier_constant?: (google.ads.googleads.v23.resources.ICarrierConstant|null);

                        /** GoogleAdsRow change_event. */
                        public change_event?: (google.ads.googleads.v23.resources.IChangeEvent|null);

                        /** GoogleAdsRow change_status. */
                        public change_status?: (google.ads.googleads.v23.resources.IChangeStatus|null);

                        /** GoogleAdsRow combined_audience. */
                        public combined_audience?: (google.ads.googleads.v23.resources.ICombinedAudience|null);

                        /** GoogleAdsRow audience. */
                        public audience?: (google.ads.googleads.v23.resources.IAudience|null);

                        /** GoogleAdsRow conversion_action. */
                        public conversion_action?: (google.ads.googleads.v23.resources.IConversionAction|null);

                        /** GoogleAdsRow conversion_custom_variable. */
                        public conversion_custom_variable?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);

                        /** GoogleAdsRow conversion_goal_campaign_config. */
                        public conversion_goal_campaign_config?: (google.ads.googleads.v23.resources.IConversionGoalCampaignConfig|null);

                        /** GoogleAdsRow conversion_value_rule. */
                        public conversion_value_rule?: (google.ads.googleads.v23.resources.IConversionValueRule|null);

                        /** GoogleAdsRow conversion_value_rule_set. */
                        public conversion_value_rule_set?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);

                        /** GoogleAdsRow click_view. */
                        public click_view?: (google.ads.googleads.v23.resources.IClickView|null);

                        /** GoogleAdsRow currency_constant. */
                        public currency_constant?: (google.ads.googleads.v23.resources.ICurrencyConstant|null);

                        /** GoogleAdsRow custom_audience. */
                        public custom_audience?: (google.ads.googleads.v23.resources.ICustomAudience|null);

                        /** GoogleAdsRow custom_conversion_goal. */
                        public custom_conversion_goal?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);

                        /** GoogleAdsRow custom_interest. */
                        public custom_interest?: (google.ads.googleads.v23.resources.ICustomInterest|null);

                        /** GoogleAdsRow customer. */
                        public customer?: (google.ads.googleads.v23.resources.ICustomer|null);

                        /** GoogleAdsRow customer_asset. */
                        public customer_asset?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                        /** GoogleAdsRow customer_asset_set. */
                        public customer_asset_set?: (google.ads.googleads.v23.resources.ICustomerAssetSet|null);

                        /** GoogleAdsRow accessible_bidding_strategy. */
                        public accessible_bidding_strategy?: (google.ads.googleads.v23.resources.IAccessibleBiddingStrategy|null);

                        /** GoogleAdsRow customer_customizer. */
                        public customer_customizer?: (google.ads.googleads.v23.resources.ICustomerCustomizer|null);

                        /** GoogleAdsRow customer_manager_link. */
                        public customer_manager_link?: (google.ads.googleads.v23.resources.ICustomerManagerLink|null);

                        /** GoogleAdsRow customer_client_link. */
                        public customer_client_link?: (google.ads.googleads.v23.resources.ICustomerClientLink|null);

                        /** GoogleAdsRow customer_client. */
                        public customer_client?: (google.ads.googleads.v23.resources.ICustomerClient|null);

                        /** GoogleAdsRow customer_conversion_goal. */
                        public customer_conversion_goal?: (google.ads.googleads.v23.resources.ICustomerConversionGoal|null);

                        /** GoogleAdsRow customer_label. */
                        public customer_label?: (google.ads.googleads.v23.resources.ICustomerLabel|null);

                        /** GoogleAdsRow customer_lifecycle_goal. */
                        public customer_lifecycle_goal?: (google.ads.googleads.v23.resources.ICustomerLifecycleGoal|null);

                        /** GoogleAdsRow customer_negative_criterion. */
                        public customer_negative_criterion?: (google.ads.googleads.v23.resources.ICustomerNegativeCriterion|null);

                        /** GoogleAdsRow customer_search_term_insight. */
                        public customer_search_term_insight?: (google.ads.googleads.v23.resources.ICustomerSearchTermInsight|null);

                        /** GoogleAdsRow customer_user_access. */
                        public customer_user_access?: (google.ads.googleads.v23.resources.ICustomerUserAccess|null);

                        /** GoogleAdsRow customer_user_access_invitation. */
                        public customer_user_access_invitation?: (google.ads.googleads.v23.resources.ICustomerUserAccessInvitation|null);

                        /** GoogleAdsRow customizer_attribute. */
                        public customizer_attribute?: (google.ads.googleads.v23.resources.ICustomizerAttribute|null);

                        /** GoogleAdsRow data_link. */
                        public data_link?: (google.ads.googleads.v23.resources.IDataLink|null);

                        /** GoogleAdsRow detail_content_suitability_placement_view. */
                        public detail_content_suitability_placement_view?: (google.ads.googleads.v23.resources.IDetailContentSuitabilityPlacementView|null);

                        /** GoogleAdsRow detail_placement_view. */
                        public detail_placement_view?: (google.ads.googleads.v23.resources.IDetailPlacementView|null);

                        /** GoogleAdsRow detailed_demographic. */
                        public detailed_demographic?: (google.ads.googleads.v23.resources.IDetailedDemographic|null);

                        /** GoogleAdsRow display_keyword_view. */
                        public display_keyword_view?: (google.ads.googleads.v23.resources.IDisplayKeywordView|null);

                        /** GoogleAdsRow distance_view. */
                        public distance_view?: (google.ads.googleads.v23.resources.IDistanceView|null);

                        /** GoogleAdsRow dynamic_search_ads_search_term_view. */
                        public dynamic_search_ads_search_term_view?: (google.ads.googleads.v23.resources.IDynamicSearchAdsSearchTermView|null);

                        /** GoogleAdsRow expanded_landing_page_view. */
                        public expanded_landing_page_view?: (google.ads.googleads.v23.resources.IExpandedLandingPageView|null);

                        /** GoogleAdsRow final_url_expansion_asset_view. */
                        public final_url_expansion_asset_view?: (google.ads.googleads.v23.resources.IFinalUrlExpansionAssetView|null);

                        /** GoogleAdsRow gender_view. */
                        public gender_view?: (google.ads.googleads.v23.resources.IGenderView|null);

                        /** GoogleAdsRow geo_target_constant. */
                        public geo_target_constant?: (google.ads.googleads.v23.resources.IGeoTargetConstant|null);

                        /** GoogleAdsRow geographic_view. */
                        public geographic_view?: (google.ads.googleads.v23.resources.IGeographicView|null);

                        /** GoogleAdsRow goal. */
                        public goal?: (google.ads.googleads.v23.resources.IGoal|null);

                        /** GoogleAdsRow group_content_suitability_placement_view. */
                        public group_content_suitability_placement_view?: (google.ads.googleads.v23.resources.IGroupContentSuitabilityPlacementView|null);

                        /** GoogleAdsRow group_placement_view. */
                        public group_placement_view?: (google.ads.googleads.v23.resources.IGroupPlacementView|null);

                        /** GoogleAdsRow hotel_group_view. */
                        public hotel_group_view?: (google.ads.googleads.v23.resources.IHotelGroupView|null);

                        /** GoogleAdsRow hotel_performance_view. */
                        public hotel_performance_view?: (google.ads.googleads.v23.resources.IHotelPerformanceView|null);

                        /** GoogleAdsRow hotel_reconciliation. */
                        public hotel_reconciliation?: (google.ads.googleads.v23.resources.IHotelReconciliation|null);

                        /** GoogleAdsRow income_range_view. */
                        public income_range_view?: (google.ads.googleads.v23.resources.IIncomeRangeView|null);

                        /** GoogleAdsRow keyword_view. */
                        public keyword_view?: (google.ads.googleads.v23.resources.IKeywordView|null);

                        /** GoogleAdsRow keyword_plan. */
                        public keyword_plan?: (google.ads.googleads.v23.resources.IKeywordPlan|null);

                        /** GoogleAdsRow keyword_plan_campaign. */
                        public keyword_plan_campaign?: (google.ads.googleads.v23.resources.IKeywordPlanCampaign|null);

                        /** GoogleAdsRow keyword_plan_campaign_keyword. */
                        public keyword_plan_campaign_keyword?: (google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword|null);

                        /** GoogleAdsRow keyword_plan_ad_group. */
                        public keyword_plan_ad_group?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroup|null);

                        /** GoogleAdsRow keyword_plan_ad_group_keyword. */
                        public keyword_plan_ad_group_keyword?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword|null);

                        /** GoogleAdsRow keyword_theme_constant. */
                        public keyword_theme_constant?: (google.ads.googleads.v23.resources.IKeywordThemeConstant|null);

                        /** GoogleAdsRow label. */
                        public label?: (google.ads.googleads.v23.resources.ILabel|null);

                        /** GoogleAdsRow landing_page_view. */
                        public landing_page_view?: (google.ads.googleads.v23.resources.ILandingPageView|null);

                        /** GoogleAdsRow language_constant. */
                        public language_constant?: (google.ads.googleads.v23.resources.ILanguageConstant|null);

                        /** GoogleAdsRow location_view. */
                        public location_view?: (google.ads.googleads.v23.resources.ILocationView|null);

                        /** GoogleAdsRow location_interest_view. */
                        public location_interest_view?: (google.ads.googleads.v23.resources.ILocationInterestView|null);

                        /** GoogleAdsRow managed_placement_view. */
                        public managed_placement_view?: (google.ads.googleads.v23.resources.IManagedPlacementView|null);

                        /** GoogleAdsRow matched_location_interest_view. */
                        public matched_location_interest_view?: (google.ads.googleads.v23.resources.IMatchedLocationInterestView|null);

                        /** GoogleAdsRow content_criterion_view. */
                        public content_criterion_view?: (google.ads.googleads.v23.resources.IContentCriterionView|null);

                        /** GoogleAdsRow media_file. */
                        public media_file?: (google.ads.googleads.v23.resources.IMediaFile|null);

                        /** GoogleAdsRow local_services_employee. */
                        public local_services_employee?: (google.ads.googleads.v23.resources.ILocalServicesEmployee|null);

                        /** GoogleAdsRow local_services_verification_artifact. */
                        public local_services_verification_artifact?: (google.ads.googleads.v23.resources.ILocalServicesVerificationArtifact|null);

                        /** GoogleAdsRow mobile_app_category_constant. */
                        public mobile_app_category_constant?: (google.ads.googleads.v23.resources.IMobileAppCategoryConstant|null);

                        /** GoogleAdsRow mobile_device_constant. */
                        public mobile_device_constant?: (google.ads.googleads.v23.resources.IMobileDeviceConstant|null);

                        /** GoogleAdsRow offline_conversion_upload_client_summary. */
                        public offline_conversion_upload_client_summary?: (google.ads.googleads.v23.resources.IOfflineConversionUploadClientSummary|null);

                        /** GoogleAdsRow offline_conversion_upload_conversion_action_summary. */
                        public offline_conversion_upload_conversion_action_summary?: (google.ads.googleads.v23.resources.IOfflineConversionUploadConversionActionSummary|null);

                        /** GoogleAdsRow offline_user_data_job. */
                        public offline_user_data_job?: (google.ads.googleads.v23.resources.IOfflineUserDataJob|null);

                        /** GoogleAdsRow operating_system_version_constant. */
                        public operating_system_version_constant?: (google.ads.googleads.v23.resources.IOperatingSystemVersionConstant|null);

                        /** GoogleAdsRow paid_organic_search_term_view. */
                        public paid_organic_search_term_view?: (google.ads.googleads.v23.resources.IPaidOrganicSearchTermView|null);

                        /** GoogleAdsRow qualifying_question. */
                        public qualifying_question?: (google.ads.googleads.v23.resources.IQualifyingQuestion|null);

                        /** GoogleAdsRow parental_status_view. */
                        public parental_status_view?: (google.ads.googleads.v23.resources.IParentalStatusView|null);

                        /** GoogleAdsRow per_store_view. */
                        public per_store_view?: (google.ads.googleads.v23.resources.IPerStoreView|null);

                        /** GoogleAdsRow performance_max_placement_view. */
                        public performance_max_placement_view?: (google.ads.googleads.v23.resources.IPerformanceMaxPlacementView|null);

                        /** GoogleAdsRow product_category_constant. */
                        public product_category_constant?: (google.ads.googleads.v23.resources.IProductCategoryConstant|null);

                        /** GoogleAdsRow product_group_view. */
                        public product_group_view?: (google.ads.googleads.v23.resources.IProductGroupView|null);

                        /** GoogleAdsRow product_link. */
                        public product_link?: (google.ads.googleads.v23.resources.IProductLink|null);

                        /** GoogleAdsRow product_link_invitation. */
                        public product_link_invitation?: (google.ads.googleads.v23.resources.IProductLinkInvitation|null);

                        /** GoogleAdsRow recommendation. */
                        public recommendation?: (google.ads.googleads.v23.resources.IRecommendation|null);

                        /** GoogleAdsRow recommendation_subscription. */
                        public recommendation_subscription?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);

                        /** GoogleAdsRow search_term_view. */
                        public search_term_view?: (google.ads.googleads.v23.resources.ISearchTermView|null);

                        /** GoogleAdsRow shared_criterion. */
                        public shared_criterion?: (google.ads.googleads.v23.resources.ISharedCriterion|null);

                        /** GoogleAdsRow shared_set. */
                        public shared_set?: (google.ads.googleads.v23.resources.ISharedSet|null);

                        /** GoogleAdsRow smart_campaign_setting. */
                        public smart_campaign_setting?: (google.ads.googleads.v23.resources.ISmartCampaignSetting|null);

                        /** GoogleAdsRow shopping_performance_view. */
                        public shopping_performance_view?: (google.ads.googleads.v23.resources.IShoppingPerformanceView|null);

                        /** GoogleAdsRow shopping_product. */
                        public shopping_product?: (google.ads.googleads.v23.resources.IShoppingProduct|null);

                        /** GoogleAdsRow smart_campaign_search_term_view. */
                        public smart_campaign_search_term_view?: (google.ads.googleads.v23.resources.ISmartCampaignSearchTermView|null);

                        /** GoogleAdsRow targeting_expansion_view. */
                        public targeting_expansion_view?: (google.ads.googleads.v23.resources.ITargetingExpansionView|null);

                        /** GoogleAdsRow third_party_app_analytics_link. */
                        public third_party_app_analytics_link?: (google.ads.googleads.v23.resources.IThirdPartyAppAnalyticsLink|null);

                        /** GoogleAdsRow topic_view. */
                        public topic_view?: (google.ads.googleads.v23.resources.ITopicView|null);

                        /** GoogleAdsRow travel_activity_group_view. */
                        public travel_activity_group_view?: (google.ads.googleads.v23.resources.ITravelActivityGroupView|null);

                        /** GoogleAdsRow travel_activity_performance_view. */
                        public travel_activity_performance_view?: (google.ads.googleads.v23.resources.ITravelActivityPerformanceView|null);

                        /** GoogleAdsRow experiment. */
                        public experiment?: (google.ads.googleads.v23.resources.IExperiment|null);

                        /** GoogleAdsRow experiment_arm. */
                        public experiment_arm?: (google.ads.googleads.v23.resources.IExperimentArm|null);

                        /** GoogleAdsRow user_interest. */
                        public user_interest?: (google.ads.googleads.v23.resources.IUserInterest|null);

                        /** GoogleAdsRow life_event. */
                        public life_event?: (google.ads.googleads.v23.resources.ILifeEvent|null);

                        /** GoogleAdsRow user_list. */
                        public user_list?: (google.ads.googleads.v23.resources.IUserList|null);

                        /** GoogleAdsRow user_list_customer_type. */
                        public user_list_customer_type?: (google.ads.googleads.v23.resources.IUserListCustomerType|null);

                        /** GoogleAdsRow user_location_view. */
                        public user_location_view?: (google.ads.googleads.v23.resources.IUserLocationView|null);

                        /** GoogleAdsRow remarketing_action. */
                        public remarketing_action?: (google.ads.googleads.v23.resources.IRemarketingAction|null);

                        /** GoogleAdsRow topic_constant. */
                        public topic_constant?: (google.ads.googleads.v23.resources.ITopicConstant|null);

                        /** GoogleAdsRow video. */
                        public video?: (google.ads.googleads.v23.resources.IVideo|null);

                        /** GoogleAdsRow webpage_view. */
                        public webpage_view?: (google.ads.googleads.v23.resources.IWebpageView|null);

                        /** GoogleAdsRow lead_form_submission_data. */
                        public lead_form_submission_data?: (google.ads.googleads.v23.resources.ILeadFormSubmissionData|null);

                        /** GoogleAdsRow local_services_lead. */
                        public local_services_lead?: (google.ads.googleads.v23.resources.ILocalServicesLead|null);

                        /** GoogleAdsRow local_services_lead_conversation. */
                        public local_services_lead_conversation?: (google.ads.googleads.v23.resources.ILocalServicesLeadConversation|null);

                        /** GoogleAdsRow android_privacy_shared_key_google_ad_group. */
                        public android_privacy_shared_key_google_ad_group?: (google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleAdGroup|null);

                        /** GoogleAdsRow android_privacy_shared_key_google_campaign. */
                        public android_privacy_shared_key_google_campaign?: (google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleCampaign|null);

                        /** GoogleAdsRow android_privacy_shared_key_google_network_type. */
                        public android_privacy_shared_key_google_network_type?: (google.ads.googleads.v23.resources.IAndroidPrivacySharedKeyGoogleNetworkType|null);

                        /** GoogleAdsRow applied_incentive. */
                        public applied_incentive?: (google.ads.googleads.v23.resources.IAppliedIncentive|null);

                        /** GoogleAdsRow metrics. */
                        public metrics?: (google.ads.googleads.v23.common.IMetrics|null);

                        /** GoogleAdsRow segments. */
                        public segments?: (google.ads.googleads.v23.common.ISegments|null);

                        /**
                         * Creates a new GoogleAdsRow instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsRow instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGoogleAdsRow): google.ads.googleads.v23.services.GoogleAdsRow;

                        /**
                         * Encodes the specified GoogleAdsRow message. Does not implicitly {@link google.ads.googleads.v23.services.GoogleAdsRow.verify|verify} messages.
                         * @param message GoogleAdsRow message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGoogleAdsRow, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsRow message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GoogleAdsRow.verify|verify} messages.
                         * @param message GoogleAdsRow message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGoogleAdsRow, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsRow message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleAdsRow
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GoogleAdsRow;

                        /**
                         * Decodes a GoogleAdsRow message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsRow
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GoogleAdsRow;

                        /**
                         * Verifies a GoogleAdsRow message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsRow message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleAdsRow
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GoogleAdsRow;

                        /**
                         * Creates a plain object from a GoogleAdsRow message. Also converts values to other types if specified.
                         * @param message GoogleAdsRow
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GoogleAdsRow, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsRow to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleAdsRow
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateGoogleAdsRequest. */
                    interface IMutateGoogleAdsRequest {

                        /** MutateGoogleAdsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateGoogleAdsRequest mutate_operations */
                        mutate_operations?: (google.ads.googleads.v23.services.IMutateOperation[]|null);

                        /** MutateGoogleAdsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateGoogleAdsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateGoogleAdsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateGoogleAdsRequest. */
                    class MutateGoogleAdsRequest implements IMutateGoogleAdsRequest {

                        /**
                         * Constructs a new MutateGoogleAdsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateGoogleAdsRequest);

                        /** MutateGoogleAdsRequest customer_id. */
                        public customer_id: string;

                        /** MutateGoogleAdsRequest mutate_operations. */
                        public mutate_operations: google.ads.googleads.v23.services.IMutateOperation[];

                        /** MutateGoogleAdsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateGoogleAdsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateGoogleAdsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateGoogleAdsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateGoogleAdsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateGoogleAdsRequest): google.ads.googleads.v23.services.MutateGoogleAdsRequest;

                        /**
                         * Encodes the specified MutateGoogleAdsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoogleAdsRequest.verify|verify} messages.
                         * @param message MutateGoogleAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateGoogleAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateGoogleAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoogleAdsRequest.verify|verify} messages.
                         * @param message MutateGoogleAdsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateGoogleAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateGoogleAdsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateGoogleAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateGoogleAdsRequest;

                        /**
                         * Decodes a MutateGoogleAdsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateGoogleAdsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateGoogleAdsRequest;

                        /**
                         * Verifies a MutateGoogleAdsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateGoogleAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateGoogleAdsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateGoogleAdsRequest;

                        /**
                         * Creates a plain object from a MutateGoogleAdsRequest message. Also converts values to other types if specified.
                         * @param message MutateGoogleAdsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateGoogleAdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateGoogleAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateGoogleAdsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateGoogleAdsResponse. */
                    interface IMutateGoogleAdsResponse {

                        /** MutateGoogleAdsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateGoogleAdsResponse mutate_operation_responses */
                        mutate_operation_responses?: (google.ads.googleads.v23.services.IMutateOperationResponse[]|null);
                    }

                    /** Represents a MutateGoogleAdsResponse. */
                    class MutateGoogleAdsResponse implements IMutateGoogleAdsResponse {

                        /**
                         * Constructs a new MutateGoogleAdsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateGoogleAdsResponse);

                        /** MutateGoogleAdsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateGoogleAdsResponse mutate_operation_responses. */
                        public mutate_operation_responses: google.ads.googleads.v23.services.IMutateOperationResponse[];

                        /**
                         * Creates a new MutateGoogleAdsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateGoogleAdsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateGoogleAdsResponse): google.ads.googleads.v23.services.MutateGoogleAdsResponse;

                        /**
                         * Encodes the specified MutateGoogleAdsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoogleAdsResponse.verify|verify} messages.
                         * @param message MutateGoogleAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateGoogleAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateGoogleAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoogleAdsResponse.verify|verify} messages.
                         * @param message MutateGoogleAdsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateGoogleAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateGoogleAdsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateGoogleAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateGoogleAdsResponse;

                        /**
                         * Decodes a MutateGoogleAdsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateGoogleAdsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateGoogleAdsResponse;

                        /**
                         * Verifies a MutateGoogleAdsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateGoogleAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateGoogleAdsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateGoogleAdsResponse;

                        /**
                         * Creates a plain object from a MutateGoogleAdsResponse message. Also converts values to other types if specified.
                         * @param message MutateGoogleAdsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateGoogleAdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateGoogleAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateGoogleAdsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateOperation. */
                    interface IMutateOperation {

                        /** MutateOperation ad_group_ad_label_operation */
                        ad_group_ad_label_operation?: (google.ads.googleads.v23.services.IAdGroupAdLabelOperation|null);

                        /** MutateOperation ad_group_ad_operation */
                        ad_group_ad_operation?: (google.ads.googleads.v23.services.IAdGroupAdOperation|null);

                        /** MutateOperation ad_group_asset_operation */
                        ad_group_asset_operation?: (google.ads.googleads.v23.services.IAdGroupAssetOperation|null);

                        /** MutateOperation ad_group_bid_modifier_operation */
                        ad_group_bid_modifier_operation?: (google.ads.googleads.v23.services.IAdGroupBidModifierOperation|null);

                        /** MutateOperation ad_group_criterion_customizer_operation */
                        ad_group_criterion_customizer_operation?: (google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation|null);

                        /** MutateOperation ad_group_criterion_label_operation */
                        ad_group_criterion_label_operation?: (google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation|null);

                        /** MutateOperation ad_group_criterion_operation */
                        ad_group_criterion_operation?: (google.ads.googleads.v23.services.IAdGroupCriterionOperation|null);

                        /** MutateOperation ad_group_customizer_operation */
                        ad_group_customizer_operation?: (google.ads.googleads.v23.services.IAdGroupCustomizerOperation|null);

                        /** MutateOperation ad_group_label_operation */
                        ad_group_label_operation?: (google.ads.googleads.v23.services.IAdGroupLabelOperation|null);

                        /** MutateOperation ad_group_operation */
                        ad_group_operation?: (google.ads.googleads.v23.services.IAdGroupOperation|null);

                        /** MutateOperation ad_operation */
                        ad_operation?: (google.ads.googleads.v23.services.IAdOperation|null);

                        /** MutateOperation ad_parameter_operation */
                        ad_parameter_operation?: (google.ads.googleads.v23.services.IAdParameterOperation|null);

                        /** MutateOperation asset_operation */
                        asset_operation?: (google.ads.googleads.v23.services.IAssetOperation|null);

                        /** MutateOperation asset_group_asset_operation */
                        asset_group_asset_operation?: (google.ads.googleads.v23.services.IAssetGroupAssetOperation|null);

                        /** MutateOperation asset_group_listing_group_filter_operation */
                        asset_group_listing_group_filter_operation?: (google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation|null);

                        /** MutateOperation asset_group_signal_operation */
                        asset_group_signal_operation?: (google.ads.googleads.v23.services.IAssetGroupSignalOperation|null);

                        /** MutateOperation asset_group_operation */
                        asset_group_operation?: (google.ads.googleads.v23.services.IAssetGroupOperation|null);

                        /** MutateOperation asset_set_asset_operation */
                        asset_set_asset_operation?: (google.ads.googleads.v23.services.IAssetSetAssetOperation|null);

                        /** MutateOperation asset_set_operation */
                        asset_set_operation?: (google.ads.googleads.v23.services.IAssetSetOperation|null);

                        /** MutateOperation audience_operation */
                        audience_operation?: (google.ads.googleads.v23.services.IAudienceOperation|null);

                        /** MutateOperation bidding_data_exclusion_operation */
                        bidding_data_exclusion_operation?: (google.ads.googleads.v23.services.IBiddingDataExclusionOperation|null);

                        /** MutateOperation bidding_seasonality_adjustment_operation */
                        bidding_seasonality_adjustment_operation?: (google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation|null);

                        /** MutateOperation bidding_strategy_operation */
                        bidding_strategy_operation?: (google.ads.googleads.v23.services.IBiddingStrategyOperation|null);

                        /** MutateOperation campaign_asset_operation */
                        campaign_asset_operation?: (google.ads.googleads.v23.services.ICampaignAssetOperation|null);

                        /** MutateOperation campaign_asset_set_operation */
                        campaign_asset_set_operation?: (google.ads.googleads.v23.services.ICampaignAssetSetOperation|null);

                        /** MutateOperation campaign_bid_modifier_operation */
                        campaign_bid_modifier_operation?: (google.ads.googleads.v23.services.ICampaignBidModifierOperation|null);

                        /** MutateOperation campaign_budget_operation */
                        campaign_budget_operation?: (google.ads.googleads.v23.services.ICampaignBudgetOperation|null);

                        /** MutateOperation campaign_conversion_goal_operation */
                        campaign_conversion_goal_operation?: (google.ads.googleads.v23.services.ICampaignConversionGoalOperation|null);

                        /** MutateOperation campaign_criterion_operation */
                        campaign_criterion_operation?: (google.ads.googleads.v23.services.ICampaignCriterionOperation|null);

                        /** MutateOperation campaign_customizer_operation */
                        campaign_customizer_operation?: (google.ads.googleads.v23.services.ICampaignCustomizerOperation|null);

                        /** MutateOperation campaign_draft_operation */
                        campaign_draft_operation?: (google.ads.googleads.v23.services.ICampaignDraftOperation|null);

                        /** MutateOperation campaign_group_operation */
                        campaign_group_operation?: (google.ads.googleads.v23.services.ICampaignGroupOperation|null);

                        /** MutateOperation campaign_label_operation */
                        campaign_label_operation?: (google.ads.googleads.v23.services.ICampaignLabelOperation|null);

                        /** MutateOperation campaign_operation */
                        campaign_operation?: (google.ads.googleads.v23.services.ICampaignOperation|null);

                        /** MutateOperation campaign_shared_set_operation */
                        campaign_shared_set_operation?: (google.ads.googleads.v23.services.ICampaignSharedSetOperation|null);

                        /** MutateOperation conversion_action_operation */
                        conversion_action_operation?: (google.ads.googleads.v23.services.IConversionActionOperation|null);

                        /** MutateOperation conversion_custom_variable_operation */
                        conversion_custom_variable_operation?: (google.ads.googleads.v23.services.IConversionCustomVariableOperation|null);

                        /** MutateOperation conversion_goal_campaign_config_operation */
                        conversion_goal_campaign_config_operation?: (google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation|null);

                        /** MutateOperation conversion_value_rule_operation */
                        conversion_value_rule_operation?: (google.ads.googleads.v23.services.IConversionValueRuleOperation|null);

                        /** MutateOperation conversion_value_rule_set_operation */
                        conversion_value_rule_set_operation?: (google.ads.googleads.v23.services.IConversionValueRuleSetOperation|null);

                        /** MutateOperation custom_conversion_goal_operation */
                        custom_conversion_goal_operation?: (google.ads.googleads.v23.services.ICustomConversionGoalOperation|null);

                        /** MutateOperation customer_asset_operation */
                        customer_asset_operation?: (google.ads.googleads.v23.services.ICustomerAssetOperation|null);

                        /** MutateOperation customer_conversion_goal_operation */
                        customer_conversion_goal_operation?: (google.ads.googleads.v23.services.ICustomerConversionGoalOperation|null);

                        /** MutateOperation customer_customizer_operation */
                        customer_customizer_operation?: (google.ads.googleads.v23.services.ICustomerCustomizerOperation|null);

                        /** MutateOperation customer_label_operation */
                        customer_label_operation?: (google.ads.googleads.v23.services.ICustomerLabelOperation|null);

                        /** MutateOperation customer_negative_criterion_operation */
                        customer_negative_criterion_operation?: (google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation|null);

                        /** MutateOperation customer_operation */
                        customer_operation?: (google.ads.googleads.v23.services.ICustomerOperation|null);

                        /** MutateOperation customizer_attribute_operation */
                        customizer_attribute_operation?: (google.ads.googleads.v23.services.ICustomizerAttributeOperation|null);

                        /** MutateOperation experiment_operation */
                        experiment_operation?: (google.ads.googleads.v23.services.IExperimentOperation|null);

                        /** MutateOperation experiment_arm_operation */
                        experiment_arm_operation?: (google.ads.googleads.v23.services.IExperimentArmOperation|null);

                        /** MutateOperation keyword_plan_ad_group_operation */
                        keyword_plan_ad_group_operation?: (google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation|null);

                        /** MutateOperation keyword_plan_ad_group_keyword_operation */
                        keyword_plan_ad_group_keyword_operation?: (google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_keyword_operation */
                        keyword_plan_campaign_keyword_operation?: (google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_operation */
                        keyword_plan_campaign_operation?: (google.ads.googleads.v23.services.IKeywordPlanCampaignOperation|null);

                        /** MutateOperation keyword_plan_operation */
                        keyword_plan_operation?: (google.ads.googleads.v23.services.IKeywordPlanOperation|null);

                        /** MutateOperation label_operation */
                        label_operation?: (google.ads.googleads.v23.services.ILabelOperation|null);

                        /** MutateOperation recommendation_subscription_operation */
                        recommendation_subscription_operation?: (google.ads.googleads.v23.services.IRecommendationSubscriptionOperation|null);

                        /** MutateOperation remarketing_action_operation */
                        remarketing_action_operation?: (google.ads.googleads.v23.services.IRemarketingActionOperation|null);

                        /** MutateOperation shared_criterion_operation */
                        shared_criterion_operation?: (google.ads.googleads.v23.services.ISharedCriterionOperation|null);

                        /** MutateOperation shared_set_operation */
                        shared_set_operation?: (google.ads.googleads.v23.services.ISharedSetOperation|null);

                        /** MutateOperation smart_campaign_setting_operation */
                        smart_campaign_setting_operation?: (google.ads.googleads.v23.services.ISmartCampaignSettingOperation|null);

                        /** MutateOperation user_list_operation */
                        user_list_operation?: (google.ads.googleads.v23.services.IUserListOperation|null);
                    }

                    /** Represents a MutateOperation. */
                    class MutateOperation implements IMutateOperation {

                        /**
                         * Constructs a new MutateOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateOperation);

                        /** MutateOperation ad_group_ad_label_operation. */
                        public ad_group_ad_label_operation?: (google.ads.googleads.v23.services.IAdGroupAdLabelOperation|null);

                        /** MutateOperation ad_group_ad_operation. */
                        public ad_group_ad_operation?: (google.ads.googleads.v23.services.IAdGroupAdOperation|null);

                        /** MutateOperation ad_group_asset_operation. */
                        public ad_group_asset_operation?: (google.ads.googleads.v23.services.IAdGroupAssetOperation|null);

                        /** MutateOperation ad_group_bid_modifier_operation. */
                        public ad_group_bid_modifier_operation?: (google.ads.googleads.v23.services.IAdGroupBidModifierOperation|null);

                        /** MutateOperation ad_group_criterion_customizer_operation. */
                        public ad_group_criterion_customizer_operation?: (google.ads.googleads.v23.services.IAdGroupCriterionCustomizerOperation|null);

                        /** MutateOperation ad_group_criterion_label_operation. */
                        public ad_group_criterion_label_operation?: (google.ads.googleads.v23.services.IAdGroupCriterionLabelOperation|null);

                        /** MutateOperation ad_group_criterion_operation. */
                        public ad_group_criterion_operation?: (google.ads.googleads.v23.services.IAdGroupCriterionOperation|null);

                        /** MutateOperation ad_group_customizer_operation. */
                        public ad_group_customizer_operation?: (google.ads.googleads.v23.services.IAdGroupCustomizerOperation|null);

                        /** MutateOperation ad_group_label_operation. */
                        public ad_group_label_operation?: (google.ads.googleads.v23.services.IAdGroupLabelOperation|null);

                        /** MutateOperation ad_group_operation. */
                        public ad_group_operation?: (google.ads.googleads.v23.services.IAdGroupOperation|null);

                        /** MutateOperation ad_operation. */
                        public ad_operation?: (google.ads.googleads.v23.services.IAdOperation|null);

                        /** MutateOperation ad_parameter_operation. */
                        public ad_parameter_operation?: (google.ads.googleads.v23.services.IAdParameterOperation|null);

                        /** MutateOperation asset_operation. */
                        public asset_operation?: (google.ads.googleads.v23.services.IAssetOperation|null);

                        /** MutateOperation asset_group_asset_operation. */
                        public asset_group_asset_operation?: (google.ads.googleads.v23.services.IAssetGroupAssetOperation|null);

                        /** MutateOperation asset_group_listing_group_filter_operation. */
                        public asset_group_listing_group_filter_operation?: (google.ads.googleads.v23.services.IAssetGroupListingGroupFilterOperation|null);

                        /** MutateOperation asset_group_signal_operation. */
                        public asset_group_signal_operation?: (google.ads.googleads.v23.services.IAssetGroupSignalOperation|null);

                        /** MutateOperation asset_group_operation. */
                        public asset_group_operation?: (google.ads.googleads.v23.services.IAssetGroupOperation|null);

                        /** MutateOperation asset_set_asset_operation. */
                        public asset_set_asset_operation?: (google.ads.googleads.v23.services.IAssetSetAssetOperation|null);

                        /** MutateOperation asset_set_operation. */
                        public asset_set_operation?: (google.ads.googleads.v23.services.IAssetSetOperation|null);

                        /** MutateOperation audience_operation. */
                        public audience_operation?: (google.ads.googleads.v23.services.IAudienceOperation|null);

                        /** MutateOperation bidding_data_exclusion_operation. */
                        public bidding_data_exclusion_operation?: (google.ads.googleads.v23.services.IBiddingDataExclusionOperation|null);

                        /** MutateOperation bidding_seasonality_adjustment_operation. */
                        public bidding_seasonality_adjustment_operation?: (google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation|null);

                        /** MutateOperation bidding_strategy_operation. */
                        public bidding_strategy_operation?: (google.ads.googleads.v23.services.IBiddingStrategyOperation|null);

                        /** MutateOperation campaign_asset_operation. */
                        public campaign_asset_operation?: (google.ads.googleads.v23.services.ICampaignAssetOperation|null);

                        /** MutateOperation campaign_asset_set_operation. */
                        public campaign_asset_set_operation?: (google.ads.googleads.v23.services.ICampaignAssetSetOperation|null);

                        /** MutateOperation campaign_bid_modifier_operation. */
                        public campaign_bid_modifier_operation?: (google.ads.googleads.v23.services.ICampaignBidModifierOperation|null);

                        /** MutateOperation campaign_budget_operation. */
                        public campaign_budget_operation?: (google.ads.googleads.v23.services.ICampaignBudgetOperation|null);

                        /** MutateOperation campaign_conversion_goal_operation. */
                        public campaign_conversion_goal_operation?: (google.ads.googleads.v23.services.ICampaignConversionGoalOperation|null);

                        /** MutateOperation campaign_criterion_operation. */
                        public campaign_criterion_operation?: (google.ads.googleads.v23.services.ICampaignCriterionOperation|null);

                        /** MutateOperation campaign_customizer_operation. */
                        public campaign_customizer_operation?: (google.ads.googleads.v23.services.ICampaignCustomizerOperation|null);

                        /** MutateOperation campaign_draft_operation. */
                        public campaign_draft_operation?: (google.ads.googleads.v23.services.ICampaignDraftOperation|null);

                        /** MutateOperation campaign_group_operation. */
                        public campaign_group_operation?: (google.ads.googleads.v23.services.ICampaignGroupOperation|null);

                        /** MutateOperation campaign_label_operation. */
                        public campaign_label_operation?: (google.ads.googleads.v23.services.ICampaignLabelOperation|null);

                        /** MutateOperation campaign_operation. */
                        public campaign_operation?: (google.ads.googleads.v23.services.ICampaignOperation|null);

                        /** MutateOperation campaign_shared_set_operation. */
                        public campaign_shared_set_operation?: (google.ads.googleads.v23.services.ICampaignSharedSetOperation|null);

                        /** MutateOperation conversion_action_operation. */
                        public conversion_action_operation?: (google.ads.googleads.v23.services.IConversionActionOperation|null);

                        /** MutateOperation conversion_custom_variable_operation. */
                        public conversion_custom_variable_operation?: (google.ads.googleads.v23.services.IConversionCustomVariableOperation|null);

                        /** MutateOperation conversion_goal_campaign_config_operation. */
                        public conversion_goal_campaign_config_operation?: (google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation|null);

                        /** MutateOperation conversion_value_rule_operation. */
                        public conversion_value_rule_operation?: (google.ads.googleads.v23.services.IConversionValueRuleOperation|null);

                        /** MutateOperation conversion_value_rule_set_operation. */
                        public conversion_value_rule_set_operation?: (google.ads.googleads.v23.services.IConversionValueRuleSetOperation|null);

                        /** MutateOperation custom_conversion_goal_operation. */
                        public custom_conversion_goal_operation?: (google.ads.googleads.v23.services.ICustomConversionGoalOperation|null);

                        /** MutateOperation customer_asset_operation. */
                        public customer_asset_operation?: (google.ads.googleads.v23.services.ICustomerAssetOperation|null);

                        /** MutateOperation customer_conversion_goal_operation. */
                        public customer_conversion_goal_operation?: (google.ads.googleads.v23.services.ICustomerConversionGoalOperation|null);

                        /** MutateOperation customer_customizer_operation. */
                        public customer_customizer_operation?: (google.ads.googleads.v23.services.ICustomerCustomizerOperation|null);

                        /** MutateOperation customer_label_operation. */
                        public customer_label_operation?: (google.ads.googleads.v23.services.ICustomerLabelOperation|null);

                        /** MutateOperation customer_negative_criterion_operation. */
                        public customer_negative_criterion_operation?: (google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation|null);

                        /** MutateOperation customer_operation. */
                        public customer_operation?: (google.ads.googleads.v23.services.ICustomerOperation|null);

                        /** MutateOperation customizer_attribute_operation. */
                        public customizer_attribute_operation?: (google.ads.googleads.v23.services.ICustomizerAttributeOperation|null);

                        /** MutateOperation experiment_operation. */
                        public experiment_operation?: (google.ads.googleads.v23.services.IExperimentOperation|null);

                        /** MutateOperation experiment_arm_operation. */
                        public experiment_arm_operation?: (google.ads.googleads.v23.services.IExperimentArmOperation|null);

                        /** MutateOperation keyword_plan_ad_group_operation. */
                        public keyword_plan_ad_group_operation?: (google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation|null);

                        /** MutateOperation keyword_plan_ad_group_keyword_operation. */
                        public keyword_plan_ad_group_keyword_operation?: (google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_keyword_operation. */
                        public keyword_plan_campaign_keyword_operation?: (google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_operation. */
                        public keyword_plan_campaign_operation?: (google.ads.googleads.v23.services.IKeywordPlanCampaignOperation|null);

                        /** MutateOperation keyword_plan_operation. */
                        public keyword_plan_operation?: (google.ads.googleads.v23.services.IKeywordPlanOperation|null);

                        /** MutateOperation label_operation. */
                        public label_operation?: (google.ads.googleads.v23.services.ILabelOperation|null);

                        /** MutateOperation recommendation_subscription_operation. */
                        public recommendation_subscription_operation?: (google.ads.googleads.v23.services.IRecommendationSubscriptionOperation|null);

                        /** MutateOperation remarketing_action_operation. */
                        public remarketing_action_operation?: (google.ads.googleads.v23.services.IRemarketingActionOperation|null);

                        /** MutateOperation shared_criterion_operation. */
                        public shared_criterion_operation?: (google.ads.googleads.v23.services.ISharedCriterionOperation|null);

                        /** MutateOperation shared_set_operation. */
                        public shared_set_operation?: (google.ads.googleads.v23.services.ISharedSetOperation|null);

                        /** MutateOperation smart_campaign_setting_operation. */
                        public smart_campaign_setting_operation?: (google.ads.googleads.v23.services.ISmartCampaignSettingOperation|null);

                        /** MutateOperation user_list_operation. */
                        public user_list_operation?: (google.ads.googleads.v23.services.IUserListOperation|null);

                        /** MutateOperation operation. */
                        public operation?: ("ad_group_ad_label_operation"|"ad_group_ad_operation"|"ad_group_asset_operation"|"ad_group_bid_modifier_operation"|"ad_group_criterion_customizer_operation"|"ad_group_criterion_label_operation"|"ad_group_criterion_operation"|"ad_group_customizer_operation"|"ad_group_label_operation"|"ad_group_operation"|"ad_operation"|"ad_parameter_operation"|"asset_operation"|"asset_group_asset_operation"|"asset_group_listing_group_filter_operation"|"asset_group_signal_operation"|"asset_group_operation"|"asset_set_asset_operation"|"asset_set_operation"|"audience_operation"|"bidding_data_exclusion_operation"|"bidding_seasonality_adjustment_operation"|"bidding_strategy_operation"|"campaign_asset_operation"|"campaign_asset_set_operation"|"campaign_bid_modifier_operation"|"campaign_budget_operation"|"campaign_conversion_goal_operation"|"campaign_criterion_operation"|"campaign_customizer_operation"|"campaign_draft_operation"|"campaign_group_operation"|"campaign_label_operation"|"campaign_operation"|"campaign_shared_set_operation"|"conversion_action_operation"|"conversion_custom_variable_operation"|"conversion_goal_campaign_config_operation"|"conversion_value_rule_operation"|"conversion_value_rule_set_operation"|"custom_conversion_goal_operation"|"customer_asset_operation"|"customer_conversion_goal_operation"|"customer_customizer_operation"|"customer_label_operation"|"customer_negative_criterion_operation"|"customer_operation"|"customizer_attribute_operation"|"experiment_operation"|"experiment_arm_operation"|"keyword_plan_ad_group_operation"|"keyword_plan_ad_group_keyword_operation"|"keyword_plan_campaign_keyword_operation"|"keyword_plan_campaign_operation"|"keyword_plan_operation"|"label_operation"|"recommendation_subscription_operation"|"remarketing_action_operation"|"shared_criterion_operation"|"shared_set_operation"|"smart_campaign_setting_operation"|"user_list_operation");

                        /**
                         * Creates a new MutateOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateOperation): google.ads.googleads.v23.services.MutateOperation;

                        /**
                         * Encodes the specified MutateOperation message. Does not implicitly {@link google.ads.googleads.v23.services.MutateOperation.verify|verify} messages.
                         * @param message MutateOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateOperation.verify|verify} messages.
                         * @param message MutateOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateOperation;

                        /**
                         * Decodes a MutateOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateOperation;

                        /**
                         * Verifies a MutateOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateOperation;

                        /**
                         * Creates a plain object from a MutateOperation message. Also converts values to other types if specified.
                         * @param message MutateOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateOperationResponse. */
                    interface IMutateOperationResponse {

                        /** MutateOperationResponse ad_group_ad_label_result */
                        ad_group_ad_label_result?: (google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult|null);

                        /** MutateOperationResponse ad_group_ad_result */
                        ad_group_ad_result?: (google.ads.googleads.v23.services.IMutateAdGroupAdResult|null);

                        /** MutateOperationResponse ad_group_asset_result */
                        ad_group_asset_result?: (google.ads.googleads.v23.services.IMutateAdGroupAssetResult|null);

                        /** MutateOperationResponse ad_group_bid_modifier_result */
                        ad_group_bid_modifier_result?: (google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult|null);

                        /** MutateOperationResponse ad_group_criterion_customizer_result */
                        ad_group_criterion_customizer_result?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult|null);

                        /** MutateOperationResponse ad_group_criterion_label_result */
                        ad_group_criterion_label_result?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult|null);

                        /** MutateOperationResponse ad_group_criterion_result */
                        ad_group_criterion_result?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionResult|null);

                        /** MutateOperationResponse ad_group_customizer_result */
                        ad_group_customizer_result?: (google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult|null);

                        /** MutateOperationResponse ad_group_label_result */
                        ad_group_label_result?: (google.ads.googleads.v23.services.IMutateAdGroupLabelResult|null);

                        /** MutateOperationResponse ad_group_result */
                        ad_group_result?: (google.ads.googleads.v23.services.IMutateAdGroupResult|null);

                        /** MutateOperationResponse ad_parameter_result */
                        ad_parameter_result?: (google.ads.googleads.v23.services.IMutateAdParameterResult|null);

                        /** MutateOperationResponse ad_result */
                        ad_result?: (google.ads.googleads.v23.services.IMutateAdResult|null);

                        /** MutateOperationResponse asset_result */
                        asset_result?: (google.ads.googleads.v23.services.IMutateAssetResult|null);

                        /** MutateOperationResponse asset_group_asset_result */
                        asset_group_asset_result?: (google.ads.googleads.v23.services.IMutateAssetGroupAssetResult|null);

                        /** MutateOperationResponse asset_group_listing_group_filter_result */
                        asset_group_listing_group_filter_result?: (google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult|null);

                        /** MutateOperationResponse asset_group_signal_result */
                        asset_group_signal_result?: (google.ads.googleads.v23.services.IMutateAssetGroupSignalResult|null);

                        /** MutateOperationResponse asset_group_result */
                        asset_group_result?: (google.ads.googleads.v23.services.IMutateAssetGroupResult|null);

                        /** MutateOperationResponse asset_set_asset_result */
                        asset_set_asset_result?: (google.ads.googleads.v23.services.IMutateAssetSetAssetResult|null);

                        /** MutateOperationResponse asset_set_result */
                        asset_set_result?: (google.ads.googleads.v23.services.IMutateAssetSetResult|null);

                        /** MutateOperationResponse audience_result */
                        audience_result?: (google.ads.googleads.v23.services.IMutateAudienceResult|null);

                        /** MutateOperationResponse bidding_data_exclusion_result */
                        bidding_data_exclusion_result?: (google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult|null);

                        /** MutateOperationResponse bidding_seasonality_adjustment_result */
                        bidding_seasonality_adjustment_result?: (google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult|null);

                        /** MutateOperationResponse bidding_strategy_result */
                        bidding_strategy_result?: (google.ads.googleads.v23.services.IMutateBiddingStrategyResult|null);

                        /** MutateOperationResponse campaign_asset_result */
                        campaign_asset_result?: (google.ads.googleads.v23.services.IMutateCampaignAssetResult|null);

                        /** MutateOperationResponse campaign_asset_set_result */
                        campaign_asset_set_result?: (google.ads.googleads.v23.services.IMutateCampaignAssetSetResult|null);

                        /** MutateOperationResponse campaign_bid_modifier_result */
                        campaign_bid_modifier_result?: (google.ads.googleads.v23.services.IMutateCampaignBidModifierResult|null);

                        /** MutateOperationResponse campaign_budget_result */
                        campaign_budget_result?: (google.ads.googleads.v23.services.IMutateCampaignBudgetResult|null);

                        /** MutateOperationResponse campaign_conversion_goal_result */
                        campaign_conversion_goal_result?: (google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult|null);

                        /** MutateOperationResponse campaign_criterion_result */
                        campaign_criterion_result?: (google.ads.googleads.v23.services.IMutateCampaignCriterionResult|null);

                        /** MutateOperationResponse campaign_customizer_result */
                        campaign_customizer_result?: (google.ads.googleads.v23.services.IMutateCampaignCustomizerResult|null);

                        /** MutateOperationResponse campaign_draft_result */
                        campaign_draft_result?: (google.ads.googleads.v23.services.IMutateCampaignDraftResult|null);

                        /** MutateOperationResponse campaign_group_result */
                        campaign_group_result?: (google.ads.googleads.v23.services.IMutateCampaignGroupResult|null);

                        /** MutateOperationResponse campaign_label_result */
                        campaign_label_result?: (google.ads.googleads.v23.services.IMutateCampaignLabelResult|null);

                        /** MutateOperationResponse campaign_result */
                        campaign_result?: (google.ads.googleads.v23.services.IMutateCampaignResult|null);

                        /** MutateOperationResponse campaign_shared_set_result */
                        campaign_shared_set_result?: (google.ads.googleads.v23.services.IMutateCampaignSharedSetResult|null);

                        /** MutateOperationResponse conversion_action_result */
                        conversion_action_result?: (google.ads.googleads.v23.services.IMutateConversionActionResult|null);

                        /** MutateOperationResponse conversion_custom_variable_result */
                        conversion_custom_variable_result?: (google.ads.googleads.v23.services.IMutateConversionCustomVariableResult|null);

                        /** MutateOperationResponse conversion_goal_campaign_config_result */
                        conversion_goal_campaign_config_result?: (google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult|null);

                        /** MutateOperationResponse conversion_value_rule_result */
                        conversion_value_rule_result?: (google.ads.googleads.v23.services.IMutateConversionValueRuleResult|null);

                        /** MutateOperationResponse conversion_value_rule_set_result */
                        conversion_value_rule_set_result?: (google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult|null);

                        /** MutateOperationResponse custom_conversion_goal_result */
                        custom_conversion_goal_result?: (google.ads.googleads.v23.services.IMutateCustomConversionGoalResult|null);

                        /** MutateOperationResponse customer_asset_result */
                        customer_asset_result?: (google.ads.googleads.v23.services.IMutateCustomerAssetResult|null);

                        /** MutateOperationResponse customer_conversion_goal_result */
                        customer_conversion_goal_result?: (google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult|null);

                        /** MutateOperationResponse customer_customizer_result */
                        customer_customizer_result?: (google.ads.googleads.v23.services.IMutateCustomerCustomizerResult|null);

                        /** MutateOperationResponse customer_label_result */
                        customer_label_result?: (google.ads.googleads.v23.services.IMutateCustomerLabelResult|null);

                        /** MutateOperationResponse customer_negative_criterion_result */
                        customer_negative_criterion_result?: (google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult|null);

                        /** MutateOperationResponse customer_result */
                        customer_result?: (google.ads.googleads.v23.services.IMutateCustomerResult|null);

                        /** MutateOperationResponse customizer_attribute_result */
                        customizer_attribute_result?: (google.ads.googleads.v23.services.IMutateCustomizerAttributeResult|null);

                        /** MutateOperationResponse experiment_result */
                        experiment_result?: (google.ads.googleads.v23.services.IMutateExperimentResult|null);

                        /** MutateOperationResponse experiment_arm_result */
                        experiment_arm_result?: (google.ads.googleads.v23.services.IMutateExperimentArmResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_result */
                        keyword_plan_ad_group_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_result */
                        keyword_plan_campaign_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_keyword_result */
                        keyword_plan_ad_group_keyword_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_keyword_result */
                        keyword_plan_campaign_keyword_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_result */
                        keyword_plan_result?: (google.ads.googleads.v23.services.IMutateKeywordPlansResult|null);

                        /** MutateOperationResponse label_result */
                        label_result?: (google.ads.googleads.v23.services.IMutateLabelResult|null);

                        /** MutateOperationResponse recommendation_subscription_result */
                        recommendation_subscription_result?: (google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult|null);

                        /** MutateOperationResponse remarketing_action_result */
                        remarketing_action_result?: (google.ads.googleads.v23.services.IMutateRemarketingActionResult|null);

                        /** MutateOperationResponse shared_criterion_result */
                        shared_criterion_result?: (google.ads.googleads.v23.services.IMutateSharedCriterionResult|null);

                        /** MutateOperationResponse shared_set_result */
                        shared_set_result?: (google.ads.googleads.v23.services.IMutateSharedSetResult|null);

                        /** MutateOperationResponse smart_campaign_setting_result */
                        smart_campaign_setting_result?: (google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult|null);

                        /** MutateOperationResponse user_list_result */
                        user_list_result?: (google.ads.googleads.v23.services.IMutateUserListResult|null);
                    }

                    /** Represents a MutateOperationResponse. */
                    class MutateOperationResponse implements IMutateOperationResponse {

                        /**
                         * Constructs a new MutateOperationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateOperationResponse);

                        /** MutateOperationResponse ad_group_ad_label_result. */
                        public ad_group_ad_label_result?: (google.ads.googleads.v23.services.IMutateAdGroupAdLabelResult|null);

                        /** MutateOperationResponse ad_group_ad_result. */
                        public ad_group_ad_result?: (google.ads.googleads.v23.services.IMutateAdGroupAdResult|null);

                        /** MutateOperationResponse ad_group_asset_result. */
                        public ad_group_asset_result?: (google.ads.googleads.v23.services.IMutateAdGroupAssetResult|null);

                        /** MutateOperationResponse ad_group_bid_modifier_result. */
                        public ad_group_bid_modifier_result?: (google.ads.googleads.v23.services.IMutateAdGroupBidModifierResult|null);

                        /** MutateOperationResponse ad_group_criterion_customizer_result. */
                        public ad_group_criterion_customizer_result?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionCustomizerResult|null);

                        /** MutateOperationResponse ad_group_criterion_label_result. */
                        public ad_group_criterion_label_result?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionLabelResult|null);

                        /** MutateOperationResponse ad_group_criterion_result. */
                        public ad_group_criterion_result?: (google.ads.googleads.v23.services.IMutateAdGroupCriterionResult|null);

                        /** MutateOperationResponse ad_group_customizer_result. */
                        public ad_group_customizer_result?: (google.ads.googleads.v23.services.IMutateAdGroupCustomizerResult|null);

                        /** MutateOperationResponse ad_group_label_result. */
                        public ad_group_label_result?: (google.ads.googleads.v23.services.IMutateAdGroupLabelResult|null);

                        /** MutateOperationResponse ad_group_result. */
                        public ad_group_result?: (google.ads.googleads.v23.services.IMutateAdGroupResult|null);

                        /** MutateOperationResponse ad_parameter_result. */
                        public ad_parameter_result?: (google.ads.googleads.v23.services.IMutateAdParameterResult|null);

                        /** MutateOperationResponse ad_result. */
                        public ad_result?: (google.ads.googleads.v23.services.IMutateAdResult|null);

                        /** MutateOperationResponse asset_result. */
                        public asset_result?: (google.ads.googleads.v23.services.IMutateAssetResult|null);

                        /** MutateOperationResponse asset_group_asset_result. */
                        public asset_group_asset_result?: (google.ads.googleads.v23.services.IMutateAssetGroupAssetResult|null);

                        /** MutateOperationResponse asset_group_listing_group_filter_result. */
                        public asset_group_listing_group_filter_result?: (google.ads.googleads.v23.services.IMutateAssetGroupListingGroupFilterResult|null);

                        /** MutateOperationResponse asset_group_signal_result. */
                        public asset_group_signal_result?: (google.ads.googleads.v23.services.IMutateAssetGroupSignalResult|null);

                        /** MutateOperationResponse asset_group_result. */
                        public asset_group_result?: (google.ads.googleads.v23.services.IMutateAssetGroupResult|null);

                        /** MutateOperationResponse asset_set_asset_result. */
                        public asset_set_asset_result?: (google.ads.googleads.v23.services.IMutateAssetSetAssetResult|null);

                        /** MutateOperationResponse asset_set_result. */
                        public asset_set_result?: (google.ads.googleads.v23.services.IMutateAssetSetResult|null);

                        /** MutateOperationResponse audience_result. */
                        public audience_result?: (google.ads.googleads.v23.services.IMutateAudienceResult|null);

                        /** MutateOperationResponse bidding_data_exclusion_result. */
                        public bidding_data_exclusion_result?: (google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult|null);

                        /** MutateOperationResponse bidding_seasonality_adjustment_result. */
                        public bidding_seasonality_adjustment_result?: (google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult|null);

                        /** MutateOperationResponse bidding_strategy_result. */
                        public bidding_strategy_result?: (google.ads.googleads.v23.services.IMutateBiddingStrategyResult|null);

                        /** MutateOperationResponse campaign_asset_result. */
                        public campaign_asset_result?: (google.ads.googleads.v23.services.IMutateCampaignAssetResult|null);

                        /** MutateOperationResponse campaign_asset_set_result. */
                        public campaign_asset_set_result?: (google.ads.googleads.v23.services.IMutateCampaignAssetSetResult|null);

                        /** MutateOperationResponse campaign_bid_modifier_result. */
                        public campaign_bid_modifier_result?: (google.ads.googleads.v23.services.IMutateCampaignBidModifierResult|null);

                        /** MutateOperationResponse campaign_budget_result. */
                        public campaign_budget_result?: (google.ads.googleads.v23.services.IMutateCampaignBudgetResult|null);

                        /** MutateOperationResponse campaign_conversion_goal_result. */
                        public campaign_conversion_goal_result?: (google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult|null);

                        /** MutateOperationResponse campaign_criterion_result. */
                        public campaign_criterion_result?: (google.ads.googleads.v23.services.IMutateCampaignCriterionResult|null);

                        /** MutateOperationResponse campaign_customizer_result. */
                        public campaign_customizer_result?: (google.ads.googleads.v23.services.IMutateCampaignCustomizerResult|null);

                        /** MutateOperationResponse campaign_draft_result. */
                        public campaign_draft_result?: (google.ads.googleads.v23.services.IMutateCampaignDraftResult|null);

                        /** MutateOperationResponse campaign_group_result. */
                        public campaign_group_result?: (google.ads.googleads.v23.services.IMutateCampaignGroupResult|null);

                        /** MutateOperationResponse campaign_label_result. */
                        public campaign_label_result?: (google.ads.googleads.v23.services.IMutateCampaignLabelResult|null);

                        /** MutateOperationResponse campaign_result. */
                        public campaign_result?: (google.ads.googleads.v23.services.IMutateCampaignResult|null);

                        /** MutateOperationResponse campaign_shared_set_result. */
                        public campaign_shared_set_result?: (google.ads.googleads.v23.services.IMutateCampaignSharedSetResult|null);

                        /** MutateOperationResponse conversion_action_result. */
                        public conversion_action_result?: (google.ads.googleads.v23.services.IMutateConversionActionResult|null);

                        /** MutateOperationResponse conversion_custom_variable_result. */
                        public conversion_custom_variable_result?: (google.ads.googleads.v23.services.IMutateConversionCustomVariableResult|null);

                        /** MutateOperationResponse conversion_goal_campaign_config_result. */
                        public conversion_goal_campaign_config_result?: (google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult|null);

                        /** MutateOperationResponse conversion_value_rule_result. */
                        public conversion_value_rule_result?: (google.ads.googleads.v23.services.IMutateConversionValueRuleResult|null);

                        /** MutateOperationResponse conversion_value_rule_set_result. */
                        public conversion_value_rule_set_result?: (google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult|null);

                        /** MutateOperationResponse custom_conversion_goal_result. */
                        public custom_conversion_goal_result?: (google.ads.googleads.v23.services.IMutateCustomConversionGoalResult|null);

                        /** MutateOperationResponse customer_asset_result. */
                        public customer_asset_result?: (google.ads.googleads.v23.services.IMutateCustomerAssetResult|null);

                        /** MutateOperationResponse customer_conversion_goal_result. */
                        public customer_conversion_goal_result?: (google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult|null);

                        /** MutateOperationResponse customer_customizer_result. */
                        public customer_customizer_result?: (google.ads.googleads.v23.services.IMutateCustomerCustomizerResult|null);

                        /** MutateOperationResponse customer_label_result. */
                        public customer_label_result?: (google.ads.googleads.v23.services.IMutateCustomerLabelResult|null);

                        /** MutateOperationResponse customer_negative_criterion_result. */
                        public customer_negative_criterion_result?: (google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult|null);

                        /** MutateOperationResponse customer_result. */
                        public customer_result?: (google.ads.googleads.v23.services.IMutateCustomerResult|null);

                        /** MutateOperationResponse customizer_attribute_result. */
                        public customizer_attribute_result?: (google.ads.googleads.v23.services.IMutateCustomizerAttributeResult|null);

                        /** MutateOperationResponse experiment_result. */
                        public experiment_result?: (google.ads.googleads.v23.services.IMutateExperimentResult|null);

                        /** MutateOperationResponse experiment_arm_result. */
                        public experiment_arm_result?: (google.ads.googleads.v23.services.IMutateExperimentArmResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_result. */
                        public keyword_plan_ad_group_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_result. */
                        public keyword_plan_campaign_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_keyword_result. */
                        public keyword_plan_ad_group_keyword_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_keyword_result. */
                        public keyword_plan_campaign_keyword_result?: (google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_result. */
                        public keyword_plan_result?: (google.ads.googleads.v23.services.IMutateKeywordPlansResult|null);

                        /** MutateOperationResponse label_result. */
                        public label_result?: (google.ads.googleads.v23.services.IMutateLabelResult|null);

                        /** MutateOperationResponse recommendation_subscription_result. */
                        public recommendation_subscription_result?: (google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult|null);

                        /** MutateOperationResponse remarketing_action_result. */
                        public remarketing_action_result?: (google.ads.googleads.v23.services.IMutateRemarketingActionResult|null);

                        /** MutateOperationResponse shared_criterion_result. */
                        public shared_criterion_result?: (google.ads.googleads.v23.services.IMutateSharedCriterionResult|null);

                        /** MutateOperationResponse shared_set_result. */
                        public shared_set_result?: (google.ads.googleads.v23.services.IMutateSharedSetResult|null);

                        /** MutateOperationResponse smart_campaign_setting_result. */
                        public smart_campaign_setting_result?: (google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult|null);

                        /** MutateOperationResponse user_list_result. */
                        public user_list_result?: (google.ads.googleads.v23.services.IMutateUserListResult|null);

                        /** MutateOperationResponse response. */
                        public response?: ("ad_group_ad_label_result"|"ad_group_ad_result"|"ad_group_asset_result"|"ad_group_bid_modifier_result"|"ad_group_criterion_customizer_result"|"ad_group_criterion_label_result"|"ad_group_criterion_result"|"ad_group_customizer_result"|"ad_group_label_result"|"ad_group_result"|"ad_parameter_result"|"ad_result"|"asset_result"|"asset_group_asset_result"|"asset_group_listing_group_filter_result"|"asset_group_signal_result"|"asset_group_result"|"asset_set_asset_result"|"asset_set_result"|"audience_result"|"bidding_data_exclusion_result"|"bidding_seasonality_adjustment_result"|"bidding_strategy_result"|"campaign_asset_result"|"campaign_asset_set_result"|"campaign_bid_modifier_result"|"campaign_budget_result"|"campaign_conversion_goal_result"|"campaign_criterion_result"|"campaign_customizer_result"|"campaign_draft_result"|"campaign_group_result"|"campaign_label_result"|"campaign_result"|"campaign_shared_set_result"|"conversion_action_result"|"conversion_custom_variable_result"|"conversion_goal_campaign_config_result"|"conversion_value_rule_result"|"conversion_value_rule_set_result"|"custom_conversion_goal_result"|"customer_asset_result"|"customer_conversion_goal_result"|"customer_customizer_result"|"customer_label_result"|"customer_negative_criterion_result"|"customer_result"|"customizer_attribute_result"|"experiment_result"|"experiment_arm_result"|"keyword_plan_ad_group_result"|"keyword_plan_campaign_result"|"keyword_plan_ad_group_keyword_result"|"keyword_plan_campaign_keyword_result"|"keyword_plan_result"|"label_result"|"recommendation_subscription_result"|"remarketing_action_result"|"shared_criterion_result"|"shared_set_result"|"smart_campaign_setting_result"|"user_list_result");

                        /**
                         * Creates a new MutateOperationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateOperationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateOperationResponse): google.ads.googleads.v23.services.MutateOperationResponse;

                        /**
                         * Encodes the specified MutateOperationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateOperationResponse.verify|verify} messages.
                         * @param message MutateOperationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateOperationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateOperationResponse.verify|verify} messages.
                         * @param message MutateOperationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateOperationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateOperationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateOperationResponse;

                        /**
                         * Decodes a MutateOperationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateOperationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateOperationResponse;

                        /**
                         * Verifies a MutateOperationResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateOperationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateOperationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateOperationResponse;

                        /**
                         * Creates a plain object from a MutateOperationResponse message. Also converts values to other types if specified.
                         * @param message MutateOperationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateOperationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateOperationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchSettings. */
                    interface ISearchSettings {

                        /** SearchSettings omit_results */
                        omit_results?: (boolean|null);

                        /** SearchSettings return_summary_row */
                        return_summary_row?: (boolean|null);

                        /** SearchSettings return_total_results_count */
                        return_total_results_count?: (boolean|null);
                    }

                    /** Represents a SearchSettings. */
                    class SearchSettings implements ISearchSettings {

                        /**
                         * Constructs a new SearchSettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchSettings);

                        /** SearchSettings omit_results. */
                        public omit_results: boolean;

                        /** SearchSettings return_summary_row. */
                        public return_summary_row: boolean;

                        /** SearchSettings return_total_results_count. */
                        public return_total_results_count: boolean;

                        /**
                         * Creates a new SearchSettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchSettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchSettings): google.ads.googleads.v23.services.SearchSettings;

                        /**
                         * Encodes the specified SearchSettings message. Does not implicitly {@link google.ads.googleads.v23.services.SearchSettings.verify|verify} messages.
                         * @param message SearchSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchSettings.verify|verify} messages.
                         * @param message SearchSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchSettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchSettings;

                        /**
                         * Decodes a SearchSettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchSettings;

                        /**
                         * Verifies a SearchSettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchSettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchSettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchSettings;

                        /**
                         * Creates a plain object from a SearchSettings message. Also converts values to other types if specified.
                         * @param message SearchSettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchSettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchSettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MetricAttributes. */
                    interface IMetricAttributes {

                        /** MetricAttributes name */
                        name?: (string|null);

                        /** MetricAttributes attributes */
                        attributes?: (google.ads.googleads.v23.services.MetricAttributes.IAttribute[]|null);
                    }

                    /** Represents a MetricAttributes. */
                    class MetricAttributes implements IMetricAttributes {

                        /**
                         * Constructs a new MetricAttributes.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMetricAttributes);

                        /** MetricAttributes name. */
                        public name: string;

                        /** MetricAttributes attributes. */
                        public attributes: google.ads.googleads.v23.services.MetricAttributes.IAttribute[];

                        /**
                         * Creates a new MetricAttributes instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MetricAttributes instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMetricAttributes): google.ads.googleads.v23.services.MetricAttributes;

                        /**
                         * Encodes the specified MetricAttributes message. Does not implicitly {@link google.ads.googleads.v23.services.MetricAttributes.verify|verify} messages.
                         * @param message MetricAttributes message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMetricAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MetricAttributes message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MetricAttributes.verify|verify} messages.
                         * @param message MetricAttributes message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMetricAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MetricAttributes message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MetricAttributes
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MetricAttributes;

                        /**
                         * Decodes a MetricAttributes message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MetricAttributes
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MetricAttributes;

                        /**
                         * Verifies a MetricAttributes message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MetricAttributes message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MetricAttributes
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MetricAttributes;

                        /**
                         * Creates a plain object from a MetricAttributes message. Also converts values to other types if specified.
                         * @param message MetricAttributes
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MetricAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MetricAttributes to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MetricAttributes
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace MetricAttributes {

                        /** Properties of an Attribute. */
                        interface IAttribute {

                            /** Attribute key */
                            key?: (string|null);

                            /** Attribute value */
                            value?: (string|null);
                        }

                        /** Represents an Attribute. */
                        class Attribute implements IAttribute {

                            /**
                             * Constructs a new Attribute.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.MetricAttributes.IAttribute);

                            /** Attribute key. */
                            public key: string;

                            /** Attribute value. */
                            public value: string;

                            /**
                             * Creates a new Attribute instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Attribute instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.MetricAttributes.IAttribute): google.ads.googleads.v23.services.MetricAttributes.Attribute;

                            /**
                             * Encodes the specified Attribute message. Does not implicitly {@link google.ads.googleads.v23.services.MetricAttributes.Attribute.verify|verify} messages.
                             * @param message Attribute message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.MetricAttributes.IAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Attribute message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MetricAttributes.Attribute.verify|verify} messages.
                             * @param message Attribute message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.MetricAttributes.IAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an Attribute message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Attribute
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MetricAttributes.Attribute;

                            /**
                             * Decodes an Attribute message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Attribute
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MetricAttributes.Attribute;

                            /**
                             * Verifies an Attribute message.
                             * @param message Plain 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 Attribute message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Attribute
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MetricAttributes.Attribute;

                            /**
                             * Creates a plain object from an Attribute message. Also converts values to other types if specified.
                             * @param message Attribute
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.MetricAttributes.Attribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Attribute to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Attribute
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Represents a BiddingDataExclusionService */
                    class BiddingDataExclusionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BiddingDataExclusionService 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 BiddingDataExclusionService 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): BiddingDataExclusionService;

                        /**
                         * Calls MutateBiddingDataExclusions.
                         * @param request MutateBiddingDataExclusionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateBiddingDataExclusionsResponse
                         */
                        public mutateBiddingDataExclusions(request: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsRequest, callback: google.ads.googleads.v23.services.BiddingDataExclusionService.MutateBiddingDataExclusionsCallback): void;

                        /**
                         * Calls MutateBiddingDataExclusions.
                         * @param request MutateBiddingDataExclusionsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBiddingDataExclusions(request: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsRequest): Promise<google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse>;
                    }

                    namespace BiddingDataExclusionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BiddingDataExclusionService|mutateBiddingDataExclusions}.
                         * @param error Error, if any
                         * @param [response] MutateBiddingDataExclusionsResponse
                         */
                        type MutateBiddingDataExclusionsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse) => void;
                    }

                    /** Properties of a MutateBiddingDataExclusionsRequest. */
                    interface IMutateBiddingDataExclusionsRequest {

                        /** MutateBiddingDataExclusionsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBiddingDataExclusionsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IBiddingDataExclusionOperation[]|null);

                        /** MutateBiddingDataExclusionsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateBiddingDataExclusionsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateBiddingDataExclusionsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateBiddingDataExclusionsRequest. */
                    class MutateBiddingDataExclusionsRequest implements IMutateBiddingDataExclusionsRequest {

                        /**
                         * Constructs a new MutateBiddingDataExclusionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsRequest);

                        /** MutateBiddingDataExclusionsRequest customer_id. */
                        public customer_id: string;

                        /** MutateBiddingDataExclusionsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IBiddingDataExclusionOperation[];

                        /** MutateBiddingDataExclusionsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateBiddingDataExclusionsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateBiddingDataExclusionsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateBiddingDataExclusionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingDataExclusionsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsRequest): google.ads.googleads.v23.services.MutateBiddingDataExclusionsRequest;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingDataExclusionsRequest.verify|verify} messages.
                         * @param message MutateBiddingDataExclusionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingDataExclusionsRequest.verify|verify} messages.
                         * @param message MutateBiddingDataExclusionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingDataExclusionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingDataExclusionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingDataExclusionsRequest;

                        /**
                         * Decodes a MutateBiddingDataExclusionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingDataExclusionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingDataExclusionsRequest;

                        /**
                         * Verifies a MutateBiddingDataExclusionsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingDataExclusionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingDataExclusionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingDataExclusionsRequest;

                        /**
                         * Creates a plain object from a MutateBiddingDataExclusionsRequest message. Also converts values to other types if specified.
                         * @param message MutateBiddingDataExclusionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingDataExclusionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingDataExclusionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingDataExclusionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BiddingDataExclusionOperation. */
                    interface IBiddingDataExclusionOperation {

                        /** BiddingDataExclusionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingDataExclusionOperation create */
                        create?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);

                        /** BiddingDataExclusionOperation update */
                        update?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);

                        /** BiddingDataExclusionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BiddingDataExclusionOperation. */
                    class BiddingDataExclusionOperation implements IBiddingDataExclusionOperation {

                        /**
                         * Constructs a new BiddingDataExclusionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBiddingDataExclusionOperation);

                        /** BiddingDataExclusionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingDataExclusionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);

                        /** BiddingDataExclusionOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);

                        /** BiddingDataExclusionOperation remove. */
                        public remove?: (string|null);

                        /** BiddingDataExclusionOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new BiddingDataExclusionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingDataExclusionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBiddingDataExclusionOperation): google.ads.googleads.v23.services.BiddingDataExclusionOperation;

                        /**
                         * Encodes the specified BiddingDataExclusionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.BiddingDataExclusionOperation.verify|verify} messages.
                         * @param message BiddingDataExclusionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBiddingDataExclusionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingDataExclusionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BiddingDataExclusionOperation.verify|verify} messages.
                         * @param message BiddingDataExclusionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBiddingDataExclusionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingDataExclusionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingDataExclusionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BiddingDataExclusionOperation;

                        /**
                         * Decodes a BiddingDataExclusionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingDataExclusionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BiddingDataExclusionOperation;

                        /**
                         * Verifies a BiddingDataExclusionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingDataExclusionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingDataExclusionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BiddingDataExclusionOperation;

                        /**
                         * Creates a plain object from a BiddingDataExclusionOperation message. Also converts values to other types if specified.
                         * @param message BiddingDataExclusionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BiddingDataExclusionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingDataExclusionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingDataExclusionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBiddingDataExclusionsResponse. */
                    interface IMutateBiddingDataExclusionsResponse {

                        /** MutateBiddingDataExclusionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingDataExclusionsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult[]|null);
                    }

                    /** Represents a MutateBiddingDataExclusionsResponse. */
                    class MutateBiddingDataExclusionsResponse implements IMutateBiddingDataExclusionsResponse {

                        /**
                         * Constructs a new MutateBiddingDataExclusionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResponse);

                        /** MutateBiddingDataExclusionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingDataExclusionsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult[];

                        /**
                         * Creates a new MutateBiddingDataExclusionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingDataExclusionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResponse): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse.verify|verify} messages.
                         * @param message MutateBiddingDataExclusionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse.verify|verify} messages.
                         * @param message MutateBiddingDataExclusionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingDataExclusionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingDataExclusionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse;

                        /**
                         * Decodes a MutateBiddingDataExclusionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingDataExclusionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse;

                        /**
                         * Verifies a MutateBiddingDataExclusionsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingDataExclusionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingDataExclusionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse;

                        /**
                         * Creates a plain object from a MutateBiddingDataExclusionsResponse message. Also converts values to other types if specified.
                         * @param message MutateBiddingDataExclusionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingDataExclusionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingDataExclusionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingDataExclusionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBiddingDataExclusionsResult. */
                    interface IMutateBiddingDataExclusionsResult {

                        /** MutateBiddingDataExclusionsResult resource_name */
                        resource_name?: (string|null);

                        /** MutateBiddingDataExclusionsResult bidding_data_exclusion */
                        bidding_data_exclusion?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);
                    }

                    /** Represents a MutateBiddingDataExclusionsResult. */
                    class MutateBiddingDataExclusionsResult implements IMutateBiddingDataExclusionsResult {

                        /**
                         * Constructs a new MutateBiddingDataExclusionsResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult);

                        /** MutateBiddingDataExclusionsResult resource_name. */
                        public resource_name: string;

                        /** MutateBiddingDataExclusionsResult bidding_data_exclusion. */
                        public bidding_data_exclusion?: (google.ads.googleads.v23.resources.IBiddingDataExclusion|null);

                        /**
                         * Creates a new MutateBiddingDataExclusionsResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingDataExclusionsResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResult;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingDataExclusionsResult.verify|verify} messages.
                         * @param message MutateBiddingDataExclusionsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingDataExclusionsResult.verify|verify} messages.
                         * @param message MutateBiddingDataExclusionsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingDataExclusionsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingDataExclusionsResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingDataExclusionsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResult;

                        /**
                         * Decodes a MutateBiddingDataExclusionsResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingDataExclusionsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResult;

                        /**
                         * Verifies a MutateBiddingDataExclusionsResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingDataExclusionsResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingDataExclusionsResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingDataExclusionsResult;

                        /**
                         * Creates a plain object from a MutateBiddingDataExclusionsResult message. Also converts values to other types if specified.
                         * @param message MutateBiddingDataExclusionsResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingDataExclusionsResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingDataExclusionsResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingDataExclusionsResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a BiddingSeasonalityAdjustmentService */
                    class BiddingSeasonalityAdjustmentService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BiddingSeasonalityAdjustmentService 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 BiddingSeasonalityAdjustmentService 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): BiddingSeasonalityAdjustmentService;

                        /**
                         * Calls MutateBiddingSeasonalityAdjustments.
                         * @param request MutateBiddingSeasonalityAdjustmentsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateBiddingSeasonalityAdjustmentsResponse
                         */
                        public mutateBiddingSeasonalityAdjustments(request: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsRequest, callback: google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentService.MutateBiddingSeasonalityAdjustmentsCallback): void;

                        /**
                         * Calls MutateBiddingSeasonalityAdjustments.
                         * @param request MutateBiddingSeasonalityAdjustmentsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBiddingSeasonalityAdjustments(request: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsRequest): Promise<google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse>;
                    }

                    namespace BiddingSeasonalityAdjustmentService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentService|mutateBiddingSeasonalityAdjustments}.
                         * @param error Error, if any
                         * @param [response] MutateBiddingSeasonalityAdjustmentsResponse
                         */
                        type MutateBiddingSeasonalityAdjustmentsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse) => void;
                    }

                    /** Properties of a MutateBiddingSeasonalityAdjustmentsRequest. */
                    interface IMutateBiddingSeasonalityAdjustmentsRequest {

                        /** MutateBiddingSeasonalityAdjustmentsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBiddingSeasonalityAdjustmentsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation[]|null);

                        /** MutateBiddingSeasonalityAdjustmentsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateBiddingSeasonalityAdjustmentsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateBiddingSeasonalityAdjustmentsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateBiddingSeasonalityAdjustmentsRequest. */
                    class MutateBiddingSeasonalityAdjustmentsRequest implements IMutateBiddingSeasonalityAdjustmentsRequest {

                        /**
                         * Constructs a new MutateBiddingSeasonalityAdjustmentsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsRequest);

                        /** MutateBiddingSeasonalityAdjustmentsRequest customer_id. */
                        public customer_id: string;

                        /** MutateBiddingSeasonalityAdjustmentsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation[];

                        /** MutateBiddingSeasonalityAdjustmentsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateBiddingSeasonalityAdjustmentsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateBiddingSeasonalityAdjustmentsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateBiddingSeasonalityAdjustmentsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingSeasonalityAdjustmentsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsRequest): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsRequest;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsRequest.verify|verify} messages.
                         * @param message MutateBiddingSeasonalityAdjustmentsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsRequest.verify|verify} messages.
                         * @param message MutateBiddingSeasonalityAdjustmentsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingSeasonalityAdjustmentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsRequest;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingSeasonalityAdjustmentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsRequest;

                        /**
                         * Verifies a MutateBiddingSeasonalityAdjustmentsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingSeasonalityAdjustmentsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingSeasonalityAdjustmentsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsRequest;

                        /**
                         * Creates a plain object from a MutateBiddingSeasonalityAdjustmentsRequest message. Also converts values to other types if specified.
                         * @param message MutateBiddingSeasonalityAdjustmentsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingSeasonalityAdjustmentsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingSeasonalityAdjustmentsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BiddingSeasonalityAdjustmentOperation. */
                    interface IBiddingSeasonalityAdjustmentOperation {

                        /** BiddingSeasonalityAdjustmentOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingSeasonalityAdjustmentOperation create */
                        create?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);

                        /** BiddingSeasonalityAdjustmentOperation update */
                        update?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);

                        /** BiddingSeasonalityAdjustmentOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BiddingSeasonalityAdjustmentOperation. */
                    class BiddingSeasonalityAdjustmentOperation implements IBiddingSeasonalityAdjustmentOperation {

                        /**
                         * Constructs a new BiddingSeasonalityAdjustmentOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation);

                        /** BiddingSeasonalityAdjustmentOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingSeasonalityAdjustmentOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);

                        /** BiddingSeasonalityAdjustmentOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);

                        /** BiddingSeasonalityAdjustmentOperation remove. */
                        public remove?: (string|null);

                        /** BiddingSeasonalityAdjustmentOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new BiddingSeasonalityAdjustmentOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingSeasonalityAdjustmentOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation): google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentOperation;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustmentOperation message. Does not implicitly {@link google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentOperation.verify|verify} messages.
                         * @param message BiddingSeasonalityAdjustmentOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustmentOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentOperation.verify|verify} messages.
                         * @param message BiddingSeasonalityAdjustmentOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBiddingSeasonalityAdjustmentOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingSeasonalityAdjustmentOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingSeasonalityAdjustmentOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentOperation;

                        /**
                         * Decodes a BiddingSeasonalityAdjustmentOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingSeasonalityAdjustmentOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentOperation;

                        /**
                         * Verifies a BiddingSeasonalityAdjustmentOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingSeasonalityAdjustmentOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingSeasonalityAdjustmentOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentOperation;

                        /**
                         * Creates a plain object from a BiddingSeasonalityAdjustmentOperation message. Also converts values to other types if specified.
                         * @param message BiddingSeasonalityAdjustmentOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BiddingSeasonalityAdjustmentOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingSeasonalityAdjustmentOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingSeasonalityAdjustmentOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBiddingSeasonalityAdjustmentsResponse. */
                    interface IMutateBiddingSeasonalityAdjustmentsResponse {

                        /** MutateBiddingSeasonalityAdjustmentsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingSeasonalityAdjustmentsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult[]|null);
                    }

                    /** Represents a MutateBiddingSeasonalityAdjustmentsResponse. */
                    class MutateBiddingSeasonalityAdjustmentsResponse implements IMutateBiddingSeasonalityAdjustmentsResponse {

                        /**
                         * Constructs a new MutateBiddingSeasonalityAdjustmentsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResponse);

                        /** MutateBiddingSeasonalityAdjustmentsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingSeasonalityAdjustmentsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult[];

                        /**
                         * Creates a new MutateBiddingSeasonalityAdjustmentsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingSeasonalityAdjustmentsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResponse): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse.verify|verify} messages.
                         * @param message MutateBiddingSeasonalityAdjustmentsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse.verify|verify} messages.
                         * @param message MutateBiddingSeasonalityAdjustmentsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingSeasonalityAdjustmentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingSeasonalityAdjustmentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse;

                        /**
                         * Verifies a MutateBiddingSeasonalityAdjustmentsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingSeasonalityAdjustmentsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingSeasonalityAdjustmentsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse;

                        /**
                         * Creates a plain object from a MutateBiddingSeasonalityAdjustmentsResponse message. Also converts values to other types if specified.
                         * @param message MutateBiddingSeasonalityAdjustmentsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingSeasonalityAdjustmentsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingSeasonalityAdjustmentsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBiddingSeasonalityAdjustmentsResult. */
                    interface IMutateBiddingSeasonalityAdjustmentsResult {

                        /** MutateBiddingSeasonalityAdjustmentsResult resource_name */
                        resource_name?: (string|null);

                        /** MutateBiddingSeasonalityAdjustmentsResult bidding_seasonality_adjustment */
                        bidding_seasonality_adjustment?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);
                    }

                    /** Represents a MutateBiddingSeasonalityAdjustmentsResult. */
                    class MutateBiddingSeasonalityAdjustmentsResult implements IMutateBiddingSeasonalityAdjustmentsResult {

                        /**
                         * Constructs a new MutateBiddingSeasonalityAdjustmentsResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult);

                        /** MutateBiddingSeasonalityAdjustmentsResult resource_name. */
                        public resource_name: string;

                        /** MutateBiddingSeasonalityAdjustmentsResult bidding_seasonality_adjustment. */
                        public bidding_seasonality_adjustment?: (google.ads.googleads.v23.resources.IBiddingSeasonalityAdjustment|null);

                        /**
                         * Creates a new MutateBiddingSeasonalityAdjustmentsResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingSeasonalityAdjustmentsResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResult;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResult.verify|verify} messages.
                         * @param message MutateBiddingSeasonalityAdjustmentsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResult.verify|verify} messages.
                         * @param message MutateBiddingSeasonalityAdjustmentsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingSeasonalityAdjustmentsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingSeasonalityAdjustmentsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResult;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingSeasonalityAdjustmentsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResult;

                        /**
                         * Verifies a MutateBiddingSeasonalityAdjustmentsResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingSeasonalityAdjustmentsResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingSeasonalityAdjustmentsResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResult;

                        /**
                         * Creates a plain object from a MutateBiddingSeasonalityAdjustmentsResult message. Also converts values to other types if specified.
                         * @param message MutateBiddingSeasonalityAdjustmentsResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingSeasonalityAdjustmentsResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingSeasonalityAdjustmentsResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingSeasonalityAdjustmentsResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a BiddingStrategyService */
                    class BiddingStrategyService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BiddingStrategyService 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 BiddingStrategyService 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): BiddingStrategyService;

                        /**
                         * Calls MutateBiddingStrategies.
                         * @param request MutateBiddingStrategiesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateBiddingStrategiesResponse
                         */
                        public mutateBiddingStrategies(request: google.ads.googleads.v23.services.IMutateBiddingStrategiesRequest, callback: google.ads.googleads.v23.services.BiddingStrategyService.MutateBiddingStrategiesCallback): void;

                        /**
                         * Calls MutateBiddingStrategies.
                         * @param request MutateBiddingStrategiesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBiddingStrategies(request: google.ads.googleads.v23.services.IMutateBiddingStrategiesRequest): Promise<google.ads.googleads.v23.services.MutateBiddingStrategiesResponse>;
                    }

                    namespace BiddingStrategyService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BiddingStrategyService|mutateBiddingStrategies}.
                         * @param error Error, if any
                         * @param [response] MutateBiddingStrategiesResponse
                         */
                        type MutateBiddingStrategiesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateBiddingStrategiesResponse) => void;
                    }

                    /** Properties of a MutateBiddingStrategiesRequest. */
                    interface IMutateBiddingStrategiesRequest {

                        /** MutateBiddingStrategiesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBiddingStrategiesRequest operations */
                        operations?: (google.ads.googleads.v23.services.IBiddingStrategyOperation[]|null);

                        /** MutateBiddingStrategiesRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateBiddingStrategiesRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateBiddingStrategiesRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateBiddingStrategiesRequest. */
                    class MutateBiddingStrategiesRequest implements IMutateBiddingStrategiesRequest {

                        /**
                         * Constructs a new MutateBiddingStrategiesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingStrategiesRequest);

                        /** MutateBiddingStrategiesRequest customer_id. */
                        public customer_id: string;

                        /** MutateBiddingStrategiesRequest operations. */
                        public operations: google.ads.googleads.v23.services.IBiddingStrategyOperation[];

                        /** MutateBiddingStrategiesRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateBiddingStrategiesRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateBiddingStrategiesRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateBiddingStrategiesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingStrategiesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingStrategiesRequest): google.ads.googleads.v23.services.MutateBiddingStrategiesRequest;

                        /**
                         * Encodes the specified MutateBiddingStrategiesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingStrategiesRequest.verify|verify} messages.
                         * @param message MutateBiddingStrategiesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingStrategiesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingStrategiesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingStrategiesRequest.verify|verify} messages.
                         * @param message MutateBiddingStrategiesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingStrategiesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingStrategiesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingStrategiesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingStrategiesRequest;

                        /**
                         * Decodes a MutateBiddingStrategiesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingStrategiesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingStrategiesRequest;

                        /**
                         * Verifies a MutateBiddingStrategiesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingStrategiesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingStrategiesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingStrategiesRequest;

                        /**
                         * Creates a plain object from a MutateBiddingStrategiesRequest message. Also converts values to other types if specified.
                         * @param message MutateBiddingStrategiesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingStrategiesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingStrategiesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingStrategiesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BiddingStrategyOperation. */
                    interface IBiddingStrategyOperation {

                        /** BiddingStrategyOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingStrategyOperation create */
                        create?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);

                        /** BiddingStrategyOperation update */
                        update?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);

                        /** BiddingStrategyOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BiddingStrategyOperation. */
                    class BiddingStrategyOperation implements IBiddingStrategyOperation {

                        /**
                         * Constructs a new BiddingStrategyOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBiddingStrategyOperation);

                        /** BiddingStrategyOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingStrategyOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);

                        /** BiddingStrategyOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);

                        /** BiddingStrategyOperation remove. */
                        public remove?: (string|null);

                        /** BiddingStrategyOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new BiddingStrategyOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddingStrategyOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBiddingStrategyOperation): google.ads.googleads.v23.services.BiddingStrategyOperation;

                        /**
                         * Encodes the specified BiddingStrategyOperation message. Does not implicitly {@link google.ads.googleads.v23.services.BiddingStrategyOperation.verify|verify} messages.
                         * @param message BiddingStrategyOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBiddingStrategyOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BiddingStrategyOperation.verify|verify} messages.
                         * @param message BiddingStrategyOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBiddingStrategyOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddingStrategyOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BiddingStrategyOperation;

                        /**
                         * Decodes a BiddingStrategyOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddingStrategyOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BiddingStrategyOperation;

                        /**
                         * Verifies a BiddingStrategyOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddingStrategyOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BiddingStrategyOperation;

                        /**
                         * Creates a plain object from a BiddingStrategyOperation message. Also converts values to other types if specified.
                         * @param message BiddingStrategyOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BiddingStrategyOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddingStrategyOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBiddingStrategiesResponse. */
                    interface IMutateBiddingStrategiesResponse {

                        /** MutateBiddingStrategiesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingStrategiesResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateBiddingStrategyResult[]|null);
                    }

                    /** Represents a MutateBiddingStrategiesResponse. */
                    class MutateBiddingStrategiesResponse implements IMutateBiddingStrategiesResponse {

                        /**
                         * Constructs a new MutateBiddingStrategiesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingStrategiesResponse);

                        /** MutateBiddingStrategiesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingStrategiesResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateBiddingStrategyResult[];

                        /**
                         * Creates a new MutateBiddingStrategiesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingStrategiesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingStrategiesResponse): google.ads.googleads.v23.services.MutateBiddingStrategiesResponse;

                        /**
                         * Encodes the specified MutateBiddingStrategiesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingStrategiesResponse.verify|verify} messages.
                         * @param message MutateBiddingStrategiesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingStrategiesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingStrategiesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingStrategiesResponse.verify|verify} messages.
                         * @param message MutateBiddingStrategiesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingStrategiesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingStrategiesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingStrategiesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingStrategiesResponse;

                        /**
                         * Decodes a MutateBiddingStrategiesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingStrategiesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingStrategiesResponse;

                        /**
                         * Verifies a MutateBiddingStrategiesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingStrategiesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingStrategiesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingStrategiesResponse;

                        /**
                         * Creates a plain object from a MutateBiddingStrategiesResponse message. Also converts values to other types if specified.
                         * @param message MutateBiddingStrategiesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingStrategiesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingStrategiesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingStrategiesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBiddingStrategyResult. */
                    interface IMutateBiddingStrategyResult {

                        /** MutateBiddingStrategyResult resource_name */
                        resource_name?: (string|null);

                        /** MutateBiddingStrategyResult bidding_strategy */
                        bidding_strategy?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);
                    }

                    /** Represents a MutateBiddingStrategyResult. */
                    class MutateBiddingStrategyResult implements IMutateBiddingStrategyResult {

                        /**
                         * Constructs a new MutateBiddingStrategyResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBiddingStrategyResult);

                        /** MutateBiddingStrategyResult resource_name. */
                        public resource_name: string;

                        /** MutateBiddingStrategyResult bidding_strategy. */
                        public bidding_strategy?: (google.ads.googleads.v23.resources.IBiddingStrategy|null);

                        /**
                         * Creates a new MutateBiddingStrategyResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBiddingStrategyResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBiddingStrategyResult): google.ads.googleads.v23.services.MutateBiddingStrategyResult;

                        /**
                         * Encodes the specified MutateBiddingStrategyResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingStrategyResult.verify|verify} messages.
                         * @param message MutateBiddingStrategyResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBiddingStrategyResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingStrategyResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBiddingStrategyResult.verify|verify} messages.
                         * @param message MutateBiddingStrategyResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBiddingStrategyResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingStrategyResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBiddingStrategyResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBiddingStrategyResult;

                        /**
                         * Decodes a MutateBiddingStrategyResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBiddingStrategyResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBiddingStrategyResult;

                        /**
                         * Verifies a MutateBiddingStrategyResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingStrategyResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBiddingStrategyResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBiddingStrategyResult;

                        /**
                         * Creates a plain object from a MutateBiddingStrategyResult message. Also converts values to other types if specified.
                         * @param message MutateBiddingStrategyResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBiddingStrategyResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingStrategyResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBiddingStrategyResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignAssetService */
                    class CampaignAssetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignAssetService 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 CampaignAssetService 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): CampaignAssetService;

                        /**
                         * Calls MutateCampaignAssets.
                         * @param request MutateCampaignAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignAssetsResponse
                         */
                        public mutateCampaignAssets(request: google.ads.googleads.v23.services.IMutateCampaignAssetsRequest, callback: google.ads.googleads.v23.services.CampaignAssetService.MutateCampaignAssetsCallback): void;

                        /**
                         * Calls MutateCampaignAssets.
                         * @param request MutateCampaignAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignAssets(request: google.ads.googleads.v23.services.IMutateCampaignAssetsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignAssetsResponse>;
                    }

                    namespace CampaignAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignAssetService|mutateCampaignAssets}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignAssetsResponse
                         */
                        type MutateCampaignAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignAssetsResponse) => void;
                    }

                    /** Properties of a MutateCampaignAssetsRequest. */
                    interface IMutateCampaignAssetsRequest {

                        /** MutateCampaignAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignAssetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignAssetOperation[]|null);

                        /** MutateCampaignAssetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignAssetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignAssetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignAssetsRequest. */
                    class MutateCampaignAssetsRequest implements IMutateCampaignAssetsRequest {

                        /**
                         * Constructs a new MutateCampaignAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetsRequest);

                        /** MutateCampaignAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignAssetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignAssetOperation[];

                        /** MutateCampaignAssetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignAssetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignAssetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetsRequest): google.ads.googleads.v23.services.MutateCampaignAssetsRequest;

                        /**
                         * Encodes the specified MutateCampaignAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetsRequest.verify|verify} messages.
                         * @param message MutateCampaignAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetsRequest.verify|verify} messages.
                         * @param message MutateCampaignAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignAssetsRequest;

                        /**
                         * Decodes a MutateCampaignAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignAssetsRequest;

                        /**
                         * Verifies a MutateCampaignAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignAssetsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignAssetsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignAssetOperation. */
                    interface ICampaignAssetOperation {

                        /** CampaignAssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignAssetOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                        /** CampaignAssetOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                        /** CampaignAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignAssetOperation. */
                    class CampaignAssetOperation implements ICampaignAssetOperation {

                        /**
                         * Constructs a new CampaignAssetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignAssetOperation);

                        /** CampaignAssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignAssetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                        /** CampaignAssetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                        /** CampaignAssetOperation remove. */
                        public remove?: (string|null);

                        /** CampaignAssetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignAssetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignAssetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignAssetOperation): google.ads.googleads.v23.services.CampaignAssetOperation;

                        /**
                         * Encodes the specified CampaignAssetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignAssetOperation.verify|verify} messages.
                         * @param message CampaignAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignAssetOperation.verify|verify} messages.
                         * @param message CampaignAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAssetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignAssetOperation;

                        /**
                         * Decodes a CampaignAssetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignAssetOperation;

                        /**
                         * Verifies a CampaignAssetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignAssetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignAssetOperation;

                        /**
                         * Creates a plain object from a CampaignAssetOperation message. Also converts values to other types if specified.
                         * @param message CampaignAssetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignAssetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignAssetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignAssetsResponse. */
                    interface IMutateCampaignAssetsResponse {

                        /** MutateCampaignAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignAssetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignAssetResult[]|null);
                    }

                    /** Represents a MutateCampaignAssetsResponse. */
                    class MutateCampaignAssetsResponse implements IMutateCampaignAssetsResponse {

                        /**
                         * Constructs a new MutateCampaignAssetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetsResponse);

                        /** MutateCampaignAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignAssetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignAssetResult[];

                        /**
                         * Creates a new MutateCampaignAssetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignAssetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetsResponse): google.ads.googleads.v23.services.MutateCampaignAssetsResponse;

                        /**
                         * Encodes the specified MutateCampaignAssetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetsResponse.verify|verify} messages.
                         * @param message MutateCampaignAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetsResponse.verify|verify} messages.
                         * @param message MutateCampaignAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignAssetsResponse;

                        /**
                         * Decodes a MutateCampaignAssetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignAssetsResponse;

                        /**
                         * Verifies a MutateCampaignAssetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignAssetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignAssetsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignAssetsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignAssetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignAssetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignAssetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignAssetResult. */
                    interface IMutateCampaignAssetResult {

                        /** MutateCampaignAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignAssetResult campaign_asset */
                        campaign_asset?: (google.ads.googleads.v23.resources.ICampaignAsset|null);
                    }

                    /** Represents a MutateCampaignAssetResult. */
                    class MutateCampaignAssetResult implements IMutateCampaignAssetResult {

                        /**
                         * Constructs a new MutateCampaignAssetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetResult);

                        /** MutateCampaignAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignAssetResult campaign_asset. */
                        public campaign_asset?: (google.ads.googleads.v23.resources.ICampaignAsset|null);

                        /**
                         * Creates a new MutateCampaignAssetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignAssetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetResult): google.ads.googleads.v23.services.MutateCampaignAssetResult;

                        /**
                         * Encodes the specified MutateCampaignAssetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetResult.verify|verify} messages.
                         * @param message MutateCampaignAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetResult.verify|verify} messages.
                         * @param message MutateCampaignAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignAssetResult;

                        /**
                         * Decodes a MutateCampaignAssetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignAssetResult;

                        /**
                         * Verifies a MutateCampaignAssetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignAssetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignAssetResult;

                        /**
                         * Creates a plain object from a MutateCampaignAssetResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignAssetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignAssetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignAssetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignAssetSetService */
                    class CampaignAssetSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignAssetSetService 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 CampaignAssetSetService 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): CampaignAssetSetService;

                        /**
                         * Calls MutateCampaignAssetSets.
                         * @param request MutateCampaignAssetSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignAssetSetsResponse
                         */
                        public mutateCampaignAssetSets(request: google.ads.googleads.v23.services.IMutateCampaignAssetSetsRequest, callback: google.ads.googleads.v23.services.CampaignAssetSetService.MutateCampaignAssetSetsCallback): void;

                        /**
                         * Calls MutateCampaignAssetSets.
                         * @param request MutateCampaignAssetSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignAssetSets(request: google.ads.googleads.v23.services.IMutateCampaignAssetSetsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse>;
                    }

                    namespace CampaignAssetSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignAssetSetService|mutateCampaignAssetSets}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignAssetSetsResponse
                         */
                        type MutateCampaignAssetSetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse) => void;
                    }

                    /** Properties of a MutateCampaignAssetSetsRequest. */
                    interface IMutateCampaignAssetSetsRequest {

                        /** MutateCampaignAssetSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignAssetSetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignAssetSetOperation[]|null);

                        /** MutateCampaignAssetSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignAssetSetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignAssetSetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignAssetSetsRequest. */
                    class MutateCampaignAssetSetsRequest implements IMutateCampaignAssetSetsRequest {

                        /**
                         * Constructs a new MutateCampaignAssetSetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetSetsRequest);

                        /** MutateCampaignAssetSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignAssetSetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignAssetSetOperation[];

                        /** MutateCampaignAssetSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignAssetSetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignAssetSetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignAssetSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignAssetSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetSetsRequest): google.ads.googleads.v23.services.MutateCampaignAssetSetsRequest;

                        /**
                         * Encodes the specified MutateCampaignAssetSetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetSetsRequest.verify|verify} messages.
                         * @param message MutateCampaignAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetSetsRequest.verify|verify} messages.
                         * @param message MutateCampaignAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetSetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignAssetSetsRequest;

                        /**
                         * Decodes a MutateCampaignAssetSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignAssetSetsRequest;

                        /**
                         * Verifies a MutateCampaignAssetSetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignAssetSetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignAssetSetsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignAssetSetsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignAssetSetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignAssetSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignAssetSetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignAssetSetOperation. */
                    interface ICampaignAssetSetOperation {

                        /** CampaignAssetSetOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);

                        /** CampaignAssetSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignAssetSetOperation. */
                    class CampaignAssetSetOperation implements ICampaignAssetSetOperation {

                        /**
                         * Constructs a new CampaignAssetSetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignAssetSetOperation);

                        /** CampaignAssetSetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);

                        /** CampaignAssetSetOperation remove. */
                        public remove?: (string|null);

                        /** CampaignAssetSetOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CampaignAssetSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignAssetSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignAssetSetOperation): google.ads.googleads.v23.services.CampaignAssetSetOperation;

                        /**
                         * Encodes the specified CampaignAssetSetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignAssetSetOperation.verify|verify} messages.
                         * @param message CampaignAssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAssetSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignAssetSetOperation.verify|verify} messages.
                         * @param message CampaignAssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAssetSetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignAssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignAssetSetOperation;

                        /**
                         * Decodes a CampaignAssetSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignAssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignAssetSetOperation;

                        /**
                         * Verifies a CampaignAssetSetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAssetSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignAssetSetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignAssetSetOperation;

                        /**
                         * Creates a plain object from a CampaignAssetSetOperation message. Also converts values to other types if specified.
                         * @param message CampaignAssetSetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignAssetSetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAssetSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignAssetSetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignAssetSetsResponse. */
                    interface IMutateCampaignAssetSetsResponse {

                        /** MutateCampaignAssetSetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignAssetSetResult[]|null);

                        /** MutateCampaignAssetSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateCampaignAssetSetsResponse. */
                    class MutateCampaignAssetSetsResponse implements IMutateCampaignAssetSetsResponse {

                        /**
                         * Constructs a new MutateCampaignAssetSetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetSetsResponse);

                        /** MutateCampaignAssetSetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignAssetSetResult[];

                        /** MutateCampaignAssetSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateCampaignAssetSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignAssetSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetSetsResponse): google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse;

                        /**
                         * Encodes the specified MutateCampaignAssetSetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse.verify|verify} messages.
                         * @param message MutateCampaignAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse.verify|verify} messages.
                         * @param message MutateCampaignAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetSetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse;

                        /**
                         * Decodes a MutateCampaignAssetSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse;

                        /**
                         * Verifies a MutateCampaignAssetSetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignAssetSetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignAssetSetsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignAssetSetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignAssetSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignAssetSetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignAssetSetResult. */
                    interface IMutateCampaignAssetSetResult {

                        /** MutateCampaignAssetSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignAssetSetResult campaign_asset_set */
                        campaign_asset_set?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);
                    }

                    /** Represents a MutateCampaignAssetSetResult. */
                    class MutateCampaignAssetSetResult implements IMutateCampaignAssetSetResult {

                        /**
                         * Constructs a new MutateCampaignAssetSetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetSetResult);

                        /** MutateCampaignAssetSetResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignAssetSetResult campaign_asset_set. */
                        public campaign_asset_set?: (google.ads.googleads.v23.resources.ICampaignAssetSet|null);

                        /**
                         * Creates a new MutateCampaignAssetSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignAssetSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignAssetSetResult): google.ads.googleads.v23.services.MutateCampaignAssetSetResult;

                        /**
                         * Encodes the specified MutateCampaignAssetSetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetSetResult.verify|verify} messages.
                         * @param message MutateCampaignAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignAssetSetResult.verify|verify} messages.
                         * @param message MutateCampaignAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetSetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignAssetSetResult;

                        /**
                         * Decodes a MutateCampaignAssetSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignAssetSetResult;

                        /**
                         * Verifies a MutateCampaignAssetSetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignAssetSetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignAssetSetResult;

                        /**
                         * Creates a plain object from a MutateCampaignAssetSetResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignAssetSetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignAssetSetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignAssetSetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignBidModifierService */
                    class CampaignBidModifierService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignBidModifierService 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 CampaignBidModifierService 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): CampaignBidModifierService;

                        /**
                         * Calls MutateCampaignBidModifiers.
                         * @param request MutateCampaignBidModifiersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignBidModifiersResponse
                         */
                        public mutateCampaignBidModifiers(request: google.ads.googleads.v23.services.IMutateCampaignBidModifiersRequest, callback: google.ads.googleads.v23.services.CampaignBidModifierService.MutateCampaignBidModifiersCallback): void;

                        /**
                         * Calls MutateCampaignBidModifiers.
                         * @param request MutateCampaignBidModifiersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignBidModifiers(request: google.ads.googleads.v23.services.IMutateCampaignBidModifiersRequest): Promise<google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse>;
                    }

                    namespace CampaignBidModifierService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignBidModifierService|mutateCampaignBidModifiers}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignBidModifiersResponse
                         */
                        type MutateCampaignBidModifiersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse) => void;
                    }

                    /** Properties of a MutateCampaignBidModifiersRequest. */
                    interface IMutateCampaignBidModifiersRequest {

                        /** MutateCampaignBidModifiersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignBidModifiersRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignBidModifierOperation[]|null);

                        /** MutateCampaignBidModifiersRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignBidModifiersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignBidModifiersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignBidModifiersRequest. */
                    class MutateCampaignBidModifiersRequest implements IMutateCampaignBidModifiersRequest {

                        /**
                         * Constructs a new MutateCampaignBidModifiersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignBidModifiersRequest);

                        /** MutateCampaignBidModifiersRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignBidModifiersRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignBidModifierOperation[];

                        /** MutateCampaignBidModifiersRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignBidModifiersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignBidModifiersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignBidModifiersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignBidModifiersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignBidModifiersRequest): google.ads.googleads.v23.services.MutateCampaignBidModifiersRequest;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBidModifiersRequest.verify|verify} messages.
                         * @param message MutateCampaignBidModifiersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignBidModifiersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBidModifiersRequest.verify|verify} messages.
                         * @param message MutateCampaignBidModifiersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignBidModifiersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBidModifiersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignBidModifiersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignBidModifiersRequest;

                        /**
                         * Decodes a MutateCampaignBidModifiersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignBidModifiersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignBidModifiersRequest;

                        /**
                         * Verifies a MutateCampaignBidModifiersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBidModifiersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignBidModifiersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignBidModifiersRequest;

                        /**
                         * Creates a plain object from a MutateCampaignBidModifiersRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignBidModifiersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignBidModifiersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBidModifiersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignBidModifiersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignBidModifierOperation. */
                    interface ICampaignBidModifierOperation {

                        /** CampaignBidModifierOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBidModifierOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);

                        /** CampaignBidModifierOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);

                        /** CampaignBidModifierOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignBidModifierOperation. */
                    class CampaignBidModifierOperation implements ICampaignBidModifierOperation {

                        /**
                         * Constructs a new CampaignBidModifierOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignBidModifierOperation);

                        /** CampaignBidModifierOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBidModifierOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);

                        /** CampaignBidModifierOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);

                        /** CampaignBidModifierOperation remove. */
                        public remove?: (string|null);

                        /** CampaignBidModifierOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignBidModifierOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignBidModifierOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignBidModifierOperation): google.ads.googleads.v23.services.CampaignBidModifierOperation;

                        /**
                         * Encodes the specified CampaignBidModifierOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignBidModifierOperation.verify|verify} messages.
                         * @param message CampaignBidModifierOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignBidModifierOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBidModifierOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignBidModifierOperation.verify|verify} messages.
                         * @param message CampaignBidModifierOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignBidModifierOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBidModifierOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignBidModifierOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignBidModifierOperation;

                        /**
                         * Decodes a CampaignBidModifierOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignBidModifierOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignBidModifierOperation;

                        /**
                         * Verifies a CampaignBidModifierOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBidModifierOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignBidModifierOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignBidModifierOperation;

                        /**
                         * Creates a plain object from a CampaignBidModifierOperation message. Also converts values to other types if specified.
                         * @param message CampaignBidModifierOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignBidModifierOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBidModifierOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignBidModifierOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignBidModifiersResponse. */
                    interface IMutateCampaignBidModifiersResponse {

                        /** MutateCampaignBidModifiersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBidModifiersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignBidModifierResult[]|null);
                    }

                    /** Represents a MutateCampaignBidModifiersResponse. */
                    class MutateCampaignBidModifiersResponse implements IMutateCampaignBidModifiersResponse {

                        /**
                         * Constructs a new MutateCampaignBidModifiersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignBidModifiersResponse);

                        /** MutateCampaignBidModifiersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBidModifiersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignBidModifierResult[];

                        /**
                         * Creates a new MutateCampaignBidModifiersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignBidModifiersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignBidModifiersResponse): google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse.verify|verify} messages.
                         * @param message MutateCampaignBidModifiersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignBidModifiersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse.verify|verify} messages.
                         * @param message MutateCampaignBidModifiersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignBidModifiersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBidModifiersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignBidModifiersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse;

                        /**
                         * Decodes a MutateCampaignBidModifiersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignBidModifiersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse;

                        /**
                         * Verifies a MutateCampaignBidModifiersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBidModifiersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignBidModifiersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse;

                        /**
                         * Creates a plain object from a MutateCampaignBidModifiersResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignBidModifiersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignBidModifiersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBidModifiersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignBidModifiersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignBidModifierResult. */
                    interface IMutateCampaignBidModifierResult {

                        /** MutateCampaignBidModifierResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignBidModifierResult campaign_bid_modifier */
                        campaign_bid_modifier?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);
                    }

                    /** Represents a MutateCampaignBidModifierResult. */
                    class MutateCampaignBidModifierResult implements IMutateCampaignBidModifierResult {

                        /**
                         * Constructs a new MutateCampaignBidModifierResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignBidModifierResult);

                        /** MutateCampaignBidModifierResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignBidModifierResult campaign_bid_modifier. */
                        public campaign_bid_modifier?: (google.ads.googleads.v23.resources.ICampaignBidModifier|null);

                        /**
                         * Creates a new MutateCampaignBidModifierResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignBidModifierResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignBidModifierResult): google.ads.googleads.v23.services.MutateCampaignBidModifierResult;

                        /**
                         * Encodes the specified MutateCampaignBidModifierResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBidModifierResult.verify|verify} messages.
                         * @param message MutateCampaignBidModifierResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignBidModifierResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBidModifierResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBidModifierResult.verify|verify} messages.
                         * @param message MutateCampaignBidModifierResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignBidModifierResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBidModifierResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignBidModifierResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignBidModifierResult;

                        /**
                         * Decodes a MutateCampaignBidModifierResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignBidModifierResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignBidModifierResult;

                        /**
                         * Verifies a MutateCampaignBidModifierResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBidModifierResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignBidModifierResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignBidModifierResult;

                        /**
                         * Creates a plain object from a MutateCampaignBidModifierResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignBidModifierResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignBidModifierResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBidModifierResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignBidModifierResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignBudgetService */
                    class CampaignBudgetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignBudgetService 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 CampaignBudgetService 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): CampaignBudgetService;

                        /**
                         * Calls MutateCampaignBudgets.
                         * @param request MutateCampaignBudgetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignBudgetsResponse
                         */
                        public mutateCampaignBudgets(request: google.ads.googleads.v23.services.IMutateCampaignBudgetsRequest, callback: google.ads.googleads.v23.services.CampaignBudgetService.MutateCampaignBudgetsCallback): void;

                        /**
                         * Calls MutateCampaignBudgets.
                         * @param request MutateCampaignBudgetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignBudgets(request: google.ads.googleads.v23.services.IMutateCampaignBudgetsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignBudgetsResponse>;
                    }

                    namespace CampaignBudgetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignBudgetService|mutateCampaignBudgets}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignBudgetsResponse
                         */
                        type MutateCampaignBudgetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignBudgetsResponse) => void;
                    }

                    /** Properties of a MutateCampaignBudgetsRequest. */
                    interface IMutateCampaignBudgetsRequest {

                        /** MutateCampaignBudgetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignBudgetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignBudgetOperation[]|null);

                        /** MutateCampaignBudgetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignBudgetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignBudgetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignBudgetsRequest. */
                    class MutateCampaignBudgetsRequest implements IMutateCampaignBudgetsRequest {

                        /**
                         * Constructs a new MutateCampaignBudgetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignBudgetsRequest);

                        /** MutateCampaignBudgetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignBudgetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignBudgetOperation[];

                        /** MutateCampaignBudgetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignBudgetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignBudgetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignBudgetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignBudgetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignBudgetsRequest): google.ads.googleads.v23.services.MutateCampaignBudgetsRequest;

                        /**
                         * Encodes the specified MutateCampaignBudgetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBudgetsRequest.verify|verify} messages.
                         * @param message MutateCampaignBudgetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignBudgetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBudgetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBudgetsRequest.verify|verify} messages.
                         * @param message MutateCampaignBudgetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignBudgetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBudgetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignBudgetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignBudgetsRequest;

                        /**
                         * Decodes a MutateCampaignBudgetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignBudgetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignBudgetsRequest;

                        /**
                         * Verifies a MutateCampaignBudgetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBudgetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignBudgetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignBudgetsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignBudgetsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignBudgetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignBudgetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBudgetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignBudgetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignBudgetOperation. */
                    interface ICampaignBudgetOperation {

                        /** CampaignBudgetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBudgetOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                        /** CampaignBudgetOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                        /** CampaignBudgetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignBudgetOperation. */
                    class CampaignBudgetOperation implements ICampaignBudgetOperation {

                        /**
                         * Constructs a new CampaignBudgetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignBudgetOperation);

                        /** CampaignBudgetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBudgetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                        /** CampaignBudgetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                        /** CampaignBudgetOperation remove. */
                        public remove?: (string|null);

                        /** CampaignBudgetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignBudgetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignBudgetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignBudgetOperation): google.ads.googleads.v23.services.CampaignBudgetOperation;

                        /**
                         * Encodes the specified CampaignBudgetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignBudgetOperation.verify|verify} messages.
                         * @param message CampaignBudgetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignBudgetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBudgetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignBudgetOperation.verify|verify} messages.
                         * @param message CampaignBudgetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignBudgetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBudgetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignBudgetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignBudgetOperation;

                        /**
                         * Decodes a CampaignBudgetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignBudgetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignBudgetOperation;

                        /**
                         * Verifies a CampaignBudgetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBudgetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignBudgetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignBudgetOperation;

                        /**
                         * Creates a plain object from a CampaignBudgetOperation message. Also converts values to other types if specified.
                         * @param message CampaignBudgetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignBudgetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBudgetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignBudgetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignBudgetsResponse. */
                    interface IMutateCampaignBudgetsResponse {

                        /** MutateCampaignBudgetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBudgetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignBudgetResult[]|null);
                    }

                    /** Represents a MutateCampaignBudgetsResponse. */
                    class MutateCampaignBudgetsResponse implements IMutateCampaignBudgetsResponse {

                        /**
                         * Constructs a new MutateCampaignBudgetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignBudgetsResponse);

                        /** MutateCampaignBudgetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBudgetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignBudgetResult[];

                        /**
                         * Creates a new MutateCampaignBudgetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignBudgetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignBudgetsResponse): google.ads.googleads.v23.services.MutateCampaignBudgetsResponse;

                        /**
                         * Encodes the specified MutateCampaignBudgetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBudgetsResponse.verify|verify} messages.
                         * @param message MutateCampaignBudgetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignBudgetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBudgetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBudgetsResponse.verify|verify} messages.
                         * @param message MutateCampaignBudgetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignBudgetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBudgetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignBudgetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignBudgetsResponse;

                        /**
                         * Decodes a MutateCampaignBudgetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignBudgetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignBudgetsResponse;

                        /**
                         * Verifies a MutateCampaignBudgetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBudgetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignBudgetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignBudgetsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignBudgetsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignBudgetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignBudgetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBudgetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignBudgetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignBudgetResult. */
                    interface IMutateCampaignBudgetResult {

                        /** MutateCampaignBudgetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignBudgetResult campaign_budget */
                        campaign_budget?: (google.ads.googleads.v23.resources.ICampaignBudget|null);
                    }

                    /** Represents a MutateCampaignBudgetResult. */
                    class MutateCampaignBudgetResult implements IMutateCampaignBudgetResult {

                        /**
                         * Constructs a new MutateCampaignBudgetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignBudgetResult);

                        /** MutateCampaignBudgetResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignBudgetResult campaign_budget. */
                        public campaign_budget?: (google.ads.googleads.v23.resources.ICampaignBudget|null);

                        /**
                         * Creates a new MutateCampaignBudgetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignBudgetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignBudgetResult): google.ads.googleads.v23.services.MutateCampaignBudgetResult;

                        /**
                         * Encodes the specified MutateCampaignBudgetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBudgetResult.verify|verify} messages.
                         * @param message MutateCampaignBudgetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignBudgetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBudgetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignBudgetResult.verify|verify} messages.
                         * @param message MutateCampaignBudgetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignBudgetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBudgetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignBudgetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignBudgetResult;

                        /**
                         * Decodes a MutateCampaignBudgetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignBudgetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignBudgetResult;

                        /**
                         * Verifies a MutateCampaignBudgetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBudgetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignBudgetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignBudgetResult;

                        /**
                         * Creates a plain object from a MutateCampaignBudgetResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignBudgetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignBudgetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBudgetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignBudgetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignConversionGoalService */
                    class CampaignConversionGoalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignConversionGoalService 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 CampaignConversionGoalService 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): CampaignConversionGoalService;

                        /**
                         * Calls MutateCampaignConversionGoals.
                         * @param request MutateCampaignConversionGoalsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignConversionGoalsResponse
                         */
                        public mutateCampaignConversionGoals(request: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsRequest, callback: google.ads.googleads.v23.services.CampaignConversionGoalService.MutateCampaignConversionGoalsCallback): void;

                        /**
                         * Calls MutateCampaignConversionGoals.
                         * @param request MutateCampaignConversionGoalsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignConversionGoals(request: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse>;
                    }

                    namespace CampaignConversionGoalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignConversionGoalService|mutateCampaignConversionGoals}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignConversionGoalsResponse
                         */
                        type MutateCampaignConversionGoalsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse) => void;
                    }

                    /** Properties of a MutateCampaignConversionGoalsRequest. */
                    interface IMutateCampaignConversionGoalsRequest {

                        /** MutateCampaignConversionGoalsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignConversionGoalsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignConversionGoalOperation[]|null);

                        /** MutateCampaignConversionGoalsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCampaignConversionGoalsRequest. */
                    class MutateCampaignConversionGoalsRequest implements IMutateCampaignConversionGoalsRequest {

                        /**
                         * Constructs a new MutateCampaignConversionGoalsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsRequest);

                        /** MutateCampaignConversionGoalsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignConversionGoalsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignConversionGoalOperation[];

                        /** MutateCampaignConversionGoalsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCampaignConversionGoalsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignConversionGoalsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsRequest): google.ads.googleads.v23.services.MutateCampaignConversionGoalsRequest;

                        /**
                         * Encodes the specified MutateCampaignConversionGoalsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignConversionGoalsRequest.verify|verify} messages.
                         * @param message MutateCampaignConversionGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignConversionGoalsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignConversionGoalsRequest.verify|verify} messages.
                         * @param message MutateCampaignConversionGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignConversionGoalsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignConversionGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignConversionGoalsRequest;

                        /**
                         * Decodes a MutateCampaignConversionGoalsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignConversionGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignConversionGoalsRequest;

                        /**
                         * Verifies a MutateCampaignConversionGoalsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignConversionGoalsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignConversionGoalsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignConversionGoalsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignConversionGoalsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignConversionGoalsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignConversionGoalsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignConversionGoalsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignConversionGoalsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignConversionGoalOperation. */
                    interface ICampaignConversionGoalOperation {

                        /** CampaignConversionGoalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignConversionGoalOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignConversionGoal|null);
                    }

                    /** Represents a CampaignConversionGoalOperation. */
                    class CampaignConversionGoalOperation implements ICampaignConversionGoalOperation {

                        /**
                         * Constructs a new CampaignConversionGoalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignConversionGoalOperation);

                        /** CampaignConversionGoalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignConversionGoalOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignConversionGoal|null);

                        /** CampaignConversionGoalOperation operation. */
                        public operation?: "update";

                        /**
                         * Creates a new CampaignConversionGoalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignConversionGoalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignConversionGoalOperation): google.ads.googleads.v23.services.CampaignConversionGoalOperation;

                        /**
                         * Encodes the specified CampaignConversionGoalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignConversionGoalOperation.verify|verify} messages.
                         * @param message CampaignConversionGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignConversionGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignConversionGoalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignConversionGoalOperation.verify|verify} messages.
                         * @param message CampaignConversionGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignConversionGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignConversionGoalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignConversionGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignConversionGoalOperation;

                        /**
                         * Decodes a CampaignConversionGoalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignConversionGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignConversionGoalOperation;

                        /**
                         * Verifies a CampaignConversionGoalOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignConversionGoalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignConversionGoalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignConversionGoalOperation;

                        /**
                         * Creates a plain object from a CampaignConversionGoalOperation message. Also converts values to other types if specified.
                         * @param message CampaignConversionGoalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignConversionGoalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignConversionGoalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignConversionGoalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignConversionGoalsResponse. */
                    interface IMutateCampaignConversionGoalsResponse {

                        /** MutateCampaignConversionGoalsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult[]|null);
                    }

                    /** Represents a MutateCampaignConversionGoalsResponse. */
                    class MutateCampaignConversionGoalsResponse implements IMutateCampaignConversionGoalsResponse {

                        /**
                         * Constructs a new MutateCampaignConversionGoalsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsResponse);

                        /** MutateCampaignConversionGoalsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult[];

                        /**
                         * Creates a new MutateCampaignConversionGoalsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignConversionGoalsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsResponse): google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse;

                        /**
                         * Encodes the specified MutateCampaignConversionGoalsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse.verify|verify} messages.
                         * @param message MutateCampaignConversionGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignConversionGoalsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse.verify|verify} messages.
                         * @param message MutateCampaignConversionGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignConversionGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignConversionGoalsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignConversionGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse;

                        /**
                         * Decodes a MutateCampaignConversionGoalsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignConversionGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse;

                        /**
                         * Verifies a MutateCampaignConversionGoalsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignConversionGoalsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignConversionGoalsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignConversionGoalsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignConversionGoalsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignConversionGoalsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignConversionGoalsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignConversionGoalsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignConversionGoalResult. */
                    interface IMutateCampaignConversionGoalResult {

                        /** MutateCampaignConversionGoalResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCampaignConversionGoalResult. */
                    class MutateCampaignConversionGoalResult implements IMutateCampaignConversionGoalResult {

                        /**
                         * Constructs a new MutateCampaignConversionGoalResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult);

                        /** MutateCampaignConversionGoalResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCampaignConversionGoalResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignConversionGoalResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult): google.ads.googleads.v23.services.MutateCampaignConversionGoalResult;

                        /**
                         * Encodes the specified MutateCampaignConversionGoalResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignConversionGoalResult.verify|verify} messages.
                         * @param message MutateCampaignConversionGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignConversionGoalResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignConversionGoalResult.verify|verify} messages.
                         * @param message MutateCampaignConversionGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignConversionGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignConversionGoalResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignConversionGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignConversionGoalResult;

                        /**
                         * Decodes a MutateCampaignConversionGoalResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignConversionGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignConversionGoalResult;

                        /**
                         * Verifies a MutateCampaignConversionGoalResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignConversionGoalResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignConversionGoalResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignConversionGoalResult;

                        /**
                         * Creates a plain object from a MutateCampaignConversionGoalResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignConversionGoalResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignConversionGoalResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignConversionGoalResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignConversionGoalResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignCriterionService */
                    class CampaignCriterionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignCriterionService 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 CampaignCriterionService 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): CampaignCriterionService;

                        /**
                         * Calls MutateCampaignCriteria.
                         * @param request MutateCampaignCriteriaRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignCriteriaResponse
                         */
                        public mutateCampaignCriteria(request: google.ads.googleads.v23.services.IMutateCampaignCriteriaRequest, callback: google.ads.googleads.v23.services.CampaignCriterionService.MutateCampaignCriteriaCallback): void;

                        /**
                         * Calls MutateCampaignCriteria.
                         * @param request MutateCampaignCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignCriteria(request: google.ads.googleads.v23.services.IMutateCampaignCriteriaRequest): Promise<google.ads.googleads.v23.services.MutateCampaignCriteriaResponse>;
                    }

                    namespace CampaignCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignCriterionService|mutateCampaignCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignCriteriaResponse
                         */
                        type MutateCampaignCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignCriteriaResponse) => void;
                    }

                    /** Properties of a MutateCampaignCriteriaRequest. */
                    interface IMutateCampaignCriteriaRequest {

                        /** MutateCampaignCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignCriteriaRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignCriterionOperation[]|null);

                        /** MutateCampaignCriteriaRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignCriteriaRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignCriteriaRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignCriteriaRequest. */
                    class MutateCampaignCriteriaRequest implements IMutateCampaignCriteriaRequest {

                        /**
                         * Constructs a new MutateCampaignCriteriaRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignCriteriaRequest);

                        /** MutateCampaignCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignCriteriaRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignCriterionOperation[];

                        /** MutateCampaignCriteriaRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignCriteriaRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignCriteriaRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignCriteriaRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignCriteriaRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignCriteriaRequest): google.ads.googleads.v23.services.MutateCampaignCriteriaRequest;

                        /**
                         * Encodes the specified MutateCampaignCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCriteriaRequest.verify|verify} messages.
                         * @param message MutateCampaignCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCriteriaRequest.verify|verify} messages.
                         * @param message MutateCampaignCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCriteriaRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignCriteriaRequest;

                        /**
                         * Decodes a MutateCampaignCriteriaRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignCriteriaRequest;

                        /**
                         * Verifies a MutateCampaignCriteriaRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignCriteriaRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateCampaignCriteriaRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignCriteriaRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignCriteriaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignCriteriaRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignCriterionOperation. */
                    interface ICampaignCriterionOperation {

                        /** CampaignCriterionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignCriterionOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                        /** CampaignCriterionOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                        /** CampaignCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignCriterionOperation. */
                    class CampaignCriterionOperation implements ICampaignCriterionOperation {

                        /**
                         * Constructs a new CampaignCriterionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignCriterionOperation);

                        /** CampaignCriterionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignCriterionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                        /** CampaignCriterionOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                        /** CampaignCriterionOperation remove. */
                        public remove?: (string|null);

                        /** CampaignCriterionOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignCriterionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCriterionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignCriterionOperation): google.ads.googleads.v23.services.CampaignCriterionOperation;

                        /**
                         * Encodes the specified CampaignCriterionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignCriterionOperation.verify|verify} messages.
                         * @param message CampaignCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignCriterionOperation.verify|verify} messages.
                         * @param message CampaignCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignCriterionOperation;

                        /**
                         * Decodes a CampaignCriterionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignCriterionOperation;

                        /**
                         * Verifies a CampaignCriterionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignCriterionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignCriterionOperation;

                        /**
                         * Creates a plain object from a CampaignCriterionOperation message. Also converts values to other types if specified.
                         * @param message CampaignCriterionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignCriterionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignCriterionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignCriteriaResponse. */
                    interface IMutateCampaignCriteriaResponse {

                        /** MutateCampaignCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignCriteriaResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignCriterionResult[]|null);
                    }

                    /** Represents a MutateCampaignCriteriaResponse. */
                    class MutateCampaignCriteriaResponse implements IMutateCampaignCriteriaResponse {

                        /**
                         * Constructs a new MutateCampaignCriteriaResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignCriteriaResponse);

                        /** MutateCampaignCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignCriteriaResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignCriterionResult[];

                        /**
                         * Creates a new MutateCampaignCriteriaResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignCriteriaResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignCriteriaResponse): google.ads.googleads.v23.services.MutateCampaignCriteriaResponse;

                        /**
                         * Encodes the specified MutateCampaignCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCriteriaResponse.verify|verify} messages.
                         * @param message MutateCampaignCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCriteriaResponse.verify|verify} messages.
                         * @param message MutateCampaignCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCriteriaResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignCriteriaResponse;

                        /**
                         * Decodes a MutateCampaignCriteriaResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignCriteriaResponse;

                        /**
                         * Verifies a MutateCampaignCriteriaResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignCriteriaResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateCampaignCriteriaResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignCriteriaResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignCriteriaResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignCriteriaResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignCriterionResult. */
                    interface IMutateCampaignCriterionResult {

                        /** MutateCampaignCriterionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignCriterionResult campaign_criterion */
                        campaign_criterion?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);
                    }

                    /** Represents a MutateCampaignCriterionResult. */
                    class MutateCampaignCriterionResult implements IMutateCampaignCriterionResult {

                        /**
                         * Constructs a new MutateCampaignCriterionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignCriterionResult);

                        /** MutateCampaignCriterionResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignCriterionResult campaign_criterion. */
                        public campaign_criterion?: (google.ads.googleads.v23.resources.ICampaignCriterion|null);

                        /**
                         * Creates a new MutateCampaignCriterionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignCriterionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignCriterionResult): google.ads.googleads.v23.services.MutateCampaignCriterionResult;

                        /**
                         * Encodes the specified MutateCampaignCriterionResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCriterionResult.verify|verify} messages.
                         * @param message MutateCampaignCriterionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCriterionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCriterionResult.verify|verify} messages.
                         * @param message MutateCampaignCriterionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCriterionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignCriterionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignCriterionResult;

                        /**
                         * Decodes a MutateCampaignCriterionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignCriterionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignCriterionResult;

                        /**
                         * Verifies a MutateCampaignCriterionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCriterionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignCriterionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignCriterionResult;

                        /**
                         * Creates a plain object from a MutateCampaignCriterionResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignCriterionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignCriterionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCriterionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignCriterionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignCustomizerService */
                    class CampaignCustomizerService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignCustomizerService 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 CampaignCustomizerService 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): CampaignCustomizerService;

                        /**
                         * Calls MutateCampaignCustomizers.
                         * @param request MutateCampaignCustomizersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignCustomizersResponse
                         */
                        public mutateCampaignCustomizers(request: google.ads.googleads.v23.services.IMutateCampaignCustomizersRequest, callback: google.ads.googleads.v23.services.CampaignCustomizerService.MutateCampaignCustomizersCallback): void;

                        /**
                         * Calls MutateCampaignCustomizers.
                         * @param request MutateCampaignCustomizersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignCustomizers(request: google.ads.googleads.v23.services.IMutateCampaignCustomizersRequest): Promise<google.ads.googleads.v23.services.MutateCampaignCustomizersResponse>;
                    }

                    namespace CampaignCustomizerService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignCustomizerService|mutateCampaignCustomizers}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignCustomizersResponse
                         */
                        type MutateCampaignCustomizersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignCustomizersResponse) => void;
                    }

                    /** Properties of a MutateCampaignCustomizersRequest. */
                    interface IMutateCampaignCustomizersRequest {

                        /** MutateCampaignCustomizersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignCustomizersRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignCustomizerOperation[]|null);

                        /** MutateCampaignCustomizersRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignCustomizersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignCustomizersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignCustomizersRequest. */
                    class MutateCampaignCustomizersRequest implements IMutateCampaignCustomizersRequest {

                        /**
                         * Constructs a new MutateCampaignCustomizersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignCustomizersRequest);

                        /** MutateCampaignCustomizersRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignCustomizersRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignCustomizerOperation[];

                        /** MutateCampaignCustomizersRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignCustomizersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignCustomizersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignCustomizersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignCustomizersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignCustomizersRequest): google.ads.googleads.v23.services.MutateCampaignCustomizersRequest;

                        /**
                         * Encodes the specified MutateCampaignCustomizersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCustomizersRequest.verify|verify} messages.
                         * @param message MutateCampaignCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCustomizersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCustomizersRequest.verify|verify} messages.
                         * @param message MutateCampaignCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCustomizersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignCustomizersRequest;

                        /**
                         * Decodes a MutateCampaignCustomizersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignCustomizersRequest;

                        /**
                         * Verifies a MutateCampaignCustomizersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCustomizersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignCustomizersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignCustomizersRequest;

                        /**
                         * Creates a plain object from a MutateCampaignCustomizersRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignCustomizersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignCustomizersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCustomizersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignCustomizersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignCustomizerOperation. */
                    interface ICampaignCustomizerOperation {

                        /** CampaignCustomizerOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignCustomizer|null);

                        /** CampaignCustomizerOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignCustomizerOperation. */
                    class CampaignCustomizerOperation implements ICampaignCustomizerOperation {

                        /**
                         * Constructs a new CampaignCustomizerOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignCustomizerOperation);

                        /** CampaignCustomizerOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignCustomizer|null);

                        /** CampaignCustomizerOperation remove. */
                        public remove?: (string|null);

                        /** CampaignCustomizerOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CampaignCustomizerOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCustomizerOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignCustomizerOperation): google.ads.googleads.v23.services.CampaignCustomizerOperation;

                        /**
                         * Encodes the specified CampaignCustomizerOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignCustomizerOperation.verify|verify} messages.
                         * @param message CampaignCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCustomizerOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignCustomizerOperation.verify|verify} messages.
                         * @param message CampaignCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCustomizerOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignCustomizerOperation;

                        /**
                         * Decodes a CampaignCustomizerOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignCustomizerOperation;

                        /**
                         * Verifies a CampaignCustomizerOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCustomizerOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignCustomizerOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignCustomizerOperation;

                        /**
                         * Creates a plain object from a CampaignCustomizerOperation message. Also converts values to other types if specified.
                         * @param message CampaignCustomizerOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignCustomizerOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCustomizerOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignCustomizerOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignCustomizersResponse. */
                    interface IMutateCampaignCustomizersResponse {

                        /** MutateCampaignCustomizersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignCustomizerResult[]|null);

                        /** MutateCampaignCustomizersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateCampaignCustomizersResponse. */
                    class MutateCampaignCustomizersResponse implements IMutateCampaignCustomizersResponse {

                        /**
                         * Constructs a new MutateCampaignCustomizersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignCustomizersResponse);

                        /** MutateCampaignCustomizersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignCustomizerResult[];

                        /** MutateCampaignCustomizersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateCampaignCustomizersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignCustomizersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignCustomizersResponse): google.ads.googleads.v23.services.MutateCampaignCustomizersResponse;

                        /**
                         * Encodes the specified MutateCampaignCustomizersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCustomizersResponse.verify|verify} messages.
                         * @param message MutateCampaignCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCustomizersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCustomizersResponse.verify|verify} messages.
                         * @param message MutateCampaignCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCustomizersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignCustomizersResponse;

                        /**
                         * Decodes a MutateCampaignCustomizersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignCustomizersResponse;

                        /**
                         * Verifies a MutateCampaignCustomizersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCustomizersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignCustomizersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignCustomizersResponse;

                        /**
                         * Creates a plain object from a MutateCampaignCustomizersResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignCustomizersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignCustomizersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCustomizersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignCustomizersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignCustomizerResult. */
                    interface IMutateCampaignCustomizerResult {

                        /** MutateCampaignCustomizerResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignCustomizerResult campaign_customizer */
                        campaign_customizer?: (google.ads.googleads.v23.resources.ICampaignCustomizer|null);
                    }

                    /** Represents a MutateCampaignCustomizerResult. */
                    class MutateCampaignCustomizerResult implements IMutateCampaignCustomizerResult {

                        /**
                         * Constructs a new MutateCampaignCustomizerResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignCustomizerResult);

                        /** MutateCampaignCustomizerResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignCustomizerResult campaign_customizer. */
                        public campaign_customizer?: (google.ads.googleads.v23.resources.ICampaignCustomizer|null);

                        /**
                         * Creates a new MutateCampaignCustomizerResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignCustomizerResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignCustomizerResult): google.ads.googleads.v23.services.MutateCampaignCustomizerResult;

                        /**
                         * Encodes the specified MutateCampaignCustomizerResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCustomizerResult.verify|verify} messages.
                         * @param message MutateCampaignCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCustomizerResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignCustomizerResult.verify|verify} messages.
                         * @param message MutateCampaignCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCustomizerResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignCustomizerResult;

                        /**
                         * Decodes a MutateCampaignCustomizerResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignCustomizerResult;

                        /**
                         * Verifies a MutateCampaignCustomizerResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCustomizerResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignCustomizerResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignCustomizerResult;

                        /**
                         * Creates a plain object from a MutateCampaignCustomizerResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignCustomizerResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignCustomizerResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCustomizerResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignCustomizerResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignDraftService */
                    class CampaignDraftService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignDraftService 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 CampaignDraftService 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): CampaignDraftService;

                        /**
                         * Calls MutateCampaignDrafts.
                         * @param request MutateCampaignDraftsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignDraftsResponse
                         */
                        public mutateCampaignDrafts(request: google.ads.googleads.v23.services.IMutateCampaignDraftsRequest, callback: google.ads.googleads.v23.services.CampaignDraftService.MutateCampaignDraftsCallback): void;

                        /**
                         * Calls MutateCampaignDrafts.
                         * @param request MutateCampaignDraftsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignDrafts(request: google.ads.googleads.v23.services.IMutateCampaignDraftsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignDraftsResponse>;

                        /**
                         * Calls PromoteCampaignDraft.
                         * @param request PromoteCampaignDraftRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public promoteCampaignDraft(request: google.ads.googleads.v23.services.IPromoteCampaignDraftRequest, callback: google.ads.googleads.v23.services.CampaignDraftService.PromoteCampaignDraftCallback): void;

                        /**
                         * Calls PromoteCampaignDraft.
                         * @param request PromoteCampaignDraftRequest message or plain object
                         * @returns Promise
                         */
                        public promoteCampaignDraft(request: google.ads.googleads.v23.services.IPromoteCampaignDraftRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls ListCampaignDraftAsyncErrors.
                         * @param request ListCampaignDraftAsyncErrorsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListCampaignDraftAsyncErrorsResponse
                         */
                        public listCampaignDraftAsyncErrors(request: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsRequest, callback: google.ads.googleads.v23.services.CampaignDraftService.ListCampaignDraftAsyncErrorsCallback): void;

                        /**
                         * Calls ListCampaignDraftAsyncErrors.
                         * @param request ListCampaignDraftAsyncErrorsRequest message or plain object
                         * @returns Promise
                         */
                        public listCampaignDraftAsyncErrors(request: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsRequest): Promise<google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse>;
                    }

                    namespace CampaignDraftService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignDraftService|mutateCampaignDrafts}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignDraftsResponse
                         */
                        type MutateCampaignDraftsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignDraftsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignDraftService|promoteCampaignDraft}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type PromoteCampaignDraftCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignDraftService|listCampaignDraftAsyncErrors}.
                         * @param error Error, if any
                         * @param [response] ListCampaignDraftAsyncErrorsResponse
                         */
                        type ListCampaignDraftAsyncErrorsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse) => void;
                    }

                    /** Properties of a MutateCampaignDraftsRequest. */
                    interface IMutateCampaignDraftsRequest {

                        /** MutateCampaignDraftsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignDraftsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignDraftOperation[]|null);

                        /** MutateCampaignDraftsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignDraftsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignDraftsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignDraftsRequest. */
                    class MutateCampaignDraftsRequest implements IMutateCampaignDraftsRequest {

                        /**
                         * Constructs a new MutateCampaignDraftsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignDraftsRequest);

                        /** MutateCampaignDraftsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignDraftsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignDraftOperation[];

                        /** MutateCampaignDraftsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignDraftsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignDraftsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignDraftsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignDraftsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignDraftsRequest): google.ads.googleads.v23.services.MutateCampaignDraftsRequest;

                        /**
                         * Encodes the specified MutateCampaignDraftsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignDraftsRequest.verify|verify} messages.
                         * @param message MutateCampaignDraftsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignDraftsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignDraftsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignDraftsRequest.verify|verify} messages.
                         * @param message MutateCampaignDraftsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignDraftsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignDraftsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignDraftsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignDraftsRequest;

                        /**
                         * Decodes a MutateCampaignDraftsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignDraftsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignDraftsRequest;

                        /**
                         * Verifies a MutateCampaignDraftsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignDraftsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignDraftsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignDraftsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignDraftsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignDraftsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignDraftsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignDraftsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignDraftsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PromoteCampaignDraftRequest. */
                    interface IPromoteCampaignDraftRequest {

                        /** PromoteCampaignDraftRequest campaign_draft */
                        campaign_draft?: (string|null);

                        /** PromoteCampaignDraftRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a PromoteCampaignDraftRequest. */
                    class PromoteCampaignDraftRequest implements IPromoteCampaignDraftRequest {

                        /**
                         * Constructs a new PromoteCampaignDraftRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPromoteCampaignDraftRequest);

                        /** PromoteCampaignDraftRequest campaign_draft. */
                        public campaign_draft: string;

                        /** PromoteCampaignDraftRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new PromoteCampaignDraftRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromoteCampaignDraftRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPromoteCampaignDraftRequest): google.ads.googleads.v23.services.PromoteCampaignDraftRequest;

                        /**
                         * Encodes the specified PromoteCampaignDraftRequest message. Does not implicitly {@link google.ads.googleads.v23.services.PromoteCampaignDraftRequest.verify|verify} messages.
                         * @param message PromoteCampaignDraftRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPromoteCampaignDraftRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromoteCampaignDraftRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PromoteCampaignDraftRequest.verify|verify} messages.
                         * @param message PromoteCampaignDraftRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPromoteCampaignDraftRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromoteCampaignDraftRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PromoteCampaignDraftRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PromoteCampaignDraftRequest;

                        /**
                         * Decodes a PromoteCampaignDraftRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromoteCampaignDraftRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PromoteCampaignDraftRequest;

                        /**
                         * Verifies a PromoteCampaignDraftRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromoteCampaignDraftRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PromoteCampaignDraftRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PromoteCampaignDraftRequest;

                        /**
                         * Creates a plain object from a PromoteCampaignDraftRequest message. Also converts values to other types if specified.
                         * @param message PromoteCampaignDraftRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PromoteCampaignDraftRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromoteCampaignDraftRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PromoteCampaignDraftRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignDraftOperation. */
                    interface ICampaignDraftOperation {

                        /** CampaignDraftOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignDraftOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignDraft|null);

                        /** CampaignDraftOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignDraft|null);

                        /** CampaignDraftOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignDraftOperation. */
                    class CampaignDraftOperation implements ICampaignDraftOperation {

                        /**
                         * Constructs a new CampaignDraftOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignDraftOperation);

                        /** CampaignDraftOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignDraftOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignDraft|null);

                        /** CampaignDraftOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignDraft|null);

                        /** CampaignDraftOperation remove. */
                        public remove?: (string|null);

                        /** CampaignDraftOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignDraftOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignDraftOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignDraftOperation): google.ads.googleads.v23.services.CampaignDraftOperation;

                        /**
                         * Encodes the specified CampaignDraftOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignDraftOperation.verify|verify} messages.
                         * @param message CampaignDraftOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignDraftOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraftOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignDraftOperation.verify|verify} messages.
                         * @param message CampaignDraftOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignDraftOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraftOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignDraftOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignDraftOperation;

                        /**
                         * Decodes a CampaignDraftOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignDraftOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignDraftOperation;

                        /**
                         * Verifies a CampaignDraftOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraftOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignDraftOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignDraftOperation;

                        /**
                         * Creates a plain object from a CampaignDraftOperation message. Also converts values to other types if specified.
                         * @param message CampaignDraftOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignDraftOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraftOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignDraftOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignDraftsResponse. */
                    interface IMutateCampaignDraftsResponse {

                        /** MutateCampaignDraftsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignDraftsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignDraftResult[]|null);
                    }

                    /** Represents a MutateCampaignDraftsResponse. */
                    class MutateCampaignDraftsResponse implements IMutateCampaignDraftsResponse {

                        /**
                         * Constructs a new MutateCampaignDraftsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignDraftsResponse);

                        /** MutateCampaignDraftsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignDraftsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignDraftResult[];

                        /**
                         * Creates a new MutateCampaignDraftsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignDraftsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignDraftsResponse): google.ads.googleads.v23.services.MutateCampaignDraftsResponse;

                        /**
                         * Encodes the specified MutateCampaignDraftsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignDraftsResponse.verify|verify} messages.
                         * @param message MutateCampaignDraftsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignDraftsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignDraftsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignDraftsResponse.verify|verify} messages.
                         * @param message MutateCampaignDraftsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignDraftsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignDraftsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignDraftsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignDraftsResponse;

                        /**
                         * Decodes a MutateCampaignDraftsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignDraftsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignDraftsResponse;

                        /**
                         * Verifies a MutateCampaignDraftsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignDraftsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignDraftsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignDraftsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignDraftsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignDraftsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignDraftsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignDraftsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignDraftsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignDraftResult. */
                    interface IMutateCampaignDraftResult {

                        /** MutateCampaignDraftResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignDraftResult campaign_draft */
                        campaign_draft?: (google.ads.googleads.v23.resources.ICampaignDraft|null);
                    }

                    /** Represents a MutateCampaignDraftResult. */
                    class MutateCampaignDraftResult implements IMutateCampaignDraftResult {

                        /**
                         * Constructs a new MutateCampaignDraftResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignDraftResult);

                        /** MutateCampaignDraftResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignDraftResult campaign_draft. */
                        public campaign_draft?: (google.ads.googleads.v23.resources.ICampaignDraft|null);

                        /**
                         * Creates a new MutateCampaignDraftResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignDraftResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignDraftResult): google.ads.googleads.v23.services.MutateCampaignDraftResult;

                        /**
                         * Encodes the specified MutateCampaignDraftResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignDraftResult.verify|verify} messages.
                         * @param message MutateCampaignDraftResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignDraftResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignDraftResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignDraftResult.verify|verify} messages.
                         * @param message MutateCampaignDraftResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignDraftResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignDraftResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignDraftResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignDraftResult;

                        /**
                         * Decodes a MutateCampaignDraftResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignDraftResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignDraftResult;

                        /**
                         * Verifies a MutateCampaignDraftResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignDraftResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignDraftResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignDraftResult;

                        /**
                         * Creates a plain object from a MutateCampaignDraftResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignDraftResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignDraftResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignDraftResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignDraftResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListCampaignDraftAsyncErrorsRequest. */
                    interface IListCampaignDraftAsyncErrorsRequest {

                        /** ListCampaignDraftAsyncErrorsRequest resource_name */
                        resource_name?: (string|null);

                        /** ListCampaignDraftAsyncErrorsRequest page_token */
                        page_token?: (string|null);

                        /** ListCampaignDraftAsyncErrorsRequest page_size */
                        page_size?: (number|null);
                    }

                    /** Represents a ListCampaignDraftAsyncErrorsRequest. */
                    class ListCampaignDraftAsyncErrorsRequest implements IListCampaignDraftAsyncErrorsRequest {

                        /**
                         * Constructs a new ListCampaignDraftAsyncErrorsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsRequest);

                        /** ListCampaignDraftAsyncErrorsRequest resource_name. */
                        public resource_name: string;

                        /** ListCampaignDraftAsyncErrorsRequest page_token. */
                        public page_token: string;

                        /** ListCampaignDraftAsyncErrorsRequest page_size. */
                        public page_size: number;

                        /**
                         * Creates a new ListCampaignDraftAsyncErrorsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListCampaignDraftAsyncErrorsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsRequest): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsRequest;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsRequest.verify|verify} messages.
                         * @param message ListCampaignDraftAsyncErrorsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsRequest.verify|verify} messages.
                         * @param message ListCampaignDraftAsyncErrorsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListCampaignDraftAsyncErrorsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListCampaignDraftAsyncErrorsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsRequest;

                        /**
                         * Decodes a ListCampaignDraftAsyncErrorsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListCampaignDraftAsyncErrorsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsRequest;

                        /**
                         * Verifies a ListCampaignDraftAsyncErrorsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListCampaignDraftAsyncErrorsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListCampaignDraftAsyncErrorsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsRequest;

                        /**
                         * Creates a plain object from a ListCampaignDraftAsyncErrorsRequest message. Also converts values to other types if specified.
                         * @param message ListCampaignDraftAsyncErrorsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListCampaignDraftAsyncErrorsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListCampaignDraftAsyncErrorsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListCampaignDraftAsyncErrorsResponse. */
                    interface IListCampaignDraftAsyncErrorsResponse {

                        /** ListCampaignDraftAsyncErrorsResponse errors */
                        errors?: (google.rpc.IStatus[]|null);

                        /** ListCampaignDraftAsyncErrorsResponse next_page_token */
                        next_page_token?: (string|null);
                    }

                    /** Represents a ListCampaignDraftAsyncErrorsResponse. */
                    class ListCampaignDraftAsyncErrorsResponse implements IListCampaignDraftAsyncErrorsResponse {

                        /**
                         * Constructs a new ListCampaignDraftAsyncErrorsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsResponse);

                        /** ListCampaignDraftAsyncErrorsResponse errors. */
                        public errors: google.rpc.IStatus[];

                        /** ListCampaignDraftAsyncErrorsResponse next_page_token. */
                        public next_page_token: string;

                        /**
                         * Creates a new ListCampaignDraftAsyncErrorsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListCampaignDraftAsyncErrorsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsResponse): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse.verify|verify} messages.
                         * @param message ListCampaignDraftAsyncErrorsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse.verify|verify} messages.
                         * @param message ListCampaignDraftAsyncErrorsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListCampaignDraftAsyncErrorsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListCampaignDraftAsyncErrorsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListCampaignDraftAsyncErrorsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse;

                        /**
                         * Decodes a ListCampaignDraftAsyncErrorsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListCampaignDraftAsyncErrorsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse;

                        /**
                         * Verifies a ListCampaignDraftAsyncErrorsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListCampaignDraftAsyncErrorsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListCampaignDraftAsyncErrorsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse;

                        /**
                         * Creates a plain object from a ListCampaignDraftAsyncErrorsResponse message. Also converts values to other types if specified.
                         * @param message ListCampaignDraftAsyncErrorsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListCampaignDraftAsyncErrorsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListCampaignDraftAsyncErrorsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListCampaignDraftAsyncErrorsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignGroupService */
                    class CampaignGroupService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignGroupService 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 CampaignGroupService 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): CampaignGroupService;

                        /**
                         * Calls MutateCampaignGroups.
                         * @param request MutateCampaignGroupsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignGroupsResponse
                         */
                        public mutateCampaignGroups(request: google.ads.googleads.v23.services.IMutateCampaignGroupsRequest, callback: google.ads.googleads.v23.services.CampaignGroupService.MutateCampaignGroupsCallback): void;

                        /**
                         * Calls MutateCampaignGroups.
                         * @param request MutateCampaignGroupsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignGroups(request: google.ads.googleads.v23.services.IMutateCampaignGroupsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignGroupsResponse>;
                    }

                    namespace CampaignGroupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignGroupService|mutateCampaignGroups}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignGroupsResponse
                         */
                        type MutateCampaignGroupsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignGroupsResponse) => void;
                    }

                    /** Properties of a MutateCampaignGroupsRequest. */
                    interface IMutateCampaignGroupsRequest {

                        /** MutateCampaignGroupsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignGroupsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignGroupOperation[]|null);

                        /** MutateCampaignGroupsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignGroupsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignGroupsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignGroupsRequest. */
                    class MutateCampaignGroupsRequest implements IMutateCampaignGroupsRequest {

                        /**
                         * Constructs a new MutateCampaignGroupsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignGroupsRequest);

                        /** MutateCampaignGroupsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignGroupsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignGroupOperation[];

                        /** MutateCampaignGroupsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignGroupsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignGroupsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignGroupsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignGroupsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignGroupsRequest): google.ads.googleads.v23.services.MutateCampaignGroupsRequest;

                        /**
                         * Encodes the specified MutateCampaignGroupsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGroupsRequest.verify|verify} messages.
                         * @param message MutateCampaignGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignGroupsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGroupsRequest.verify|verify} messages.
                         * @param message MutateCampaignGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignGroupsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignGroupsRequest;

                        /**
                         * Decodes a MutateCampaignGroupsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignGroupsRequest;

                        /**
                         * Verifies a MutateCampaignGroupsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignGroupsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignGroupsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignGroupsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignGroupsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignGroupsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignGroupsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignGroupsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignGroupsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignGroupOperation. */
                    interface ICampaignGroupOperation {

                        /** CampaignGroupOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignGroupOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignGroup|null);

                        /** CampaignGroupOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignGroup|null);

                        /** CampaignGroupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignGroupOperation. */
                    class CampaignGroupOperation implements ICampaignGroupOperation {

                        /**
                         * Constructs a new CampaignGroupOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignGroupOperation);

                        /** CampaignGroupOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignGroupOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignGroup|null);

                        /** CampaignGroupOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignGroup|null);

                        /** CampaignGroupOperation remove. */
                        public remove?: (string|null);

                        /** CampaignGroupOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignGroupOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignGroupOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignGroupOperation): google.ads.googleads.v23.services.CampaignGroupOperation;

                        /**
                         * Encodes the specified CampaignGroupOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignGroupOperation.verify|verify} messages.
                         * @param message CampaignGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignGroupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignGroupOperation.verify|verify} messages.
                         * @param message CampaignGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignGroupOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignGroupOperation;

                        /**
                         * Decodes a CampaignGroupOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignGroupOperation;

                        /**
                         * Verifies a CampaignGroupOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignGroupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignGroupOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignGroupOperation;

                        /**
                         * Creates a plain object from a CampaignGroupOperation message. Also converts values to other types if specified.
                         * @param message CampaignGroupOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignGroupOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignGroupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignGroupOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignGroupsResponse. */
                    interface IMutateCampaignGroupsResponse {

                        /** MutateCampaignGroupsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignGroupResult[]|null);

                        /** MutateCampaignGroupsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateCampaignGroupsResponse. */
                    class MutateCampaignGroupsResponse implements IMutateCampaignGroupsResponse {

                        /**
                         * Constructs a new MutateCampaignGroupsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignGroupsResponse);

                        /** MutateCampaignGroupsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignGroupResult[];

                        /** MutateCampaignGroupsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateCampaignGroupsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignGroupsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignGroupsResponse): google.ads.googleads.v23.services.MutateCampaignGroupsResponse;

                        /**
                         * Encodes the specified MutateCampaignGroupsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGroupsResponse.verify|verify} messages.
                         * @param message MutateCampaignGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignGroupsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGroupsResponse.verify|verify} messages.
                         * @param message MutateCampaignGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignGroupsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignGroupsResponse;

                        /**
                         * Decodes a MutateCampaignGroupsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignGroupsResponse;

                        /**
                         * Verifies a MutateCampaignGroupsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignGroupsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignGroupsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignGroupsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignGroupsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignGroupsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignGroupsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignGroupsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignGroupsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignGroupResult. */
                    interface IMutateCampaignGroupResult {

                        /** MutateCampaignGroupResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignGroupResult campaign_group */
                        campaign_group?: (google.ads.googleads.v23.resources.ICampaignGroup|null);
                    }

                    /** Represents a MutateCampaignGroupResult. */
                    class MutateCampaignGroupResult implements IMutateCampaignGroupResult {

                        /**
                         * Constructs a new MutateCampaignGroupResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignGroupResult);

                        /** MutateCampaignGroupResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignGroupResult campaign_group. */
                        public campaign_group?: (google.ads.googleads.v23.resources.ICampaignGroup|null);

                        /**
                         * Creates a new MutateCampaignGroupResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignGroupResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignGroupResult): google.ads.googleads.v23.services.MutateCampaignGroupResult;

                        /**
                         * Encodes the specified MutateCampaignGroupResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGroupResult.verify|verify} messages.
                         * @param message MutateCampaignGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignGroupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGroupResult.verify|verify} messages.
                         * @param message MutateCampaignGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignGroupResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignGroupResult;

                        /**
                         * Decodes a MutateCampaignGroupResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignGroupResult;

                        /**
                         * Verifies a MutateCampaignGroupResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignGroupResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignGroupResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignGroupResult;

                        /**
                         * Creates a plain object from a MutateCampaignGroupResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignGroupResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignGroupResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignGroupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignGroupResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignLabelService */
                    class CampaignLabelService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignLabelService 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 CampaignLabelService 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): CampaignLabelService;

                        /**
                         * Calls MutateCampaignLabels.
                         * @param request MutateCampaignLabelsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignLabelsResponse
                         */
                        public mutateCampaignLabels(request: google.ads.googleads.v23.services.IMutateCampaignLabelsRequest, callback: google.ads.googleads.v23.services.CampaignLabelService.MutateCampaignLabelsCallback): void;

                        /**
                         * Calls MutateCampaignLabels.
                         * @param request MutateCampaignLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignLabels(request: google.ads.googleads.v23.services.IMutateCampaignLabelsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignLabelsResponse>;
                    }

                    namespace CampaignLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignLabelService|mutateCampaignLabels}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignLabelsResponse
                         */
                        type MutateCampaignLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignLabelsResponse) => void;
                    }

                    /** Properties of a MutateCampaignLabelsRequest. */
                    interface IMutateCampaignLabelsRequest {

                        /** MutateCampaignLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignLabelsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignLabelOperation[]|null);

                        /** MutateCampaignLabelsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignLabelsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCampaignLabelsRequest. */
                    class MutateCampaignLabelsRequest implements IMutateCampaignLabelsRequest {

                        /**
                         * Constructs a new MutateCampaignLabelsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignLabelsRequest);

                        /** MutateCampaignLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignLabelsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignLabelOperation[];

                        /** MutateCampaignLabelsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignLabelsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCampaignLabelsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignLabelsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignLabelsRequest): google.ads.googleads.v23.services.MutateCampaignLabelsRequest;

                        /**
                         * Encodes the specified MutateCampaignLabelsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignLabelsRequest.verify|verify} messages.
                         * @param message MutateCampaignLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignLabelsRequest.verify|verify} messages.
                         * @param message MutateCampaignLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignLabelsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignLabelsRequest;

                        /**
                         * Decodes a MutateCampaignLabelsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignLabelsRequest;

                        /**
                         * Verifies a MutateCampaignLabelsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignLabelsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignLabelsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignLabelsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignLabelsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignLabelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignLabelsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignLabelOperation. */
                    interface ICampaignLabelOperation {

                        /** CampaignLabelOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignLabel|null);

                        /** CampaignLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignLabelOperation. */
                    class CampaignLabelOperation implements ICampaignLabelOperation {

                        /**
                         * Constructs a new CampaignLabelOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignLabelOperation);

                        /** CampaignLabelOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignLabel|null);

                        /** CampaignLabelOperation remove. */
                        public remove?: (string|null);

                        /** CampaignLabelOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CampaignLabelOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignLabelOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignLabelOperation): google.ads.googleads.v23.services.CampaignLabelOperation;

                        /**
                         * Encodes the specified CampaignLabelOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignLabelOperation.verify|verify} messages.
                         * @param message CampaignLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignLabelOperation.verify|verify} messages.
                         * @param message CampaignLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignLabelOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignLabelOperation;

                        /**
                         * Decodes a CampaignLabelOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignLabelOperation;

                        /**
                         * Verifies a CampaignLabelOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignLabelOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignLabelOperation;

                        /**
                         * Creates a plain object from a CampaignLabelOperation message. Also converts values to other types if specified.
                         * @param message CampaignLabelOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignLabelOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignLabelOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignLabelsResponse. */
                    interface IMutateCampaignLabelsResponse {

                        /** MutateCampaignLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignLabelsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignLabelResult[]|null);
                    }

                    /** Represents a MutateCampaignLabelsResponse. */
                    class MutateCampaignLabelsResponse implements IMutateCampaignLabelsResponse {

                        /**
                         * Constructs a new MutateCampaignLabelsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignLabelsResponse);

                        /** MutateCampaignLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignLabelsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignLabelResult[];

                        /**
                         * Creates a new MutateCampaignLabelsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignLabelsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignLabelsResponse): google.ads.googleads.v23.services.MutateCampaignLabelsResponse;

                        /**
                         * Encodes the specified MutateCampaignLabelsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignLabelsResponse.verify|verify} messages.
                         * @param message MutateCampaignLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignLabelsResponse.verify|verify} messages.
                         * @param message MutateCampaignLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignLabelsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignLabelsResponse;

                        /**
                         * Decodes a MutateCampaignLabelsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignLabelsResponse;

                        /**
                         * Verifies a MutateCampaignLabelsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignLabelsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignLabelsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignLabelsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignLabelsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignLabelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignLabelsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignLabelResult. */
                    interface IMutateCampaignLabelResult {

                        /** MutateCampaignLabelResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCampaignLabelResult. */
                    class MutateCampaignLabelResult implements IMutateCampaignLabelResult {

                        /**
                         * Constructs a new MutateCampaignLabelResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignLabelResult);

                        /** MutateCampaignLabelResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCampaignLabelResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignLabelResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignLabelResult): google.ads.googleads.v23.services.MutateCampaignLabelResult;

                        /**
                         * Encodes the specified MutateCampaignLabelResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignLabelResult.verify|verify} messages.
                         * @param message MutateCampaignLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignLabelResult.verify|verify} messages.
                         * @param message MutateCampaignLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignLabelResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignLabelResult;

                        /**
                         * Decodes a MutateCampaignLabelResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignLabelResult;

                        /**
                         * Verifies a MutateCampaignLabelResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignLabelResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignLabelResult;

                        /**
                         * Creates a plain object from a MutateCampaignLabelResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignLabelResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignLabelResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignLabelResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignService */
                    class CampaignService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignService 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 CampaignService 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): CampaignService;

                        /**
                         * Calls MutateCampaigns.
                         * @param request MutateCampaignsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignsResponse
                         */
                        public mutateCampaigns(request: google.ads.googleads.v23.services.IMutateCampaignsRequest, callback: google.ads.googleads.v23.services.CampaignService.MutateCampaignsCallback): void;

                        /**
                         * Calls MutateCampaigns.
                         * @param request MutateCampaignsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaigns(request: google.ads.googleads.v23.services.IMutateCampaignsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignsResponse>;

                        /**
                         * Calls EnablePMaxBrandGuidelines.
                         * @param request EnablePMaxBrandGuidelinesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and EnablePMaxBrandGuidelinesResponse
                         */
                        public enablePMaxBrandGuidelines(request: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesRequest, callback: google.ads.googleads.v23.services.CampaignService.EnablePMaxBrandGuidelinesCallback): void;

                        /**
                         * Calls EnablePMaxBrandGuidelines.
                         * @param request EnablePMaxBrandGuidelinesRequest message or plain object
                         * @returns Promise
                         */
                        public enablePMaxBrandGuidelines(request: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesRequest): Promise<google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse>;
                    }

                    namespace CampaignService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignService|mutateCampaigns}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignsResponse
                         */
                        type MutateCampaignsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignService|enablePMaxBrandGuidelines}.
                         * @param error Error, if any
                         * @param [response] EnablePMaxBrandGuidelinesResponse
                         */
                        type EnablePMaxBrandGuidelinesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse) => void;
                    }

                    /** Properties of a MutateCampaignsRequest. */
                    interface IMutateCampaignsRequest {

                        /** MutateCampaignsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignOperation[]|null);

                        /** MutateCampaignsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignsRequest. */
                    class MutateCampaignsRequest implements IMutateCampaignsRequest {

                        /**
                         * Constructs a new MutateCampaignsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignsRequest);

                        /** MutateCampaignsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignOperation[];

                        /** MutateCampaignsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignsRequest): google.ads.googleads.v23.services.MutateCampaignsRequest;

                        /**
                         * Encodes the specified MutateCampaignsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignsRequest.verify|verify} messages.
                         * @param message MutateCampaignsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignsRequest.verify|verify} messages.
                         * @param message MutateCampaignsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignsRequest;

                        /**
                         * Decodes a MutateCampaignsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignsRequest;

                        /**
                         * Verifies a MutateCampaignsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignOperation. */
                    interface ICampaignOperation {

                        /** CampaignOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaign|null);

                        /** CampaignOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaign|null);

                        /** CampaignOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignOperation. */
                    class CampaignOperation implements ICampaignOperation {

                        /**
                         * Constructs a new CampaignOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignOperation);

                        /** CampaignOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaign|null);

                        /** CampaignOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaign|null);

                        /** CampaignOperation remove. */
                        public remove?: (string|null);

                        /** CampaignOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignOperation): google.ads.googleads.v23.services.CampaignOperation;

                        /**
                         * Encodes the specified CampaignOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignOperation.verify|verify} messages.
                         * @param message CampaignOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignOperation.verify|verify} messages.
                         * @param message CampaignOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignOperation;

                        /**
                         * Decodes a CampaignOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignOperation;

                        /**
                         * Verifies a CampaignOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignOperation;

                        /**
                         * Creates a plain object from a CampaignOperation message. Also converts values to other types if specified.
                         * @param message CampaignOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignsResponse. */
                    interface IMutateCampaignsResponse {

                        /** MutateCampaignsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignResult[]|null);
                    }

                    /** Represents a MutateCampaignsResponse. */
                    class MutateCampaignsResponse implements IMutateCampaignsResponse {

                        /**
                         * Constructs a new MutateCampaignsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignsResponse);

                        /** MutateCampaignsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignResult[];

                        /**
                         * Creates a new MutateCampaignsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignsResponse): google.ads.googleads.v23.services.MutateCampaignsResponse;

                        /**
                         * Encodes the specified MutateCampaignsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignsResponse.verify|verify} messages.
                         * @param message MutateCampaignsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignsResponse.verify|verify} messages.
                         * @param message MutateCampaignsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignsResponse;

                        /**
                         * Decodes a MutateCampaignsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignsResponse;

                        /**
                         * Verifies a MutateCampaignsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignResult. */
                    interface IMutateCampaignResult {

                        /** MutateCampaignResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignResult campaign */
                        campaign?: (google.ads.googleads.v23.resources.ICampaign|null);
                    }

                    /** Represents a MutateCampaignResult. */
                    class MutateCampaignResult implements IMutateCampaignResult {

                        /**
                         * Constructs a new MutateCampaignResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignResult);

                        /** MutateCampaignResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignResult campaign. */
                        public campaign?: (google.ads.googleads.v23.resources.ICampaign|null);

                        /**
                         * Creates a new MutateCampaignResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignResult): google.ads.googleads.v23.services.MutateCampaignResult;

                        /**
                         * Encodes the specified MutateCampaignResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignResult.verify|verify} messages.
                         * @param message MutateCampaignResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignResult.verify|verify} messages.
                         * @param message MutateCampaignResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignResult;

                        /**
                         * Decodes a MutateCampaignResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignResult;

                        /**
                         * Verifies a MutateCampaignResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignResult;

                        /**
                         * Creates a plain object from a MutateCampaignResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EnablePMaxBrandGuidelinesRequest. */
                    interface IEnablePMaxBrandGuidelinesRequest {

                        /** EnablePMaxBrandGuidelinesRequest customer_id */
                        customer_id?: (string|null);

                        /** EnablePMaxBrandGuidelinesRequest operations */
                        operations?: (google.ads.googleads.v23.services.IEnableOperation[]|null);
                    }

                    /** Represents an EnablePMaxBrandGuidelinesRequest. */
                    class EnablePMaxBrandGuidelinesRequest implements IEnablePMaxBrandGuidelinesRequest {

                        /**
                         * Constructs a new EnablePMaxBrandGuidelinesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesRequest);

                        /** EnablePMaxBrandGuidelinesRequest customer_id. */
                        public customer_id: string;

                        /** EnablePMaxBrandGuidelinesRequest operations. */
                        public operations: google.ads.googleads.v23.services.IEnableOperation[];

                        /**
                         * Creates a new EnablePMaxBrandGuidelinesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EnablePMaxBrandGuidelinesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesRequest): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesRequest;

                        /**
                         * Encodes the specified EnablePMaxBrandGuidelinesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesRequest.verify|verify} messages.
                         * @param message EnablePMaxBrandGuidelinesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnablePMaxBrandGuidelinesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesRequest.verify|verify} messages.
                         * @param message EnablePMaxBrandGuidelinesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnablePMaxBrandGuidelinesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EnablePMaxBrandGuidelinesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesRequest;

                        /**
                         * Decodes an EnablePMaxBrandGuidelinesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EnablePMaxBrandGuidelinesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesRequest;

                        /**
                         * Verifies an EnablePMaxBrandGuidelinesRequest message.
                         * @param message Plain 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 EnablePMaxBrandGuidelinesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EnablePMaxBrandGuidelinesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesRequest;

                        /**
                         * Creates a plain object from an EnablePMaxBrandGuidelinesRequest message. Also converts values to other types if specified.
                         * @param message EnablePMaxBrandGuidelinesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnablePMaxBrandGuidelinesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EnablePMaxBrandGuidelinesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EnableOperation. */
                    interface IEnableOperation {

                        /** EnableOperation campaign */
                        campaign?: (string|null);

                        /** EnableOperation auto_populate_brand_assets */
                        auto_populate_brand_assets?: (boolean|null);

                        /** EnableOperation brand_assets */
                        brand_assets?: (google.ads.googleads.v23.services.IBrandCampaignAssets|null);

                        /** EnableOperation final_uri_domain */
                        final_uri_domain?: (string|null);

                        /** EnableOperation main_color */
                        main_color?: (string|null);

                        /** EnableOperation accent_color */
                        accent_color?: (string|null);

                        /** EnableOperation font_family */
                        font_family?: (string|null);
                    }

                    /** Represents an EnableOperation. */
                    class EnableOperation implements IEnableOperation {

                        /**
                         * Constructs a new EnableOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IEnableOperation);

                        /** EnableOperation campaign. */
                        public campaign: string;

                        /** EnableOperation auto_populate_brand_assets. */
                        public auto_populate_brand_assets: boolean;

                        /** EnableOperation brand_assets. */
                        public brand_assets?: (google.ads.googleads.v23.services.IBrandCampaignAssets|null);

                        /** EnableOperation final_uri_domain. */
                        public final_uri_domain: string;

                        /** EnableOperation main_color. */
                        public main_color: string;

                        /** EnableOperation accent_color. */
                        public accent_color: string;

                        /** EnableOperation font_family. */
                        public font_family: string;

                        /**
                         * Creates a new EnableOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EnableOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IEnableOperation): google.ads.googleads.v23.services.EnableOperation;

                        /**
                         * Encodes the specified EnableOperation message. Does not implicitly {@link google.ads.googleads.v23.services.EnableOperation.verify|verify} messages.
                         * @param message EnableOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IEnableOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnableOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.EnableOperation.verify|verify} messages.
                         * @param message EnableOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IEnableOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnableOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EnableOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.EnableOperation;

                        /**
                         * Decodes an EnableOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EnableOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.EnableOperation;

                        /**
                         * Verifies an EnableOperation message.
                         * @param message Plain 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 EnableOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EnableOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.EnableOperation;

                        /**
                         * Creates a plain object from an EnableOperation message. Also converts values to other types if specified.
                         * @param message EnableOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.EnableOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnableOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EnableOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BrandCampaignAssets. */
                    interface IBrandCampaignAssets {

                        /** BrandCampaignAssets business_name_asset */
                        business_name_asset?: (string|null);

                        /** BrandCampaignAssets logo_asset */
                        logo_asset?: (string[]|null);

                        /** BrandCampaignAssets landscape_logo_asset */
                        landscape_logo_asset?: (string[]|null);
                    }

                    /** Represents a BrandCampaignAssets. */
                    class BrandCampaignAssets implements IBrandCampaignAssets {

                        /**
                         * Constructs a new BrandCampaignAssets.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBrandCampaignAssets);

                        /** BrandCampaignAssets business_name_asset. */
                        public business_name_asset: string;

                        /** BrandCampaignAssets logo_asset. */
                        public logo_asset: string[];

                        /** BrandCampaignAssets landscape_logo_asset. */
                        public landscape_logo_asset: string[];

                        /**
                         * Creates a new BrandCampaignAssets instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandCampaignAssets instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBrandCampaignAssets): google.ads.googleads.v23.services.BrandCampaignAssets;

                        /**
                         * Encodes the specified BrandCampaignAssets message. Does not implicitly {@link google.ads.googleads.v23.services.BrandCampaignAssets.verify|verify} messages.
                         * @param message BrandCampaignAssets message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBrandCampaignAssets, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandCampaignAssets message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BrandCampaignAssets.verify|verify} messages.
                         * @param message BrandCampaignAssets message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBrandCampaignAssets, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandCampaignAssets message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandCampaignAssets
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BrandCampaignAssets;

                        /**
                         * Decodes a BrandCampaignAssets message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandCampaignAssets
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BrandCampaignAssets;

                        /**
                         * Verifies a BrandCampaignAssets message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandCampaignAssets message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandCampaignAssets
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BrandCampaignAssets;

                        /**
                         * Creates a plain object from a BrandCampaignAssets message. Also converts values to other types if specified.
                         * @param message BrandCampaignAssets
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BrandCampaignAssets, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandCampaignAssets to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandCampaignAssets
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EnablePMaxBrandGuidelinesResponse. */
                    interface IEnablePMaxBrandGuidelinesResponse {

                        /** EnablePMaxBrandGuidelinesResponse results */
                        results?: (google.ads.googleads.v23.services.IEnablementResult[]|null);
                    }

                    /** Represents an EnablePMaxBrandGuidelinesResponse. */
                    class EnablePMaxBrandGuidelinesResponse implements IEnablePMaxBrandGuidelinesResponse {

                        /**
                         * Constructs a new EnablePMaxBrandGuidelinesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesResponse);

                        /** EnablePMaxBrandGuidelinesResponse results. */
                        public results: google.ads.googleads.v23.services.IEnablementResult[];

                        /**
                         * Creates a new EnablePMaxBrandGuidelinesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EnablePMaxBrandGuidelinesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesResponse): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse;

                        /**
                         * Encodes the specified EnablePMaxBrandGuidelinesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse.verify|verify} messages.
                         * @param message EnablePMaxBrandGuidelinesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnablePMaxBrandGuidelinesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse.verify|verify} messages.
                         * @param message EnablePMaxBrandGuidelinesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IEnablePMaxBrandGuidelinesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnablePMaxBrandGuidelinesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EnablePMaxBrandGuidelinesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse;

                        /**
                         * Decodes an EnablePMaxBrandGuidelinesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EnablePMaxBrandGuidelinesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse;

                        /**
                         * Verifies an EnablePMaxBrandGuidelinesResponse message.
                         * @param message Plain 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 EnablePMaxBrandGuidelinesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EnablePMaxBrandGuidelinesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse;

                        /**
                         * Creates a plain object from an EnablePMaxBrandGuidelinesResponse message. Also converts values to other types if specified.
                         * @param message EnablePMaxBrandGuidelinesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.EnablePMaxBrandGuidelinesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnablePMaxBrandGuidelinesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EnablePMaxBrandGuidelinesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EnablementResult. */
                    interface IEnablementResult {

                        /** EnablementResult campaign */
                        campaign?: (string|null);

                        /** EnablementResult enablement_error */
                        enablement_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents an EnablementResult. */
                    class EnablementResult implements IEnablementResult {

                        /**
                         * Constructs a new EnablementResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IEnablementResult);

                        /** EnablementResult campaign. */
                        public campaign: string;

                        /** EnablementResult enablement_error. */
                        public enablement_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new EnablementResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EnablementResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IEnablementResult): google.ads.googleads.v23.services.EnablementResult;

                        /**
                         * Encodes the specified EnablementResult message. Does not implicitly {@link google.ads.googleads.v23.services.EnablementResult.verify|verify} messages.
                         * @param message EnablementResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IEnablementResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnablementResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.EnablementResult.verify|verify} messages.
                         * @param message EnablementResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IEnablementResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnablementResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EnablementResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.EnablementResult;

                        /**
                         * Decodes an EnablementResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EnablementResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.EnablementResult;

                        /**
                         * Verifies an EnablementResult message.
                         * @param message Plain 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 EnablementResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EnablementResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.EnablementResult;

                        /**
                         * Creates a plain object from an EnablementResult message. Also converts values to other types if specified.
                         * @param message EnablementResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.EnablementResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnablementResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EnablementResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignSharedSetService */
                    class CampaignSharedSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignSharedSetService 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 CampaignSharedSetService 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): CampaignSharedSetService;

                        /**
                         * Calls MutateCampaignSharedSets.
                         * @param request MutateCampaignSharedSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignSharedSetsResponse
                         */
                        public mutateCampaignSharedSets(request: google.ads.googleads.v23.services.IMutateCampaignSharedSetsRequest, callback: google.ads.googleads.v23.services.CampaignSharedSetService.MutateCampaignSharedSetsCallback): void;

                        /**
                         * Calls MutateCampaignSharedSets.
                         * @param request MutateCampaignSharedSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignSharedSets(request: google.ads.googleads.v23.services.IMutateCampaignSharedSetsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse>;
                    }

                    namespace CampaignSharedSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignSharedSetService|mutateCampaignSharedSets}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignSharedSetsResponse
                         */
                        type MutateCampaignSharedSetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse) => void;
                    }

                    /** Properties of a MutateCampaignSharedSetsRequest. */
                    interface IMutateCampaignSharedSetsRequest {

                        /** MutateCampaignSharedSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignSharedSetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignSharedSetOperation[]|null);

                        /** MutateCampaignSharedSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignSharedSetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignSharedSetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignSharedSetsRequest. */
                    class MutateCampaignSharedSetsRequest implements IMutateCampaignSharedSetsRequest {

                        /**
                         * Constructs a new MutateCampaignSharedSetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignSharedSetsRequest);

                        /** MutateCampaignSharedSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignSharedSetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignSharedSetOperation[];

                        /** MutateCampaignSharedSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignSharedSetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignSharedSetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignSharedSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignSharedSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignSharedSetsRequest): google.ads.googleads.v23.services.MutateCampaignSharedSetsRequest;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignSharedSetsRequest.verify|verify} messages.
                         * @param message MutateCampaignSharedSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignSharedSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignSharedSetsRequest.verify|verify} messages.
                         * @param message MutateCampaignSharedSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignSharedSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignSharedSetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignSharedSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignSharedSetsRequest;

                        /**
                         * Decodes a MutateCampaignSharedSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignSharedSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignSharedSetsRequest;

                        /**
                         * Verifies a MutateCampaignSharedSetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignSharedSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignSharedSetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignSharedSetsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignSharedSetsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignSharedSetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignSharedSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignSharedSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignSharedSetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignSharedSetOperation. */
                    interface ICampaignSharedSetOperation {

                        /** CampaignSharedSetOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignSharedSet|null);

                        /** CampaignSharedSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignSharedSetOperation. */
                    class CampaignSharedSetOperation implements ICampaignSharedSetOperation {

                        /**
                         * Constructs a new CampaignSharedSetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignSharedSetOperation);

                        /** CampaignSharedSetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignSharedSet|null);

                        /** CampaignSharedSetOperation remove. */
                        public remove?: (string|null);

                        /** CampaignSharedSetOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CampaignSharedSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSharedSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignSharedSetOperation): google.ads.googleads.v23.services.CampaignSharedSetOperation;

                        /**
                         * Encodes the specified CampaignSharedSetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignSharedSetOperation.verify|verify} messages.
                         * @param message CampaignSharedSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignSharedSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignSharedSetOperation.verify|verify} messages.
                         * @param message CampaignSharedSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignSharedSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignSharedSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignSharedSetOperation;

                        /**
                         * Decodes a CampaignSharedSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignSharedSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignSharedSetOperation;

                        /**
                         * Verifies a CampaignSharedSetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignSharedSetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignSharedSetOperation;

                        /**
                         * Creates a plain object from a CampaignSharedSetOperation message. Also converts values to other types if specified.
                         * @param message CampaignSharedSetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignSharedSetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignSharedSetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignSharedSetsResponse. */
                    interface IMutateCampaignSharedSetsResponse {

                        /** MutateCampaignSharedSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignSharedSetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignSharedSetResult[]|null);
                    }

                    /** Represents a MutateCampaignSharedSetsResponse. */
                    class MutateCampaignSharedSetsResponse implements IMutateCampaignSharedSetsResponse {

                        /**
                         * Constructs a new MutateCampaignSharedSetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignSharedSetsResponse);

                        /** MutateCampaignSharedSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignSharedSetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignSharedSetResult[];

                        /**
                         * Creates a new MutateCampaignSharedSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignSharedSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignSharedSetsResponse): google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse.verify|verify} messages.
                         * @param message MutateCampaignSharedSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignSharedSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse.verify|verify} messages.
                         * @param message MutateCampaignSharedSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignSharedSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignSharedSetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignSharedSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse;

                        /**
                         * Decodes a MutateCampaignSharedSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignSharedSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse;

                        /**
                         * Verifies a MutateCampaignSharedSetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignSharedSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignSharedSetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignSharedSetsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignSharedSetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignSharedSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignSharedSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignSharedSetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignSharedSetResult. */
                    interface IMutateCampaignSharedSetResult {

                        /** MutateCampaignSharedSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignSharedSetResult campaign_shared_set */
                        campaign_shared_set?: (google.ads.googleads.v23.resources.ICampaignSharedSet|null);
                    }

                    /** Represents a MutateCampaignSharedSetResult. */
                    class MutateCampaignSharedSetResult implements IMutateCampaignSharedSetResult {

                        /**
                         * Constructs a new MutateCampaignSharedSetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignSharedSetResult);

                        /** MutateCampaignSharedSetResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignSharedSetResult campaign_shared_set. */
                        public campaign_shared_set?: (google.ads.googleads.v23.resources.ICampaignSharedSet|null);

                        /**
                         * Creates a new MutateCampaignSharedSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignSharedSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignSharedSetResult): google.ads.googleads.v23.services.MutateCampaignSharedSetResult;

                        /**
                         * Encodes the specified MutateCampaignSharedSetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignSharedSetResult.verify|verify} messages.
                         * @param message MutateCampaignSharedSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignSharedSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignSharedSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignSharedSetResult.verify|verify} messages.
                         * @param message MutateCampaignSharedSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignSharedSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignSharedSetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignSharedSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignSharedSetResult;

                        /**
                         * Decodes a MutateCampaignSharedSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignSharedSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignSharedSetResult;

                        /**
                         * Verifies a MutateCampaignSharedSetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignSharedSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignSharedSetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignSharedSetResult;

                        /**
                         * Creates a plain object from a MutateCampaignSharedSetResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignSharedSetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignSharedSetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignSharedSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignSharedSetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ConversionActionService */
                    class ConversionActionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ConversionActionService 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 ConversionActionService 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): ConversionActionService;

                        /**
                         * Calls MutateConversionActions.
                         * @param request MutateConversionActionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateConversionActionsResponse
                         */
                        public mutateConversionActions(request: google.ads.googleads.v23.services.IMutateConversionActionsRequest, callback: google.ads.googleads.v23.services.ConversionActionService.MutateConversionActionsCallback): void;

                        /**
                         * Calls MutateConversionActions.
                         * @param request MutateConversionActionsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionActions(request: google.ads.googleads.v23.services.IMutateConversionActionsRequest): Promise<google.ads.googleads.v23.services.MutateConversionActionsResponse>;
                    }

                    namespace ConversionActionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionActionService|mutateConversionActions}.
                         * @param error Error, if any
                         * @param [response] MutateConversionActionsResponse
                         */
                        type MutateConversionActionsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateConversionActionsResponse) => void;
                    }

                    /** Properties of a MutateConversionActionsRequest. */
                    interface IMutateConversionActionsRequest {

                        /** MutateConversionActionsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionActionsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IConversionActionOperation[]|null);

                        /** MutateConversionActionsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateConversionActionsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateConversionActionsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionActionsRequest. */
                    class MutateConversionActionsRequest implements IMutateConversionActionsRequest {

                        /**
                         * Constructs a new MutateConversionActionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionActionsRequest);

                        /** MutateConversionActionsRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionActionsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IConversionActionOperation[];

                        /** MutateConversionActionsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateConversionActionsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateConversionActionsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateConversionActionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionActionsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionActionsRequest): google.ads.googleads.v23.services.MutateConversionActionsRequest;

                        /**
                         * Encodes the specified MutateConversionActionsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionActionsRequest.verify|verify} messages.
                         * @param message MutateConversionActionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionActionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionActionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionActionsRequest.verify|verify} messages.
                         * @param message MutateConversionActionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionActionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionActionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionActionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionActionsRequest;

                        /**
                         * Decodes a MutateConversionActionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionActionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionActionsRequest;

                        /**
                         * Verifies a MutateConversionActionsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionActionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionActionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionActionsRequest;

                        /**
                         * Creates a plain object from a MutateConversionActionsRequest message. Also converts values to other types if specified.
                         * @param message MutateConversionActionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionActionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionActionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionActionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionActionOperation. */
                    interface IConversionActionOperation {

                        /** ConversionActionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionActionOperation create */
                        create?: (google.ads.googleads.v23.resources.IConversionAction|null);

                        /** ConversionActionOperation update */
                        update?: (google.ads.googleads.v23.resources.IConversionAction|null);

                        /** ConversionActionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a ConversionActionOperation. */
                    class ConversionActionOperation implements IConversionActionOperation {

                        /**
                         * Constructs a new ConversionActionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionActionOperation);

                        /** ConversionActionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionActionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IConversionAction|null);

                        /** ConversionActionOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IConversionAction|null);

                        /** ConversionActionOperation remove. */
                        public remove?: (string|null);

                        /** ConversionActionOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new ConversionActionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionActionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionActionOperation): google.ads.googleads.v23.services.ConversionActionOperation;

                        /**
                         * Encodes the specified ConversionActionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionActionOperation.verify|verify} messages.
                         * @param message ConversionActionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionActionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionActionOperation.verify|verify} messages.
                         * @param message ConversionActionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionActionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionActionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionActionOperation;

                        /**
                         * Decodes a ConversionActionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionActionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionActionOperation;

                        /**
                         * Verifies a ConversionActionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionActionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionActionOperation;

                        /**
                         * Creates a plain object from a ConversionActionOperation message. Also converts values to other types if specified.
                         * @param message ConversionActionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionActionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionActionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionActionsResponse. */
                    interface IMutateConversionActionsResponse {

                        /** MutateConversionActionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionActionsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateConversionActionResult[]|null);
                    }

                    /** Represents a MutateConversionActionsResponse. */
                    class MutateConversionActionsResponse implements IMutateConversionActionsResponse {

                        /**
                         * Constructs a new MutateConversionActionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionActionsResponse);

                        /** MutateConversionActionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionActionsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateConversionActionResult[];

                        /**
                         * Creates a new MutateConversionActionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionActionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionActionsResponse): google.ads.googleads.v23.services.MutateConversionActionsResponse;

                        /**
                         * Encodes the specified MutateConversionActionsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionActionsResponse.verify|verify} messages.
                         * @param message MutateConversionActionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionActionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionActionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionActionsResponse.verify|verify} messages.
                         * @param message MutateConversionActionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionActionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionActionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionActionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionActionsResponse;

                        /**
                         * Decodes a MutateConversionActionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionActionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionActionsResponse;

                        /**
                         * Verifies a MutateConversionActionsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionActionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionActionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionActionsResponse;

                        /**
                         * Creates a plain object from a MutateConversionActionsResponse message. Also converts values to other types if specified.
                         * @param message MutateConversionActionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionActionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionActionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionActionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionActionResult. */
                    interface IMutateConversionActionResult {

                        /** MutateConversionActionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionActionResult conversion_action */
                        conversion_action?: (google.ads.googleads.v23.resources.IConversionAction|null);
                    }

                    /** Represents a MutateConversionActionResult. */
                    class MutateConversionActionResult implements IMutateConversionActionResult {

                        /**
                         * Constructs a new MutateConversionActionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionActionResult);

                        /** MutateConversionActionResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionActionResult conversion_action. */
                        public conversion_action?: (google.ads.googleads.v23.resources.IConversionAction|null);

                        /**
                         * Creates a new MutateConversionActionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionActionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionActionResult): google.ads.googleads.v23.services.MutateConversionActionResult;

                        /**
                         * Encodes the specified MutateConversionActionResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionActionResult.verify|verify} messages.
                         * @param message MutateConversionActionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionActionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionActionResult.verify|verify} messages.
                         * @param message MutateConversionActionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionActionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionActionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionActionResult;

                        /**
                         * Decodes a MutateConversionActionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionActionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionActionResult;

                        /**
                         * Verifies a MutateConversionActionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionActionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionActionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionActionResult;

                        /**
                         * Creates a plain object from a MutateConversionActionResult message. Also converts values to other types if specified.
                         * @param message MutateConversionActionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionActionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionActionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionActionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ConversionCustomVariableService */
                    class ConversionCustomVariableService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ConversionCustomVariableService 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 ConversionCustomVariableService 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): ConversionCustomVariableService;

                        /**
                         * Calls MutateConversionCustomVariables.
                         * @param request MutateConversionCustomVariablesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateConversionCustomVariablesResponse
                         */
                        public mutateConversionCustomVariables(request: google.ads.googleads.v23.services.IMutateConversionCustomVariablesRequest, callback: google.ads.googleads.v23.services.ConversionCustomVariableService.MutateConversionCustomVariablesCallback): void;

                        /**
                         * Calls MutateConversionCustomVariables.
                         * @param request MutateConversionCustomVariablesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionCustomVariables(request: google.ads.googleads.v23.services.IMutateConversionCustomVariablesRequest): Promise<google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse>;
                    }

                    namespace ConversionCustomVariableService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionCustomVariableService|mutateConversionCustomVariables}.
                         * @param error Error, if any
                         * @param [response] MutateConversionCustomVariablesResponse
                         */
                        type MutateConversionCustomVariablesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse) => void;
                    }

                    /** Properties of a MutateConversionCustomVariablesRequest. */
                    interface IMutateConversionCustomVariablesRequest {

                        /** MutateConversionCustomVariablesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionCustomVariablesRequest operations */
                        operations?: (google.ads.googleads.v23.services.IConversionCustomVariableOperation[]|null);

                        /** MutateConversionCustomVariablesRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateConversionCustomVariablesRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateConversionCustomVariablesRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionCustomVariablesRequest. */
                    class MutateConversionCustomVariablesRequest implements IMutateConversionCustomVariablesRequest {

                        /**
                         * Constructs a new MutateConversionCustomVariablesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionCustomVariablesRequest);

                        /** MutateConversionCustomVariablesRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionCustomVariablesRequest operations. */
                        public operations: google.ads.googleads.v23.services.IConversionCustomVariableOperation[];

                        /** MutateConversionCustomVariablesRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateConversionCustomVariablesRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateConversionCustomVariablesRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateConversionCustomVariablesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionCustomVariablesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionCustomVariablesRequest): google.ads.googleads.v23.services.MutateConversionCustomVariablesRequest;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionCustomVariablesRequest.verify|verify} messages.
                         * @param message MutateConversionCustomVariablesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionCustomVariablesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionCustomVariablesRequest.verify|verify} messages.
                         * @param message MutateConversionCustomVariablesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionCustomVariablesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionCustomVariablesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionCustomVariablesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionCustomVariablesRequest;

                        /**
                         * Decodes a MutateConversionCustomVariablesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionCustomVariablesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionCustomVariablesRequest;

                        /**
                         * Verifies a MutateConversionCustomVariablesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionCustomVariablesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionCustomVariablesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionCustomVariablesRequest;

                        /**
                         * Creates a plain object from a MutateConversionCustomVariablesRequest message. Also converts values to other types if specified.
                         * @param message MutateConversionCustomVariablesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionCustomVariablesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionCustomVariablesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionCustomVariablesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionCustomVariableOperation. */
                    interface IConversionCustomVariableOperation {

                        /** ConversionCustomVariableOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionCustomVariableOperation create */
                        create?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);

                        /** ConversionCustomVariableOperation update */
                        update?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);
                    }

                    /** Represents a ConversionCustomVariableOperation. */
                    class ConversionCustomVariableOperation implements IConversionCustomVariableOperation {

                        /**
                         * Constructs a new ConversionCustomVariableOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionCustomVariableOperation);

                        /** ConversionCustomVariableOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionCustomVariableOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);

                        /** ConversionCustomVariableOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);

                        /** ConversionCustomVariableOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new ConversionCustomVariableOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionCustomVariableOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionCustomVariableOperation): google.ads.googleads.v23.services.ConversionCustomVariableOperation;

                        /**
                         * Encodes the specified ConversionCustomVariableOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionCustomVariableOperation.verify|verify} messages.
                         * @param message ConversionCustomVariableOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionCustomVariableOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariableOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionCustomVariableOperation.verify|verify} messages.
                         * @param message ConversionCustomVariableOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionCustomVariableOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariableOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionCustomVariableOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionCustomVariableOperation;

                        /**
                         * Decodes a ConversionCustomVariableOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionCustomVariableOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionCustomVariableOperation;

                        /**
                         * Verifies a ConversionCustomVariableOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariableOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionCustomVariableOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionCustomVariableOperation;

                        /**
                         * Creates a plain object from a ConversionCustomVariableOperation message. Also converts values to other types if specified.
                         * @param message ConversionCustomVariableOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionCustomVariableOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariableOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionCustomVariableOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionCustomVariablesResponse. */
                    interface IMutateConversionCustomVariablesResponse {

                        /** MutateConversionCustomVariablesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionCustomVariablesResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateConversionCustomVariableResult[]|null);
                    }

                    /** Represents a MutateConversionCustomVariablesResponse. */
                    class MutateConversionCustomVariablesResponse implements IMutateConversionCustomVariablesResponse {

                        /**
                         * Constructs a new MutateConversionCustomVariablesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionCustomVariablesResponse);

                        /** MutateConversionCustomVariablesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionCustomVariablesResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateConversionCustomVariableResult[];

                        /**
                         * Creates a new MutateConversionCustomVariablesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionCustomVariablesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionCustomVariablesResponse): google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse.verify|verify} messages.
                         * @param message MutateConversionCustomVariablesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionCustomVariablesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse.verify|verify} messages.
                         * @param message MutateConversionCustomVariablesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionCustomVariablesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionCustomVariablesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionCustomVariablesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse;

                        /**
                         * Decodes a MutateConversionCustomVariablesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionCustomVariablesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse;

                        /**
                         * Verifies a MutateConversionCustomVariablesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionCustomVariablesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionCustomVariablesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse;

                        /**
                         * Creates a plain object from a MutateConversionCustomVariablesResponse message. Also converts values to other types if specified.
                         * @param message MutateConversionCustomVariablesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionCustomVariablesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionCustomVariablesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionCustomVariablesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionCustomVariableResult. */
                    interface IMutateConversionCustomVariableResult {

                        /** MutateConversionCustomVariableResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionCustomVariableResult conversion_custom_variable */
                        conversion_custom_variable?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);
                    }

                    /** Represents a MutateConversionCustomVariableResult. */
                    class MutateConversionCustomVariableResult implements IMutateConversionCustomVariableResult {

                        /**
                         * Constructs a new MutateConversionCustomVariableResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionCustomVariableResult);

                        /** MutateConversionCustomVariableResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionCustomVariableResult conversion_custom_variable. */
                        public conversion_custom_variable?: (google.ads.googleads.v23.resources.IConversionCustomVariable|null);

                        /**
                         * Creates a new MutateConversionCustomVariableResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionCustomVariableResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionCustomVariableResult): google.ads.googleads.v23.services.MutateConversionCustomVariableResult;

                        /**
                         * Encodes the specified MutateConversionCustomVariableResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionCustomVariableResult.verify|verify} messages.
                         * @param message MutateConversionCustomVariableResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionCustomVariableResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionCustomVariableResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionCustomVariableResult.verify|verify} messages.
                         * @param message MutateConversionCustomVariableResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionCustomVariableResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionCustomVariableResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionCustomVariableResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionCustomVariableResult;

                        /**
                         * Decodes a MutateConversionCustomVariableResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionCustomVariableResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionCustomVariableResult;

                        /**
                         * Verifies a MutateConversionCustomVariableResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionCustomVariableResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionCustomVariableResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionCustomVariableResult;

                        /**
                         * Creates a plain object from a MutateConversionCustomVariableResult message. Also converts values to other types if specified.
                         * @param message MutateConversionCustomVariableResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionCustomVariableResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionCustomVariableResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionCustomVariableResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ConversionGoalCampaignConfigService */
                    class ConversionGoalCampaignConfigService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ConversionGoalCampaignConfigService 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 ConversionGoalCampaignConfigService 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): ConversionGoalCampaignConfigService;

                        /**
                         * Calls MutateConversionGoalCampaignConfigs.
                         * @param request MutateConversionGoalCampaignConfigsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateConversionGoalCampaignConfigsResponse
                         */
                        public mutateConversionGoalCampaignConfigs(request: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsRequest, callback: google.ads.googleads.v23.services.ConversionGoalCampaignConfigService.MutateConversionGoalCampaignConfigsCallback): void;

                        /**
                         * Calls MutateConversionGoalCampaignConfigs.
                         * @param request MutateConversionGoalCampaignConfigsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionGoalCampaignConfigs(request: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsRequest): Promise<google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse>;
                    }

                    namespace ConversionGoalCampaignConfigService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionGoalCampaignConfigService|mutateConversionGoalCampaignConfigs}.
                         * @param error Error, if any
                         * @param [response] MutateConversionGoalCampaignConfigsResponse
                         */
                        type MutateConversionGoalCampaignConfigsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse) => void;
                    }

                    /** Properties of a MutateConversionGoalCampaignConfigsRequest. */
                    interface IMutateConversionGoalCampaignConfigsRequest {

                        /** MutateConversionGoalCampaignConfigsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionGoalCampaignConfigsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation[]|null);

                        /** MutateConversionGoalCampaignConfigsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateConversionGoalCampaignConfigsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionGoalCampaignConfigsRequest. */
                    class MutateConversionGoalCampaignConfigsRequest implements IMutateConversionGoalCampaignConfigsRequest {

                        /**
                         * Constructs a new MutateConversionGoalCampaignConfigsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsRequest);

                        /** MutateConversionGoalCampaignConfigsRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionGoalCampaignConfigsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation[];

                        /** MutateConversionGoalCampaignConfigsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateConversionGoalCampaignConfigsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateConversionGoalCampaignConfigsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionGoalCampaignConfigsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsRequest): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsRequest;

                        /**
                         * Encodes the specified MutateConversionGoalCampaignConfigsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsRequest.verify|verify} messages.
                         * @param message MutateConversionGoalCampaignConfigsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionGoalCampaignConfigsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsRequest.verify|verify} messages.
                         * @param message MutateConversionGoalCampaignConfigsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionGoalCampaignConfigsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionGoalCampaignConfigsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsRequest;

                        /**
                         * Decodes a MutateConversionGoalCampaignConfigsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionGoalCampaignConfigsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsRequest;

                        /**
                         * Verifies a MutateConversionGoalCampaignConfigsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionGoalCampaignConfigsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionGoalCampaignConfigsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsRequest;

                        /**
                         * Creates a plain object from a MutateConversionGoalCampaignConfigsRequest message. Also converts values to other types if specified.
                         * @param message MutateConversionGoalCampaignConfigsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionGoalCampaignConfigsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionGoalCampaignConfigsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionGoalCampaignConfigOperation. */
                    interface IConversionGoalCampaignConfigOperation {

                        /** ConversionGoalCampaignConfigOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionGoalCampaignConfigOperation update */
                        update?: (google.ads.googleads.v23.resources.IConversionGoalCampaignConfig|null);
                    }

                    /** Represents a ConversionGoalCampaignConfigOperation. */
                    class ConversionGoalCampaignConfigOperation implements IConversionGoalCampaignConfigOperation {

                        /**
                         * Constructs a new ConversionGoalCampaignConfigOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation);

                        /** ConversionGoalCampaignConfigOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionGoalCampaignConfigOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IConversionGoalCampaignConfig|null);

                        /** ConversionGoalCampaignConfigOperation operation. */
                        public operation?: "update";

                        /**
                         * Creates a new ConversionGoalCampaignConfigOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionGoalCampaignConfigOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation): google.ads.googleads.v23.services.ConversionGoalCampaignConfigOperation;

                        /**
                         * Encodes the specified ConversionGoalCampaignConfigOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionGoalCampaignConfigOperation.verify|verify} messages.
                         * @param message ConversionGoalCampaignConfigOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionGoalCampaignConfigOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionGoalCampaignConfigOperation.verify|verify} messages.
                         * @param message ConversionGoalCampaignConfigOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionGoalCampaignConfigOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionGoalCampaignConfigOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionGoalCampaignConfigOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionGoalCampaignConfigOperation;

                        /**
                         * Decodes a ConversionGoalCampaignConfigOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionGoalCampaignConfigOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionGoalCampaignConfigOperation;

                        /**
                         * Verifies a ConversionGoalCampaignConfigOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionGoalCampaignConfigOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionGoalCampaignConfigOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionGoalCampaignConfigOperation;

                        /**
                         * Creates a plain object from a ConversionGoalCampaignConfigOperation message. Also converts values to other types if specified.
                         * @param message ConversionGoalCampaignConfigOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionGoalCampaignConfigOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionGoalCampaignConfigOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionGoalCampaignConfigOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionGoalCampaignConfigsResponse. */
                    interface IMutateConversionGoalCampaignConfigsResponse {

                        /** MutateConversionGoalCampaignConfigsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult[]|null);
                    }

                    /** Represents a MutateConversionGoalCampaignConfigsResponse. */
                    class MutateConversionGoalCampaignConfigsResponse implements IMutateConversionGoalCampaignConfigsResponse {

                        /**
                         * Constructs a new MutateConversionGoalCampaignConfigsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsResponse);

                        /** MutateConversionGoalCampaignConfigsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult[];

                        /**
                         * Creates a new MutateConversionGoalCampaignConfigsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionGoalCampaignConfigsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsResponse): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse;

                        /**
                         * Encodes the specified MutateConversionGoalCampaignConfigsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse.verify|verify} messages.
                         * @param message MutateConversionGoalCampaignConfigsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionGoalCampaignConfigsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse.verify|verify} messages.
                         * @param message MutateConversionGoalCampaignConfigsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionGoalCampaignConfigsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionGoalCampaignConfigsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse;

                        /**
                         * Decodes a MutateConversionGoalCampaignConfigsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionGoalCampaignConfigsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse;

                        /**
                         * Verifies a MutateConversionGoalCampaignConfigsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionGoalCampaignConfigsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionGoalCampaignConfigsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse;

                        /**
                         * Creates a plain object from a MutateConversionGoalCampaignConfigsResponse message. Also converts values to other types if specified.
                         * @param message MutateConversionGoalCampaignConfigsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionGoalCampaignConfigsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionGoalCampaignConfigsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionGoalCampaignConfigResult. */
                    interface IMutateConversionGoalCampaignConfigResult {

                        /** MutateConversionGoalCampaignConfigResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionGoalCampaignConfigResult conversion_goal_campaign_config */
                        conversion_goal_campaign_config?: (google.ads.googleads.v23.resources.IConversionGoalCampaignConfig|null);
                    }

                    /** Represents a MutateConversionGoalCampaignConfigResult. */
                    class MutateConversionGoalCampaignConfigResult implements IMutateConversionGoalCampaignConfigResult {

                        /**
                         * Constructs a new MutateConversionGoalCampaignConfigResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult);

                        /** MutateConversionGoalCampaignConfigResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionGoalCampaignConfigResult conversion_goal_campaign_config. */
                        public conversion_goal_campaign_config?: (google.ads.googleads.v23.resources.IConversionGoalCampaignConfig|null);

                        /**
                         * Creates a new MutateConversionGoalCampaignConfigResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionGoalCampaignConfigResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigResult;

                        /**
                         * Encodes the specified MutateConversionGoalCampaignConfigResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigResult.verify|verify} messages.
                         * @param message MutateConversionGoalCampaignConfigResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionGoalCampaignConfigResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigResult.verify|verify} messages.
                         * @param message MutateConversionGoalCampaignConfigResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionGoalCampaignConfigResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionGoalCampaignConfigResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionGoalCampaignConfigResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigResult;

                        /**
                         * Decodes a MutateConversionGoalCampaignConfigResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionGoalCampaignConfigResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigResult;

                        /**
                         * Verifies a MutateConversionGoalCampaignConfigResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionGoalCampaignConfigResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionGoalCampaignConfigResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigResult;

                        /**
                         * Creates a plain object from a MutateConversionGoalCampaignConfigResult message. Also converts values to other types if specified.
                         * @param message MutateConversionGoalCampaignConfigResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionGoalCampaignConfigResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionGoalCampaignConfigResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionGoalCampaignConfigResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ConversionValueRuleService */
                    class ConversionValueRuleService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ConversionValueRuleService 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 ConversionValueRuleService 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): ConversionValueRuleService;

                        /**
                         * Calls MutateConversionValueRules.
                         * @param request MutateConversionValueRulesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateConversionValueRulesResponse
                         */
                        public mutateConversionValueRules(request: google.ads.googleads.v23.services.IMutateConversionValueRulesRequest, callback: google.ads.googleads.v23.services.ConversionValueRuleService.MutateConversionValueRulesCallback): void;

                        /**
                         * Calls MutateConversionValueRules.
                         * @param request MutateConversionValueRulesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionValueRules(request: google.ads.googleads.v23.services.IMutateConversionValueRulesRequest): Promise<google.ads.googleads.v23.services.MutateConversionValueRulesResponse>;
                    }

                    namespace ConversionValueRuleService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionValueRuleService|mutateConversionValueRules}.
                         * @param error Error, if any
                         * @param [response] MutateConversionValueRulesResponse
                         */
                        type MutateConversionValueRulesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateConversionValueRulesResponse) => void;
                    }

                    /** Properties of a MutateConversionValueRulesRequest. */
                    interface IMutateConversionValueRulesRequest {

                        /** MutateConversionValueRulesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionValueRulesRequest operations */
                        operations?: (google.ads.googleads.v23.services.IConversionValueRuleOperation[]|null);

                        /** MutateConversionValueRulesRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateConversionValueRulesRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateConversionValueRulesRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionValueRulesRequest. */
                    class MutateConversionValueRulesRequest implements IMutateConversionValueRulesRequest {

                        /**
                         * Constructs a new MutateConversionValueRulesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionValueRulesRequest);

                        /** MutateConversionValueRulesRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionValueRulesRequest operations. */
                        public operations: google.ads.googleads.v23.services.IConversionValueRuleOperation[];

                        /** MutateConversionValueRulesRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateConversionValueRulesRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateConversionValueRulesRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateConversionValueRulesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionValueRulesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionValueRulesRequest): google.ads.googleads.v23.services.MutateConversionValueRulesRequest;

                        /**
                         * Encodes the specified MutateConversionValueRulesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRulesRequest.verify|verify} messages.
                         * @param message MutateConversionValueRulesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionValueRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRulesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRulesRequest.verify|verify} messages.
                         * @param message MutateConversionValueRulesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionValueRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRulesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionValueRulesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionValueRulesRequest;

                        /**
                         * Decodes a MutateConversionValueRulesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionValueRulesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionValueRulesRequest;

                        /**
                         * Verifies a MutateConversionValueRulesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRulesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionValueRulesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionValueRulesRequest;

                        /**
                         * Creates a plain object from a MutateConversionValueRulesRequest message. Also converts values to other types if specified.
                         * @param message MutateConversionValueRulesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionValueRulesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRulesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionValueRulesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionValueRuleOperation. */
                    interface IConversionValueRuleOperation {

                        /** ConversionValueRuleOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleOperation create */
                        create?: (google.ads.googleads.v23.resources.IConversionValueRule|null);

                        /** ConversionValueRuleOperation update */
                        update?: (google.ads.googleads.v23.resources.IConversionValueRule|null);

                        /** ConversionValueRuleOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a ConversionValueRuleOperation. */
                    class ConversionValueRuleOperation implements IConversionValueRuleOperation {

                        /**
                         * Constructs a new ConversionValueRuleOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionValueRuleOperation);

                        /** ConversionValueRuleOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IConversionValueRule|null);

                        /** ConversionValueRuleOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IConversionValueRule|null);

                        /** ConversionValueRuleOperation remove. */
                        public remove?: (string|null);

                        /** ConversionValueRuleOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new ConversionValueRuleOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionValueRuleOperation): google.ads.googleads.v23.services.ConversionValueRuleOperation;

                        /**
                         * Encodes the specified ConversionValueRuleOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionValueRuleOperation.verify|verify} messages.
                         * @param message ConversionValueRuleOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionValueRuleOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionValueRuleOperation.verify|verify} messages.
                         * @param message ConversionValueRuleOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionValueRuleOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRuleOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionValueRuleOperation;

                        /**
                         * Decodes a ConversionValueRuleOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRuleOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionValueRuleOperation;

                        /**
                         * Verifies a ConversionValueRuleOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRuleOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionValueRuleOperation;

                        /**
                         * Creates a plain object from a ConversionValueRuleOperation message. Also converts values to other types if specified.
                         * @param message ConversionValueRuleOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionValueRuleOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRuleOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionValueRulesResponse. */
                    interface IMutateConversionValueRulesResponse {

                        /** MutateConversionValueRulesResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateConversionValueRuleResult[]|null);

                        /** MutateConversionValueRulesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateConversionValueRulesResponse. */
                    class MutateConversionValueRulesResponse implements IMutateConversionValueRulesResponse {

                        /**
                         * Constructs a new MutateConversionValueRulesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionValueRulesResponse);

                        /** MutateConversionValueRulesResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateConversionValueRuleResult[];

                        /** MutateConversionValueRulesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateConversionValueRulesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionValueRulesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionValueRulesResponse): google.ads.googleads.v23.services.MutateConversionValueRulesResponse;

                        /**
                         * Encodes the specified MutateConversionValueRulesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRulesResponse.verify|verify} messages.
                         * @param message MutateConversionValueRulesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionValueRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRulesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRulesResponse.verify|verify} messages.
                         * @param message MutateConversionValueRulesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionValueRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRulesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionValueRulesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionValueRulesResponse;

                        /**
                         * Decodes a MutateConversionValueRulesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionValueRulesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionValueRulesResponse;

                        /**
                         * Verifies a MutateConversionValueRulesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRulesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionValueRulesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionValueRulesResponse;

                        /**
                         * Creates a plain object from a MutateConversionValueRulesResponse message. Also converts values to other types if specified.
                         * @param message MutateConversionValueRulesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionValueRulesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRulesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionValueRulesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionValueRuleResult. */
                    interface IMutateConversionValueRuleResult {

                        /** MutateConversionValueRuleResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionValueRuleResult conversion_value_rule */
                        conversion_value_rule?: (google.ads.googleads.v23.resources.IConversionValueRule|null);
                    }

                    /** Represents a MutateConversionValueRuleResult. */
                    class MutateConversionValueRuleResult implements IMutateConversionValueRuleResult {

                        /**
                         * Constructs a new MutateConversionValueRuleResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleResult);

                        /** MutateConversionValueRuleResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionValueRuleResult conversion_value_rule. */
                        public conversion_value_rule?: (google.ads.googleads.v23.resources.IConversionValueRule|null);

                        /**
                         * Creates a new MutateConversionValueRuleResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionValueRuleResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleResult): google.ads.googleads.v23.services.MutateConversionValueRuleResult;

                        /**
                         * Encodes the specified MutateConversionValueRuleResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleResult.verify|verify} messages.
                         * @param message MutateConversionValueRuleResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionValueRuleResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleResult.verify|verify} messages.
                         * @param message MutateConversionValueRuleResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionValueRuleResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionValueRuleResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionValueRuleResult;

                        /**
                         * Decodes a MutateConversionValueRuleResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionValueRuleResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionValueRuleResult;

                        /**
                         * Verifies a MutateConversionValueRuleResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionValueRuleResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionValueRuleResult;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleResult message. Also converts values to other types if specified.
                         * @param message MutateConversionValueRuleResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionValueRuleResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionValueRuleResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ConversionValueRuleSetService */
                    class ConversionValueRuleSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ConversionValueRuleSetService 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 ConversionValueRuleSetService 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): ConversionValueRuleSetService;

                        /**
                         * Calls MutateConversionValueRuleSets.
                         * @param request MutateConversionValueRuleSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateConversionValueRuleSetsResponse
                         */
                        public mutateConversionValueRuleSets(request: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsRequest, callback: google.ads.googleads.v23.services.ConversionValueRuleSetService.MutateConversionValueRuleSetsCallback): void;

                        /**
                         * Calls MutateConversionValueRuleSets.
                         * @param request MutateConversionValueRuleSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionValueRuleSets(request: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsRequest): Promise<google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse>;
                    }

                    namespace ConversionValueRuleSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionValueRuleSetService|mutateConversionValueRuleSets}.
                         * @param error Error, if any
                         * @param [response] MutateConversionValueRuleSetsResponse
                         */
                        type MutateConversionValueRuleSetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse) => void;
                    }

                    /** Properties of a MutateConversionValueRuleSetsRequest. */
                    interface IMutateConversionValueRuleSetsRequest {

                        /** MutateConversionValueRuleSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionValueRuleSetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IConversionValueRuleSetOperation[]|null);

                        /** MutateConversionValueRuleSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateConversionValueRuleSetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateConversionValueRuleSetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionValueRuleSetsRequest. */
                    class MutateConversionValueRuleSetsRequest implements IMutateConversionValueRuleSetsRequest {

                        /**
                         * Constructs a new MutateConversionValueRuleSetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsRequest);

                        /** MutateConversionValueRuleSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionValueRuleSetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IConversionValueRuleSetOperation[];

                        /** MutateConversionValueRuleSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateConversionValueRuleSetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateConversionValueRuleSetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateConversionValueRuleSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionValueRuleSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsRequest): google.ads.googleads.v23.services.MutateConversionValueRuleSetsRequest;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleSetsRequest.verify|verify} messages.
                         * @param message MutateConversionValueRuleSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleSetsRequest.verify|verify} messages.
                         * @param message MutateConversionValueRuleSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleSetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionValueRuleSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionValueRuleSetsRequest;

                        /**
                         * Decodes a MutateConversionValueRuleSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionValueRuleSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionValueRuleSetsRequest;

                        /**
                         * Verifies a MutateConversionValueRuleSetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionValueRuleSetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionValueRuleSetsRequest;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleSetsRequest message. Also converts values to other types if specified.
                         * @param message MutateConversionValueRuleSetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionValueRuleSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionValueRuleSetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionValueRuleSetOperation. */
                    interface IConversionValueRuleSetOperation {

                        /** ConversionValueRuleSetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleSetOperation create */
                        create?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);

                        /** ConversionValueRuleSetOperation update */
                        update?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);

                        /** ConversionValueRuleSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a ConversionValueRuleSetOperation. */
                    class ConversionValueRuleSetOperation implements IConversionValueRuleSetOperation {

                        /**
                         * Constructs a new ConversionValueRuleSetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionValueRuleSetOperation);

                        /** ConversionValueRuleSetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleSetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);

                        /** ConversionValueRuleSetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);

                        /** ConversionValueRuleSetOperation remove. */
                        public remove?: (string|null);

                        /** ConversionValueRuleSetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new ConversionValueRuleSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionValueRuleSetOperation): google.ads.googleads.v23.services.ConversionValueRuleSetOperation;

                        /**
                         * Encodes the specified ConversionValueRuleSetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionValueRuleSetOperation.verify|verify} messages.
                         * @param message ConversionValueRuleSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionValueRuleSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionValueRuleSetOperation.verify|verify} messages.
                         * @param message ConversionValueRuleSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionValueRuleSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionValueRuleSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionValueRuleSetOperation;

                        /**
                         * Decodes a ConversionValueRuleSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionValueRuleSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionValueRuleSetOperation;

                        /**
                         * Verifies a ConversionValueRuleSetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionValueRuleSetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionValueRuleSetOperation;

                        /**
                         * Creates a plain object from a ConversionValueRuleSetOperation message. Also converts values to other types if specified.
                         * @param message ConversionValueRuleSetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionValueRuleSetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionValueRuleSetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionValueRuleSetsResponse. */
                    interface IMutateConversionValueRuleSetsResponse {

                        /** MutateConversionValueRuleSetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult[]|null);

                        /** MutateConversionValueRuleSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateConversionValueRuleSetsResponse. */
                    class MutateConversionValueRuleSetsResponse implements IMutateConversionValueRuleSetsResponse {

                        /**
                         * Constructs a new MutateConversionValueRuleSetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsResponse);

                        /** MutateConversionValueRuleSetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult[];

                        /** MutateConversionValueRuleSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateConversionValueRuleSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionValueRuleSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsResponse): google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse.verify|verify} messages.
                         * @param message MutateConversionValueRuleSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse.verify|verify} messages.
                         * @param message MutateConversionValueRuleSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionValueRuleSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleSetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionValueRuleSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse;

                        /**
                         * Decodes a MutateConversionValueRuleSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionValueRuleSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse;

                        /**
                         * Verifies a MutateConversionValueRuleSetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionValueRuleSetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleSetsResponse message. Also converts values to other types if specified.
                         * @param message MutateConversionValueRuleSetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionValueRuleSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionValueRuleSetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateConversionValueRuleSetResult. */
                    interface IMutateConversionValueRuleSetResult {

                        /** MutateConversionValueRuleSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionValueRuleSetResult conversion_value_rule_set */
                        conversion_value_rule_set?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);
                    }

                    /** Represents a MutateConversionValueRuleSetResult. */
                    class MutateConversionValueRuleSetResult implements IMutateConversionValueRuleSetResult {

                        /**
                         * Constructs a new MutateConversionValueRuleSetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult);

                        /** MutateConversionValueRuleSetResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionValueRuleSetResult conversion_value_rule_set. */
                        public conversion_value_rule_set?: (google.ads.googleads.v23.resources.IConversionValueRuleSet|null);

                        /**
                         * Creates a new MutateConversionValueRuleSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateConversionValueRuleSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult): google.ads.googleads.v23.services.MutateConversionValueRuleSetResult;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleSetResult.verify|verify} messages.
                         * @param message MutateConversionValueRuleSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateConversionValueRuleSetResult.verify|verify} messages.
                         * @param message MutateConversionValueRuleSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateConversionValueRuleSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleSetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateConversionValueRuleSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateConversionValueRuleSetResult;

                        /**
                         * Decodes a MutateConversionValueRuleSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateConversionValueRuleSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateConversionValueRuleSetResult;

                        /**
                         * Verifies a MutateConversionValueRuleSetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateConversionValueRuleSetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateConversionValueRuleSetResult;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleSetResult message. Also converts values to other types if specified.
                         * @param message MutateConversionValueRuleSetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateConversionValueRuleSetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateConversionValueRuleSetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomConversionGoalService */
                    class CustomConversionGoalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomConversionGoalService 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 CustomConversionGoalService 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): CustomConversionGoalService;

                        /**
                         * Calls MutateCustomConversionGoals.
                         * @param request MutateCustomConversionGoalsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomConversionGoalsResponse
                         */
                        public mutateCustomConversionGoals(request: google.ads.googleads.v23.services.IMutateCustomConversionGoalsRequest, callback: google.ads.googleads.v23.services.CustomConversionGoalService.MutateCustomConversionGoalsCallback): void;

                        /**
                         * Calls MutateCustomConversionGoals.
                         * @param request MutateCustomConversionGoalsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomConversionGoals(request: google.ads.googleads.v23.services.IMutateCustomConversionGoalsRequest): Promise<google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse>;
                    }

                    namespace CustomConversionGoalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomConversionGoalService|mutateCustomConversionGoals}.
                         * @param error Error, if any
                         * @param [response] MutateCustomConversionGoalsResponse
                         */
                        type MutateCustomConversionGoalsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse) => void;
                    }

                    /** Properties of a MutateCustomConversionGoalsRequest. */
                    interface IMutateCustomConversionGoalsRequest {

                        /** MutateCustomConversionGoalsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomConversionGoalsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomConversionGoalOperation[]|null);

                        /** MutateCustomConversionGoalsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomConversionGoalsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomConversionGoalsRequest. */
                    class MutateCustomConversionGoalsRequest implements IMutateCustomConversionGoalsRequest {

                        /**
                         * Constructs a new MutateCustomConversionGoalsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomConversionGoalsRequest);

                        /** MutateCustomConversionGoalsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomConversionGoalsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomConversionGoalOperation[];

                        /** MutateCustomConversionGoalsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomConversionGoalsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomConversionGoalsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomConversionGoalsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomConversionGoalsRequest): google.ads.googleads.v23.services.MutateCustomConversionGoalsRequest;

                        /**
                         * Encodes the specified MutateCustomConversionGoalsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomConversionGoalsRequest.verify|verify} messages.
                         * @param message MutateCustomConversionGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomConversionGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomConversionGoalsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomConversionGoalsRequest.verify|verify} messages.
                         * @param message MutateCustomConversionGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomConversionGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomConversionGoalsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomConversionGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomConversionGoalsRequest;

                        /**
                         * Decodes a MutateCustomConversionGoalsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomConversionGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomConversionGoalsRequest;

                        /**
                         * Verifies a MutateCustomConversionGoalsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomConversionGoalsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomConversionGoalsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomConversionGoalsRequest;

                        /**
                         * Creates a plain object from a MutateCustomConversionGoalsRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomConversionGoalsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomConversionGoalsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomConversionGoalsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomConversionGoalsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomConversionGoalOperation. */
                    interface ICustomConversionGoalOperation {

                        /** CustomConversionGoalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomConversionGoalOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);

                        /** CustomConversionGoalOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);

                        /** CustomConversionGoalOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomConversionGoalOperation. */
                    class CustomConversionGoalOperation implements ICustomConversionGoalOperation {

                        /**
                         * Constructs a new CustomConversionGoalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomConversionGoalOperation);

                        /** CustomConversionGoalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomConversionGoalOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);

                        /** CustomConversionGoalOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);

                        /** CustomConversionGoalOperation remove. */
                        public remove?: (string|null);

                        /** CustomConversionGoalOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CustomConversionGoalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomConversionGoalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomConversionGoalOperation): google.ads.googleads.v23.services.CustomConversionGoalOperation;

                        /**
                         * Encodes the specified CustomConversionGoalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomConversionGoalOperation.verify|verify} messages.
                         * @param message CustomConversionGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomConversionGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomConversionGoalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomConversionGoalOperation.verify|verify} messages.
                         * @param message CustomConversionGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomConversionGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomConversionGoalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomConversionGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomConversionGoalOperation;

                        /**
                         * Decodes a CustomConversionGoalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomConversionGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomConversionGoalOperation;

                        /**
                         * Verifies a CustomConversionGoalOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomConversionGoalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomConversionGoalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomConversionGoalOperation;

                        /**
                         * Creates a plain object from a CustomConversionGoalOperation message. Also converts values to other types if specified.
                         * @param message CustomConversionGoalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomConversionGoalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomConversionGoalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomConversionGoalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomConversionGoalsResponse. */
                    interface IMutateCustomConversionGoalsResponse {

                        /** MutateCustomConversionGoalsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomConversionGoalResult[]|null);
                    }

                    /** Represents a MutateCustomConversionGoalsResponse. */
                    class MutateCustomConversionGoalsResponse implements IMutateCustomConversionGoalsResponse {

                        /**
                         * Constructs a new MutateCustomConversionGoalsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomConversionGoalsResponse);

                        /** MutateCustomConversionGoalsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomConversionGoalResult[];

                        /**
                         * Creates a new MutateCustomConversionGoalsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomConversionGoalsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomConversionGoalsResponse): google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse;

                        /**
                         * Encodes the specified MutateCustomConversionGoalsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse.verify|verify} messages.
                         * @param message MutateCustomConversionGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomConversionGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomConversionGoalsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse.verify|verify} messages.
                         * @param message MutateCustomConversionGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomConversionGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomConversionGoalsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomConversionGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse;

                        /**
                         * Decodes a MutateCustomConversionGoalsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomConversionGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse;

                        /**
                         * Verifies a MutateCustomConversionGoalsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomConversionGoalsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomConversionGoalsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse;

                        /**
                         * Creates a plain object from a MutateCustomConversionGoalsResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomConversionGoalsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomConversionGoalsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomConversionGoalsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomConversionGoalsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomConversionGoalResult. */
                    interface IMutateCustomConversionGoalResult {

                        /** MutateCustomConversionGoalResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomConversionGoalResult custom_conversion_goal */
                        custom_conversion_goal?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);
                    }

                    /** Represents a MutateCustomConversionGoalResult. */
                    class MutateCustomConversionGoalResult implements IMutateCustomConversionGoalResult {

                        /**
                         * Constructs a new MutateCustomConversionGoalResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomConversionGoalResult);

                        /** MutateCustomConversionGoalResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomConversionGoalResult custom_conversion_goal. */
                        public custom_conversion_goal?: (google.ads.googleads.v23.resources.ICustomConversionGoal|null);

                        /**
                         * Creates a new MutateCustomConversionGoalResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomConversionGoalResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomConversionGoalResult): google.ads.googleads.v23.services.MutateCustomConversionGoalResult;

                        /**
                         * Encodes the specified MutateCustomConversionGoalResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomConversionGoalResult.verify|verify} messages.
                         * @param message MutateCustomConversionGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomConversionGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomConversionGoalResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomConversionGoalResult.verify|verify} messages.
                         * @param message MutateCustomConversionGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomConversionGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomConversionGoalResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomConversionGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomConversionGoalResult;

                        /**
                         * Decodes a MutateCustomConversionGoalResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomConversionGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomConversionGoalResult;

                        /**
                         * Verifies a MutateCustomConversionGoalResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomConversionGoalResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomConversionGoalResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomConversionGoalResult;

                        /**
                         * Creates a plain object from a MutateCustomConversionGoalResult message. Also converts values to other types if specified.
                         * @param message MutateCustomConversionGoalResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomConversionGoalResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomConversionGoalResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomConversionGoalResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerAssetService */
                    class CustomerAssetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerAssetService 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 CustomerAssetService 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): CustomerAssetService;

                        /**
                         * Calls MutateCustomerAssets.
                         * @param request MutateCustomerAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerAssetsResponse
                         */
                        public mutateCustomerAssets(request: google.ads.googleads.v23.services.IMutateCustomerAssetsRequest, callback: google.ads.googleads.v23.services.CustomerAssetService.MutateCustomerAssetsCallback): void;

                        /**
                         * Calls MutateCustomerAssets.
                         * @param request MutateCustomerAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerAssets(request: google.ads.googleads.v23.services.IMutateCustomerAssetsRequest): Promise<google.ads.googleads.v23.services.MutateCustomerAssetsResponse>;
                    }

                    namespace CustomerAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerAssetService|mutateCustomerAssets}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerAssetsResponse
                         */
                        type MutateCustomerAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerAssetsResponse) => void;
                    }

                    /** Properties of a MutateCustomerAssetsRequest. */
                    interface IMutateCustomerAssetsRequest {

                        /** MutateCustomerAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerAssetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomerAssetOperation[]|null);

                        /** MutateCustomerAssetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomerAssetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerAssetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerAssetsRequest. */
                    class MutateCustomerAssetsRequest implements IMutateCustomerAssetsRequest {

                        /**
                         * Constructs a new MutateCustomerAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetsRequest);

                        /** MutateCustomerAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerAssetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomerAssetOperation[];

                        /** MutateCustomerAssetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomerAssetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerAssetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomerAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetsRequest): google.ads.googleads.v23.services.MutateCustomerAssetsRequest;

                        /**
                         * Encodes the specified MutateCustomerAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetsRequest.verify|verify} messages.
                         * @param message MutateCustomerAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetsRequest.verify|verify} messages.
                         * @param message MutateCustomerAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerAssetsRequest;

                        /**
                         * Decodes a MutateCustomerAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerAssetsRequest;

                        /**
                         * Verifies a MutateCustomerAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerAssetsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerAssetsRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerAssetOperation. */
                    interface ICustomerAssetOperation {

                        /** CustomerAssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerAssetOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                        /** CustomerAssetOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                        /** CustomerAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerAssetOperation. */
                    class CustomerAssetOperation implements ICustomerAssetOperation {

                        /**
                         * Constructs a new CustomerAssetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerAssetOperation);

                        /** CustomerAssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerAssetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                        /** CustomerAssetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                        /** CustomerAssetOperation remove. */
                        public remove?: (string|null);

                        /** CustomerAssetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CustomerAssetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAssetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerAssetOperation): google.ads.googleads.v23.services.CustomerAssetOperation;

                        /**
                         * Encodes the specified CustomerAssetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerAssetOperation.verify|verify} messages.
                         * @param message CustomerAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerAssetOperation.verify|verify} messages.
                         * @param message CustomerAssetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAssetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerAssetOperation;

                        /**
                         * Decodes a CustomerAssetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerAssetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerAssetOperation;

                        /**
                         * Verifies a CustomerAssetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerAssetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerAssetOperation;

                        /**
                         * Creates a plain object from a CustomerAssetOperation message. Also converts values to other types if specified.
                         * @param message CustomerAssetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerAssetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerAssetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerAssetsResponse. */
                    interface IMutateCustomerAssetsResponse {

                        /** MutateCustomerAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerAssetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomerAssetResult[]|null);
                    }

                    /** Represents a MutateCustomerAssetsResponse. */
                    class MutateCustomerAssetsResponse implements IMutateCustomerAssetsResponse {

                        /**
                         * Constructs a new MutateCustomerAssetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetsResponse);

                        /** MutateCustomerAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerAssetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomerAssetResult[];

                        /**
                         * Creates a new MutateCustomerAssetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerAssetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetsResponse): google.ads.googleads.v23.services.MutateCustomerAssetsResponse;

                        /**
                         * Encodes the specified MutateCustomerAssetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetsResponse.verify|verify} messages.
                         * @param message MutateCustomerAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetsResponse.verify|verify} messages.
                         * @param message MutateCustomerAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerAssetsResponse;

                        /**
                         * Decodes a MutateCustomerAssetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerAssetsResponse;

                        /**
                         * Verifies a MutateCustomerAssetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerAssetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerAssetsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerAssetsResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerAssetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerAssetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerAssetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerAssetResult. */
                    interface IMutateCustomerAssetResult {

                        /** MutateCustomerAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerAssetResult customer_asset */
                        customer_asset?: (google.ads.googleads.v23.resources.ICustomerAsset|null);
                    }

                    /** Represents a MutateCustomerAssetResult. */
                    class MutateCustomerAssetResult implements IMutateCustomerAssetResult {

                        /**
                         * Constructs a new MutateCustomerAssetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetResult);

                        /** MutateCustomerAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerAssetResult customer_asset. */
                        public customer_asset?: (google.ads.googleads.v23.resources.ICustomerAsset|null);

                        /**
                         * Creates a new MutateCustomerAssetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerAssetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetResult): google.ads.googleads.v23.services.MutateCustomerAssetResult;

                        /**
                         * Encodes the specified MutateCustomerAssetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetResult.verify|verify} messages.
                         * @param message MutateCustomerAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetResult.verify|verify} messages.
                         * @param message MutateCustomerAssetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerAssetResult;

                        /**
                         * Decodes a MutateCustomerAssetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerAssetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerAssetResult;

                        /**
                         * Verifies a MutateCustomerAssetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerAssetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerAssetResult;

                        /**
                         * Creates a plain object from a MutateCustomerAssetResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerAssetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerAssetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerAssetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerConversionGoalService */
                    class CustomerConversionGoalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerConversionGoalService 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 CustomerConversionGoalService 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): CustomerConversionGoalService;

                        /**
                         * Calls MutateCustomerConversionGoals.
                         * @param request MutateCustomerConversionGoalsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerConversionGoalsResponse
                         */
                        public mutateCustomerConversionGoals(request: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsRequest, callback: google.ads.googleads.v23.services.CustomerConversionGoalService.MutateCustomerConversionGoalsCallback): void;

                        /**
                         * Calls MutateCustomerConversionGoals.
                         * @param request MutateCustomerConversionGoalsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerConversionGoals(request: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsRequest): Promise<google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse>;
                    }

                    namespace CustomerConversionGoalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerConversionGoalService|mutateCustomerConversionGoals}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerConversionGoalsResponse
                         */
                        type MutateCustomerConversionGoalsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse) => void;
                    }

                    /** Properties of a MutateCustomerConversionGoalsRequest. */
                    interface IMutateCustomerConversionGoalsRequest {

                        /** MutateCustomerConversionGoalsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerConversionGoalsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomerConversionGoalOperation[]|null);

                        /** MutateCustomerConversionGoalsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomerConversionGoalsRequest. */
                    class MutateCustomerConversionGoalsRequest implements IMutateCustomerConversionGoalsRequest {

                        /**
                         * Constructs a new MutateCustomerConversionGoalsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsRequest);

                        /** MutateCustomerConversionGoalsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerConversionGoalsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomerConversionGoalOperation[];

                        /** MutateCustomerConversionGoalsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCustomerConversionGoalsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerConversionGoalsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsRequest): google.ads.googleads.v23.services.MutateCustomerConversionGoalsRequest;

                        /**
                         * Encodes the specified MutateCustomerConversionGoalsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerConversionGoalsRequest.verify|verify} messages.
                         * @param message MutateCustomerConversionGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerConversionGoalsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerConversionGoalsRequest.verify|verify} messages.
                         * @param message MutateCustomerConversionGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerConversionGoalsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerConversionGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerConversionGoalsRequest;

                        /**
                         * Decodes a MutateCustomerConversionGoalsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerConversionGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerConversionGoalsRequest;

                        /**
                         * Verifies a MutateCustomerConversionGoalsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerConversionGoalsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerConversionGoalsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerConversionGoalsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerConversionGoalsRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerConversionGoalsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerConversionGoalsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerConversionGoalsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerConversionGoalsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerConversionGoalOperation. */
                    interface ICustomerConversionGoalOperation {

                        /** CustomerConversionGoalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerConversionGoalOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomerConversionGoal|null);
                    }

                    /** Represents a CustomerConversionGoalOperation. */
                    class CustomerConversionGoalOperation implements ICustomerConversionGoalOperation {

                        /**
                         * Constructs a new CustomerConversionGoalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerConversionGoalOperation);

                        /** CustomerConversionGoalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerConversionGoalOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomerConversionGoal|null);

                        /** CustomerConversionGoalOperation operation. */
                        public operation?: "update";

                        /**
                         * Creates a new CustomerConversionGoalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerConversionGoalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerConversionGoalOperation): google.ads.googleads.v23.services.CustomerConversionGoalOperation;

                        /**
                         * Encodes the specified CustomerConversionGoalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerConversionGoalOperation.verify|verify} messages.
                         * @param message CustomerConversionGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerConversionGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerConversionGoalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerConversionGoalOperation.verify|verify} messages.
                         * @param message CustomerConversionGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerConversionGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerConversionGoalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerConversionGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerConversionGoalOperation;

                        /**
                         * Decodes a CustomerConversionGoalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerConversionGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerConversionGoalOperation;

                        /**
                         * Verifies a CustomerConversionGoalOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerConversionGoalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerConversionGoalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerConversionGoalOperation;

                        /**
                         * Creates a plain object from a CustomerConversionGoalOperation message. Also converts values to other types if specified.
                         * @param message CustomerConversionGoalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerConversionGoalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerConversionGoalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerConversionGoalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerConversionGoalsResponse. */
                    interface IMutateCustomerConversionGoalsResponse {

                        /** MutateCustomerConversionGoalsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult[]|null);
                    }

                    /** Represents a MutateCustomerConversionGoalsResponse. */
                    class MutateCustomerConversionGoalsResponse implements IMutateCustomerConversionGoalsResponse {

                        /**
                         * Constructs a new MutateCustomerConversionGoalsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsResponse);

                        /** MutateCustomerConversionGoalsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult[];

                        /**
                         * Creates a new MutateCustomerConversionGoalsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerConversionGoalsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsResponse): google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse;

                        /**
                         * Encodes the specified MutateCustomerConversionGoalsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse.verify|verify} messages.
                         * @param message MutateCustomerConversionGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerConversionGoalsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse.verify|verify} messages.
                         * @param message MutateCustomerConversionGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerConversionGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerConversionGoalsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerConversionGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse;

                        /**
                         * Decodes a MutateCustomerConversionGoalsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerConversionGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse;

                        /**
                         * Verifies a MutateCustomerConversionGoalsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerConversionGoalsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerConversionGoalsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerConversionGoalsResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerConversionGoalsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerConversionGoalsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerConversionGoalsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerConversionGoalsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerConversionGoalResult. */
                    interface IMutateCustomerConversionGoalResult {

                        /** MutateCustomerConversionGoalResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomerConversionGoalResult. */
                    class MutateCustomerConversionGoalResult implements IMutateCustomerConversionGoalResult {

                        /**
                         * Constructs a new MutateCustomerConversionGoalResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult);

                        /** MutateCustomerConversionGoalResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomerConversionGoalResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerConversionGoalResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult): google.ads.googleads.v23.services.MutateCustomerConversionGoalResult;

                        /**
                         * Encodes the specified MutateCustomerConversionGoalResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerConversionGoalResult.verify|verify} messages.
                         * @param message MutateCustomerConversionGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerConversionGoalResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerConversionGoalResult.verify|verify} messages.
                         * @param message MutateCustomerConversionGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerConversionGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerConversionGoalResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerConversionGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerConversionGoalResult;

                        /**
                         * Decodes a MutateCustomerConversionGoalResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerConversionGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerConversionGoalResult;

                        /**
                         * Verifies a MutateCustomerConversionGoalResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerConversionGoalResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerConversionGoalResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerConversionGoalResult;

                        /**
                         * Creates a plain object from a MutateCustomerConversionGoalResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerConversionGoalResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerConversionGoalResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerConversionGoalResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerConversionGoalResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerCustomizerService */
                    class CustomerCustomizerService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerCustomizerService 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 CustomerCustomizerService 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): CustomerCustomizerService;

                        /**
                         * Calls MutateCustomerCustomizers.
                         * @param request MutateCustomerCustomizersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerCustomizersResponse
                         */
                        public mutateCustomerCustomizers(request: google.ads.googleads.v23.services.IMutateCustomerCustomizersRequest, callback: google.ads.googleads.v23.services.CustomerCustomizerService.MutateCustomerCustomizersCallback): void;

                        /**
                         * Calls MutateCustomerCustomizers.
                         * @param request MutateCustomerCustomizersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerCustomizers(request: google.ads.googleads.v23.services.IMutateCustomerCustomizersRequest): Promise<google.ads.googleads.v23.services.MutateCustomerCustomizersResponse>;
                    }

                    namespace CustomerCustomizerService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerCustomizerService|mutateCustomerCustomizers}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerCustomizersResponse
                         */
                        type MutateCustomerCustomizersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerCustomizersResponse) => void;
                    }

                    /** Properties of a MutateCustomerCustomizersRequest. */
                    interface IMutateCustomerCustomizersRequest {

                        /** MutateCustomerCustomizersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerCustomizersRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomerCustomizerOperation[]|null);

                        /** MutateCustomerCustomizersRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomerCustomizersRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerCustomizersRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerCustomizersRequest. */
                    class MutateCustomerCustomizersRequest implements IMutateCustomerCustomizersRequest {

                        /**
                         * Constructs a new MutateCustomerCustomizersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerCustomizersRequest);

                        /** MutateCustomerCustomizersRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerCustomizersRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomerCustomizerOperation[];

                        /** MutateCustomerCustomizersRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomerCustomizersRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerCustomizersRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomerCustomizersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerCustomizersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerCustomizersRequest): google.ads.googleads.v23.services.MutateCustomerCustomizersRequest;

                        /**
                         * Encodes the specified MutateCustomerCustomizersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerCustomizersRequest.verify|verify} messages.
                         * @param message MutateCustomerCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerCustomizersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerCustomizersRequest.verify|verify} messages.
                         * @param message MutateCustomerCustomizersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerCustomizersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerCustomizersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerCustomizersRequest;

                        /**
                         * Decodes a MutateCustomerCustomizersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerCustomizersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerCustomizersRequest;

                        /**
                         * Verifies a MutateCustomerCustomizersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerCustomizersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerCustomizersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerCustomizersRequest;

                        /**
                         * Creates a plain object from a MutateCustomerCustomizersRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerCustomizersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerCustomizersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerCustomizersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerCustomizersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerCustomizerOperation. */
                    interface ICustomerCustomizerOperation {

                        /** CustomerCustomizerOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerCustomizer|null);

                        /** CustomerCustomizerOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerCustomizerOperation. */
                    class CustomerCustomizerOperation implements ICustomerCustomizerOperation {

                        /**
                         * Constructs a new CustomerCustomizerOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerCustomizerOperation);

                        /** CustomerCustomizerOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerCustomizer|null);

                        /** CustomerCustomizerOperation remove. */
                        public remove?: (string|null);

                        /** CustomerCustomizerOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CustomerCustomizerOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerCustomizerOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerCustomizerOperation): google.ads.googleads.v23.services.CustomerCustomizerOperation;

                        /**
                         * Encodes the specified CustomerCustomizerOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerCustomizerOperation.verify|verify} messages.
                         * @param message CustomerCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerCustomizerOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerCustomizerOperation.verify|verify} messages.
                         * @param message CustomerCustomizerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerCustomizerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerCustomizerOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerCustomizerOperation;

                        /**
                         * Decodes a CustomerCustomizerOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerCustomizerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerCustomizerOperation;

                        /**
                         * Verifies a CustomerCustomizerOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerCustomizerOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerCustomizerOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerCustomizerOperation;

                        /**
                         * Creates a plain object from a CustomerCustomizerOperation message. Also converts values to other types if specified.
                         * @param message CustomerCustomizerOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerCustomizerOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerCustomizerOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerCustomizerOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerCustomizersResponse. */
                    interface IMutateCustomerCustomizersResponse {

                        /** MutateCustomerCustomizersResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomerCustomizerResult[]|null);

                        /** MutateCustomerCustomizersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateCustomerCustomizersResponse. */
                    class MutateCustomerCustomizersResponse implements IMutateCustomerCustomizersResponse {

                        /**
                         * Constructs a new MutateCustomerCustomizersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerCustomizersResponse);

                        /** MutateCustomerCustomizersResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomerCustomizerResult[];

                        /** MutateCustomerCustomizersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateCustomerCustomizersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerCustomizersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerCustomizersResponse): google.ads.googleads.v23.services.MutateCustomerCustomizersResponse;

                        /**
                         * Encodes the specified MutateCustomerCustomizersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerCustomizersResponse.verify|verify} messages.
                         * @param message MutateCustomerCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerCustomizersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerCustomizersResponse.verify|verify} messages.
                         * @param message MutateCustomerCustomizersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerCustomizersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerCustomizersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerCustomizersResponse;

                        /**
                         * Decodes a MutateCustomerCustomizersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerCustomizersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerCustomizersResponse;

                        /**
                         * Verifies a MutateCustomerCustomizersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerCustomizersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerCustomizersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerCustomizersResponse;

                        /**
                         * Creates a plain object from a MutateCustomerCustomizersResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerCustomizersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerCustomizersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerCustomizersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerCustomizersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerCustomizerResult. */
                    interface IMutateCustomerCustomizerResult {

                        /** MutateCustomerCustomizerResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerCustomizerResult customer_customizer */
                        customer_customizer?: (google.ads.googleads.v23.resources.ICustomerCustomizer|null);
                    }

                    /** Represents a MutateCustomerCustomizerResult. */
                    class MutateCustomerCustomizerResult implements IMutateCustomerCustomizerResult {

                        /**
                         * Constructs a new MutateCustomerCustomizerResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerCustomizerResult);

                        /** MutateCustomerCustomizerResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerCustomizerResult customer_customizer. */
                        public customer_customizer?: (google.ads.googleads.v23.resources.ICustomerCustomizer|null);

                        /**
                         * Creates a new MutateCustomerCustomizerResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerCustomizerResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerCustomizerResult): google.ads.googleads.v23.services.MutateCustomerCustomizerResult;

                        /**
                         * Encodes the specified MutateCustomerCustomizerResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerCustomizerResult.verify|verify} messages.
                         * @param message MutateCustomerCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerCustomizerResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerCustomizerResult.verify|verify} messages.
                         * @param message MutateCustomerCustomizerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerCustomizerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerCustomizerResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerCustomizerResult;

                        /**
                         * Decodes a MutateCustomerCustomizerResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerCustomizerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerCustomizerResult;

                        /**
                         * Verifies a MutateCustomerCustomizerResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerCustomizerResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerCustomizerResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerCustomizerResult;

                        /**
                         * Creates a plain object from a MutateCustomerCustomizerResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerCustomizerResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerCustomizerResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerCustomizerResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerCustomizerResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerLabelService */
                    class CustomerLabelService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerLabelService 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 CustomerLabelService 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): CustomerLabelService;

                        /**
                         * Calls MutateCustomerLabels.
                         * @param request MutateCustomerLabelsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerLabelsResponse
                         */
                        public mutateCustomerLabels(request: google.ads.googleads.v23.services.IMutateCustomerLabelsRequest, callback: google.ads.googleads.v23.services.CustomerLabelService.MutateCustomerLabelsCallback): void;

                        /**
                         * Calls MutateCustomerLabels.
                         * @param request MutateCustomerLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerLabels(request: google.ads.googleads.v23.services.IMutateCustomerLabelsRequest): Promise<google.ads.googleads.v23.services.MutateCustomerLabelsResponse>;
                    }

                    namespace CustomerLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerLabelService|mutateCustomerLabels}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerLabelsResponse
                         */
                        type MutateCustomerLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerLabelsResponse) => void;
                    }

                    /** Properties of a MutateCustomerLabelsRequest. */
                    interface IMutateCustomerLabelsRequest {

                        /** MutateCustomerLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerLabelsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomerLabelOperation[]|null);

                        /** MutateCustomerLabelsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomerLabelsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomerLabelsRequest. */
                    class MutateCustomerLabelsRequest implements IMutateCustomerLabelsRequest {

                        /**
                         * Constructs a new MutateCustomerLabelsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerLabelsRequest);

                        /** MutateCustomerLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerLabelsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomerLabelOperation[];

                        /** MutateCustomerLabelsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomerLabelsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCustomerLabelsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerLabelsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerLabelsRequest): google.ads.googleads.v23.services.MutateCustomerLabelsRequest;

                        /**
                         * Encodes the specified MutateCustomerLabelsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerLabelsRequest.verify|verify} messages.
                         * @param message MutateCustomerLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerLabelsRequest.verify|verify} messages.
                         * @param message MutateCustomerLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerLabelsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerLabelsRequest;

                        /**
                         * Decodes a MutateCustomerLabelsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerLabelsRequest;

                        /**
                         * Verifies a MutateCustomerLabelsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerLabelsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerLabelsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerLabelsRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerLabelsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerLabelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerLabelsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerLabelOperation. */
                    interface ICustomerLabelOperation {

                        /** CustomerLabelOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerLabel|null);

                        /** CustomerLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerLabelOperation. */
                    class CustomerLabelOperation implements ICustomerLabelOperation {

                        /**
                         * Constructs a new CustomerLabelOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerLabelOperation);

                        /** CustomerLabelOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerLabel|null);

                        /** CustomerLabelOperation remove. */
                        public remove?: (string|null);

                        /** CustomerLabelOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CustomerLabelOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLabelOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerLabelOperation): google.ads.googleads.v23.services.CustomerLabelOperation;

                        /**
                         * Encodes the specified CustomerLabelOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerLabelOperation.verify|verify} messages.
                         * @param message CustomerLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerLabelOperation.verify|verify} messages.
                         * @param message CustomerLabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLabelOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerLabelOperation;

                        /**
                         * Decodes a CustomerLabelOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerLabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerLabelOperation;

                        /**
                         * Verifies a CustomerLabelOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerLabelOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerLabelOperation;

                        /**
                         * Creates a plain object from a CustomerLabelOperation message. Also converts values to other types if specified.
                         * @param message CustomerLabelOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerLabelOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerLabelOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerLabelsResponse. */
                    interface IMutateCustomerLabelsResponse {

                        /** MutateCustomerLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerLabelsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomerLabelResult[]|null);
                    }

                    /** Represents a MutateCustomerLabelsResponse. */
                    class MutateCustomerLabelsResponse implements IMutateCustomerLabelsResponse {

                        /**
                         * Constructs a new MutateCustomerLabelsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerLabelsResponse);

                        /** MutateCustomerLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerLabelsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomerLabelResult[];

                        /**
                         * Creates a new MutateCustomerLabelsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerLabelsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerLabelsResponse): google.ads.googleads.v23.services.MutateCustomerLabelsResponse;

                        /**
                         * Encodes the specified MutateCustomerLabelsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerLabelsResponse.verify|verify} messages.
                         * @param message MutateCustomerLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerLabelsResponse.verify|verify} messages.
                         * @param message MutateCustomerLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerLabelsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerLabelsResponse;

                        /**
                         * Decodes a MutateCustomerLabelsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerLabelsResponse;

                        /**
                         * Verifies a MutateCustomerLabelsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerLabelsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerLabelsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerLabelsResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerLabelsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerLabelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerLabelsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerLabelResult. */
                    interface IMutateCustomerLabelResult {

                        /** MutateCustomerLabelResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomerLabelResult. */
                    class MutateCustomerLabelResult implements IMutateCustomerLabelResult {

                        /**
                         * Constructs a new MutateCustomerLabelResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerLabelResult);

                        /** MutateCustomerLabelResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomerLabelResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerLabelResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerLabelResult): google.ads.googleads.v23.services.MutateCustomerLabelResult;

                        /**
                         * Encodes the specified MutateCustomerLabelResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerLabelResult.verify|verify} messages.
                         * @param message MutateCustomerLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerLabelResult.verify|verify} messages.
                         * @param message MutateCustomerLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerLabelResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerLabelResult;

                        /**
                         * Decodes a MutateCustomerLabelResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerLabelResult;

                        /**
                         * Verifies a MutateCustomerLabelResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerLabelResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerLabelResult;

                        /**
                         * Creates a plain object from a MutateCustomerLabelResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerLabelResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerLabelResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerLabelResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerNegativeCriterionService */
                    class CustomerNegativeCriterionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerNegativeCriterionService 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 CustomerNegativeCriterionService 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): CustomerNegativeCriterionService;

                        /**
                         * Calls MutateCustomerNegativeCriteria.
                         * @param request MutateCustomerNegativeCriteriaRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerNegativeCriteriaResponse
                         */
                        public mutateCustomerNegativeCriteria(request: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaRequest, callback: google.ads.googleads.v23.services.CustomerNegativeCriterionService.MutateCustomerNegativeCriteriaCallback): void;

                        /**
                         * Calls MutateCustomerNegativeCriteria.
                         * @param request MutateCustomerNegativeCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerNegativeCriteria(request: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaRequest): Promise<google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse>;
                    }

                    namespace CustomerNegativeCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerNegativeCriterionService|mutateCustomerNegativeCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerNegativeCriteriaResponse
                         */
                        type MutateCustomerNegativeCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse) => void;
                    }

                    /** Properties of a MutateCustomerNegativeCriteriaRequest. */
                    interface IMutateCustomerNegativeCriteriaRequest {

                        /** MutateCustomerNegativeCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerNegativeCriteriaRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation[]|null);

                        /** MutateCustomerNegativeCriteriaRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomerNegativeCriteriaRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerNegativeCriteriaRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerNegativeCriteriaRequest. */
                    class MutateCustomerNegativeCriteriaRequest implements IMutateCustomerNegativeCriteriaRequest {

                        /**
                         * Constructs a new MutateCustomerNegativeCriteriaRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaRequest);

                        /** MutateCustomerNegativeCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerNegativeCriteriaRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation[];

                        /** MutateCustomerNegativeCriteriaRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomerNegativeCriteriaRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerNegativeCriteriaRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomerNegativeCriteriaRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerNegativeCriteriaRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaRequest): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaRequest;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaRequest.verify|verify} messages.
                         * @param message MutateCustomerNegativeCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaRequest.verify|verify} messages.
                         * @param message MutateCustomerNegativeCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerNegativeCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaRequest;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerNegativeCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaRequest;

                        /**
                         * Verifies a MutateCustomerNegativeCriteriaRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerNegativeCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerNegativeCriteriaRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateCustomerNegativeCriteriaRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerNegativeCriteriaRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerNegativeCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerNegativeCriteriaRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerNegativeCriterionOperation. */
                    interface ICustomerNegativeCriterionOperation {

                        /** CustomerNegativeCriterionOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerNegativeCriterion|null);

                        /** CustomerNegativeCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerNegativeCriterionOperation. */
                    class CustomerNegativeCriterionOperation implements ICustomerNegativeCriterionOperation {

                        /**
                         * Constructs a new CustomerNegativeCriterionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation);

                        /** CustomerNegativeCriterionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerNegativeCriterion|null);

                        /** CustomerNegativeCriterionOperation remove. */
                        public remove?: (string|null);

                        /** CustomerNegativeCriterionOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CustomerNegativeCriterionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerNegativeCriterionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation): google.ads.googleads.v23.services.CustomerNegativeCriterionOperation;

                        /**
                         * Encodes the specified CustomerNegativeCriterionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerNegativeCriterionOperation.verify|verify} messages.
                         * @param message CustomerNegativeCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerNegativeCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerNegativeCriterionOperation.verify|verify} messages.
                         * @param message CustomerNegativeCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerNegativeCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerNegativeCriterionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerNegativeCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerNegativeCriterionOperation;

                        /**
                         * Decodes a CustomerNegativeCriterionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerNegativeCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerNegativeCriterionOperation;

                        /**
                         * Verifies a CustomerNegativeCriterionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerNegativeCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerNegativeCriterionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerNegativeCriterionOperation;

                        /**
                         * Creates a plain object from a CustomerNegativeCriterionOperation message. Also converts values to other types if specified.
                         * @param message CustomerNegativeCriterionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerNegativeCriterionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerNegativeCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerNegativeCriterionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerNegativeCriteriaResponse. */
                    interface IMutateCustomerNegativeCriteriaResponse {

                        /** MutateCustomerNegativeCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerNegativeCriteriaResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult[]|null);
                    }

                    /** Represents a MutateCustomerNegativeCriteriaResponse. */
                    class MutateCustomerNegativeCriteriaResponse implements IMutateCustomerNegativeCriteriaResponse {

                        /**
                         * Constructs a new MutateCustomerNegativeCriteriaResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResponse);

                        /** MutateCustomerNegativeCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerNegativeCriteriaResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult[];

                        /**
                         * Creates a new MutateCustomerNegativeCriteriaResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerNegativeCriteriaResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResponse): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse.verify|verify} messages.
                         * @param message MutateCustomerNegativeCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse.verify|verify} messages.
                         * @param message MutateCustomerNegativeCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerNegativeCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerNegativeCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse;

                        /**
                         * Verifies a MutateCustomerNegativeCriteriaResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerNegativeCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerNegativeCriteriaResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateCustomerNegativeCriteriaResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerNegativeCriteriaResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerNegativeCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerNegativeCriteriaResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerNegativeCriteriaResult. */
                    interface IMutateCustomerNegativeCriteriaResult {

                        /** MutateCustomerNegativeCriteriaResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerNegativeCriteriaResult customer_negative_criterion */
                        customer_negative_criterion?: (google.ads.googleads.v23.resources.ICustomerNegativeCriterion|null);
                    }

                    /** Represents a MutateCustomerNegativeCriteriaResult. */
                    class MutateCustomerNegativeCriteriaResult implements IMutateCustomerNegativeCriteriaResult {

                        /**
                         * Constructs a new MutateCustomerNegativeCriteriaResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult);

                        /** MutateCustomerNegativeCriteriaResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerNegativeCriteriaResult customer_negative_criterion. */
                        public customer_negative_criterion?: (google.ads.googleads.v23.resources.ICustomerNegativeCriterion|null);

                        /**
                         * Creates a new MutateCustomerNegativeCriteriaResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerNegativeCriteriaResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResult;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResult.verify|verify} messages.
                         * @param message MutateCustomerNegativeCriteriaResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResult.verify|verify} messages.
                         * @param message MutateCustomerNegativeCriteriaResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerNegativeCriteriaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerNegativeCriteriaResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResult;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerNegativeCriteriaResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResult;

                        /**
                         * Verifies a MutateCustomerNegativeCriteriaResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerNegativeCriteriaResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerNegativeCriteriaResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResult;

                        /**
                         * Creates a plain object from a MutateCustomerNegativeCriteriaResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerNegativeCriteriaResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerNegativeCriteriaResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerNegativeCriteriaResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerNegativeCriteriaResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerService */
                    class CustomerService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerService 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 CustomerService 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): CustomerService;

                        /**
                         * Calls MutateCustomer.
                         * @param request MutateCustomerRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerResponse
                         */
                        public mutateCustomer(request: google.ads.googleads.v23.services.IMutateCustomerRequest, callback: google.ads.googleads.v23.services.CustomerService.MutateCustomerCallback): void;

                        /**
                         * Calls MutateCustomer.
                         * @param request MutateCustomerRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomer(request: google.ads.googleads.v23.services.IMutateCustomerRequest): Promise<google.ads.googleads.v23.services.MutateCustomerResponse>;

                        /**
                         * Calls ListAccessibleCustomers.
                         * @param request ListAccessibleCustomersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListAccessibleCustomersResponse
                         */
                        public listAccessibleCustomers(request: google.ads.googleads.v23.services.IListAccessibleCustomersRequest, callback: google.ads.googleads.v23.services.CustomerService.ListAccessibleCustomersCallback): void;

                        /**
                         * Calls ListAccessibleCustomers.
                         * @param request ListAccessibleCustomersRequest message or plain object
                         * @returns Promise
                         */
                        public listAccessibleCustomers(request: google.ads.googleads.v23.services.IListAccessibleCustomersRequest): Promise<google.ads.googleads.v23.services.ListAccessibleCustomersResponse>;

                        /**
                         * Calls CreateCustomerClient.
                         * @param request CreateCustomerClientRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateCustomerClientResponse
                         */
                        public createCustomerClient(request: google.ads.googleads.v23.services.ICreateCustomerClientRequest, callback: google.ads.googleads.v23.services.CustomerService.CreateCustomerClientCallback): void;

                        /**
                         * Calls CreateCustomerClient.
                         * @param request CreateCustomerClientRequest message or plain object
                         * @returns Promise
                         */
                        public createCustomerClient(request: google.ads.googleads.v23.services.ICreateCustomerClientRequest): Promise<google.ads.googleads.v23.services.CreateCustomerClientResponse>;
                    }

                    namespace CustomerService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerService|mutateCustomer}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerResponse
                         */
                        type MutateCustomerCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerService|listAccessibleCustomers}.
                         * @param error Error, if any
                         * @param [response] ListAccessibleCustomersResponse
                         */
                        type ListAccessibleCustomersCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListAccessibleCustomersResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerService|createCustomerClient}.
                         * @param error Error, if any
                         * @param [response] CreateCustomerClientResponse
                         */
                        type CreateCustomerClientCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.CreateCustomerClientResponse) => void;
                    }

                    /** Properties of a MutateCustomerRequest. */
                    interface IMutateCustomerRequest {

                        /** MutateCustomerRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerRequest operation */
                        operation?: (google.ads.googleads.v23.services.ICustomerOperation|null);

                        /** MutateCustomerRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerRequest. */
                    class MutateCustomerRequest implements IMutateCustomerRequest {

                        /**
                         * Constructs a new MutateCustomerRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerRequest);

                        /** MutateCustomerRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.ICustomerOperation|null);

                        /** MutateCustomerRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomerRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerRequest): google.ads.googleads.v23.services.MutateCustomerRequest;

                        /**
                         * Encodes the specified MutateCustomerRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerRequest.verify|verify} messages.
                         * @param message MutateCustomerRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerRequest.verify|verify} messages.
                         * @param message MutateCustomerRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerRequest;

                        /**
                         * Decodes a MutateCustomerRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerRequest;

                        /**
                         * Verifies a MutateCustomerRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerRequest;

                        /**
                         * Creates a plain object from a MutateCustomerRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateCustomerClientRequest. */
                    interface ICreateCustomerClientRequest {

                        /** CreateCustomerClientRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateCustomerClientRequest customer_client */
                        customer_client?: (google.ads.googleads.v23.resources.ICustomer|null);

                        /** CreateCustomerClientRequest email_address */
                        email_address?: (string|null);

                        /** CreateCustomerClientRequest access_role */
                        access_role?: (google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|null);

                        /** CreateCustomerClientRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a CreateCustomerClientRequest. */
                    class CreateCustomerClientRequest implements ICreateCustomerClientRequest {

                        /**
                         * Constructs a new CreateCustomerClientRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateCustomerClientRequest);

                        /** CreateCustomerClientRequest customer_id. */
                        public customer_id: string;

                        /** CreateCustomerClientRequest customer_client. */
                        public customer_client?: (google.ads.googleads.v23.resources.ICustomer|null);

                        /** CreateCustomerClientRequest email_address. */
                        public email_address?: (string|null);

                        /** CreateCustomerClientRequest access_role. */
                        public access_role: (google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v23.enums.AccessRoleEnum.AccessRole);

                        /** CreateCustomerClientRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new CreateCustomerClientRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateCustomerClientRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateCustomerClientRequest): google.ads.googleads.v23.services.CreateCustomerClientRequest;

                        /**
                         * Encodes the specified CreateCustomerClientRequest message. Does not implicitly {@link google.ads.googleads.v23.services.CreateCustomerClientRequest.verify|verify} messages.
                         * @param message CreateCustomerClientRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateCustomerClientRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateCustomerClientRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateCustomerClientRequest.verify|verify} messages.
                         * @param message CreateCustomerClientRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateCustomerClientRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateCustomerClientRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateCustomerClientRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateCustomerClientRequest;

                        /**
                         * Decodes a CreateCustomerClientRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateCustomerClientRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateCustomerClientRequest;

                        /**
                         * Verifies a CreateCustomerClientRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateCustomerClientRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateCustomerClientRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateCustomerClientRequest;

                        /**
                         * Creates a plain object from a CreateCustomerClientRequest message. Also converts values to other types if specified.
                         * @param message CreateCustomerClientRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateCustomerClientRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateCustomerClientRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateCustomerClientRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerOperation. */
                    interface ICustomerOperation {

                        /** CustomerOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomer|null);

                        /** CustomerOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents a CustomerOperation. */
                    class CustomerOperation implements ICustomerOperation {

                        /**
                         * Constructs a new CustomerOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerOperation);

                        /** CustomerOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomer|null);

                        /** CustomerOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new CustomerOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerOperation): google.ads.googleads.v23.services.CustomerOperation;

                        /**
                         * Encodes the specified CustomerOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerOperation.verify|verify} messages.
                         * @param message CustomerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerOperation.verify|verify} messages.
                         * @param message CustomerOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerOperation;

                        /**
                         * Decodes a CustomerOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerOperation;

                        /**
                         * Verifies a CustomerOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerOperation;

                        /**
                         * Creates a plain object from a CustomerOperation message. Also converts values to other types if specified.
                         * @param message CustomerOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateCustomerClientResponse. */
                    interface ICreateCustomerClientResponse {

                        /** CreateCustomerClientResponse resource_name */
                        resource_name?: (string|null);

                        /** CreateCustomerClientResponse invitation_link */
                        invitation_link?: (string|null);
                    }

                    /** Represents a CreateCustomerClientResponse. */
                    class CreateCustomerClientResponse implements ICreateCustomerClientResponse {

                        /**
                         * Constructs a new CreateCustomerClientResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateCustomerClientResponse);

                        /** CreateCustomerClientResponse resource_name. */
                        public resource_name: string;

                        /** CreateCustomerClientResponse invitation_link. */
                        public invitation_link: string;

                        /**
                         * Creates a new CreateCustomerClientResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateCustomerClientResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateCustomerClientResponse): google.ads.googleads.v23.services.CreateCustomerClientResponse;

                        /**
                         * Encodes the specified CreateCustomerClientResponse message. Does not implicitly {@link google.ads.googleads.v23.services.CreateCustomerClientResponse.verify|verify} messages.
                         * @param message CreateCustomerClientResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateCustomerClientResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateCustomerClientResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateCustomerClientResponse.verify|verify} messages.
                         * @param message CreateCustomerClientResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateCustomerClientResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateCustomerClientResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateCustomerClientResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateCustomerClientResponse;

                        /**
                         * Decodes a CreateCustomerClientResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateCustomerClientResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateCustomerClientResponse;

                        /**
                         * Verifies a CreateCustomerClientResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateCustomerClientResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateCustomerClientResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateCustomerClientResponse;

                        /**
                         * Creates a plain object from a CreateCustomerClientResponse message. Also converts values to other types if specified.
                         * @param message CreateCustomerClientResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateCustomerClientResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateCustomerClientResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateCustomerClientResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerResponse. */
                    interface IMutateCustomerResponse {

                        /** MutateCustomerResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateCustomerResult|null);
                    }

                    /** Represents a MutateCustomerResponse. */
                    class MutateCustomerResponse implements IMutateCustomerResponse {

                        /**
                         * Constructs a new MutateCustomerResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerResponse);

                        /** MutateCustomerResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateCustomerResult|null);

                        /**
                         * Creates a new MutateCustomerResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerResponse): google.ads.googleads.v23.services.MutateCustomerResponse;

                        /**
                         * Encodes the specified MutateCustomerResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerResponse.verify|verify} messages.
                         * @param message MutateCustomerResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerResponse.verify|verify} messages.
                         * @param message MutateCustomerResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerResponse;

                        /**
                         * Decodes a MutateCustomerResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerResponse;

                        /**
                         * Verifies a MutateCustomerResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerResponse;

                        /**
                         * Creates a plain object from a MutateCustomerResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerResult. */
                    interface IMutateCustomerResult {

                        /** MutateCustomerResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerResult customer */
                        customer?: (google.ads.googleads.v23.resources.ICustomer|null);
                    }

                    /** Represents a MutateCustomerResult. */
                    class MutateCustomerResult implements IMutateCustomerResult {

                        /**
                         * Constructs a new MutateCustomerResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerResult);

                        /** MutateCustomerResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerResult customer. */
                        public customer?: (google.ads.googleads.v23.resources.ICustomer|null);

                        /**
                         * Creates a new MutateCustomerResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerResult): google.ads.googleads.v23.services.MutateCustomerResult;

                        /**
                         * Encodes the specified MutateCustomerResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerResult.verify|verify} messages.
                         * @param message MutateCustomerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerResult.verify|verify} messages.
                         * @param message MutateCustomerResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerResult;

                        /**
                         * Decodes a MutateCustomerResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerResult;

                        /**
                         * Verifies a MutateCustomerResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerResult;

                        /**
                         * Creates a plain object from a MutateCustomerResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListAccessibleCustomersRequest. */
                    interface IListAccessibleCustomersRequest {
                    }

                    /** Represents a ListAccessibleCustomersRequest. */
                    class ListAccessibleCustomersRequest implements IListAccessibleCustomersRequest {

                        /**
                         * Constructs a new ListAccessibleCustomersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListAccessibleCustomersRequest);

                        /**
                         * Creates a new ListAccessibleCustomersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListAccessibleCustomersRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListAccessibleCustomersRequest): google.ads.googleads.v23.services.ListAccessibleCustomersRequest;

                        /**
                         * Encodes the specified ListAccessibleCustomersRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListAccessibleCustomersRequest.verify|verify} messages.
                         * @param message ListAccessibleCustomersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListAccessibleCustomersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListAccessibleCustomersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListAccessibleCustomersRequest.verify|verify} messages.
                         * @param message ListAccessibleCustomersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListAccessibleCustomersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListAccessibleCustomersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListAccessibleCustomersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListAccessibleCustomersRequest;

                        /**
                         * Decodes a ListAccessibleCustomersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListAccessibleCustomersRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListAccessibleCustomersRequest;

                        /**
                         * Verifies a ListAccessibleCustomersRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListAccessibleCustomersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListAccessibleCustomersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListAccessibleCustomersRequest;

                        /**
                         * Creates a plain object from a ListAccessibleCustomersRequest message. Also converts values to other types if specified.
                         * @param message ListAccessibleCustomersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListAccessibleCustomersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListAccessibleCustomersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListAccessibleCustomersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListAccessibleCustomersResponse. */
                    interface IListAccessibleCustomersResponse {

                        /** ListAccessibleCustomersResponse resource_names */
                        resource_names?: (string[]|null);
                    }

                    /** Represents a ListAccessibleCustomersResponse. */
                    class ListAccessibleCustomersResponse implements IListAccessibleCustomersResponse {

                        /**
                         * Constructs a new ListAccessibleCustomersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListAccessibleCustomersResponse);

                        /** ListAccessibleCustomersResponse resource_names. */
                        public resource_names: string[];

                        /**
                         * Creates a new ListAccessibleCustomersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListAccessibleCustomersResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListAccessibleCustomersResponse): google.ads.googleads.v23.services.ListAccessibleCustomersResponse;

                        /**
                         * Encodes the specified ListAccessibleCustomersResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListAccessibleCustomersResponse.verify|verify} messages.
                         * @param message ListAccessibleCustomersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListAccessibleCustomersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListAccessibleCustomersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListAccessibleCustomersResponse.verify|verify} messages.
                         * @param message ListAccessibleCustomersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListAccessibleCustomersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListAccessibleCustomersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListAccessibleCustomersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListAccessibleCustomersResponse;

                        /**
                         * Decodes a ListAccessibleCustomersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListAccessibleCustomersResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListAccessibleCustomersResponse;

                        /**
                         * Verifies a ListAccessibleCustomersResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListAccessibleCustomersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListAccessibleCustomersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListAccessibleCustomersResponse;

                        /**
                         * Creates a plain object from a ListAccessibleCustomersResponse message. Also converts values to other types if specified.
                         * @param message ListAccessibleCustomersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListAccessibleCustomersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListAccessibleCustomersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListAccessibleCustomersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomizerAttributeService */
                    class CustomizerAttributeService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomizerAttributeService 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 CustomizerAttributeService 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): CustomizerAttributeService;

                        /**
                         * Calls MutateCustomizerAttributes.
                         * @param request MutateCustomizerAttributesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomizerAttributesResponse
                         */
                        public mutateCustomizerAttributes(request: google.ads.googleads.v23.services.IMutateCustomizerAttributesRequest, callback: google.ads.googleads.v23.services.CustomizerAttributeService.MutateCustomizerAttributesCallback): void;

                        /**
                         * Calls MutateCustomizerAttributes.
                         * @param request MutateCustomizerAttributesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomizerAttributes(request: google.ads.googleads.v23.services.IMutateCustomizerAttributesRequest): Promise<google.ads.googleads.v23.services.MutateCustomizerAttributesResponse>;
                    }

                    namespace CustomizerAttributeService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomizerAttributeService|mutateCustomizerAttributes}.
                         * @param error Error, if any
                         * @param [response] MutateCustomizerAttributesResponse
                         */
                        type MutateCustomizerAttributesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomizerAttributesResponse) => void;
                    }

                    /** Properties of a MutateCustomizerAttributesRequest. */
                    interface IMutateCustomizerAttributesRequest {

                        /** MutateCustomizerAttributesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomizerAttributesRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomizerAttributeOperation[]|null);

                        /** MutateCustomizerAttributesRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomizerAttributesRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomizerAttributesRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomizerAttributesRequest. */
                    class MutateCustomizerAttributesRequest implements IMutateCustomizerAttributesRequest {

                        /**
                         * Constructs a new MutateCustomizerAttributesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomizerAttributesRequest);

                        /** MutateCustomizerAttributesRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomizerAttributesRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomizerAttributeOperation[];

                        /** MutateCustomizerAttributesRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomizerAttributesRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomizerAttributesRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomizerAttributesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomizerAttributesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomizerAttributesRequest): google.ads.googleads.v23.services.MutateCustomizerAttributesRequest;

                        /**
                         * Encodes the specified MutateCustomizerAttributesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomizerAttributesRequest.verify|verify} messages.
                         * @param message MutateCustomizerAttributesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomizerAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomizerAttributesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomizerAttributesRequest.verify|verify} messages.
                         * @param message MutateCustomizerAttributesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomizerAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomizerAttributesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomizerAttributesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomizerAttributesRequest;

                        /**
                         * Decodes a MutateCustomizerAttributesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomizerAttributesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomizerAttributesRequest;

                        /**
                         * Verifies a MutateCustomizerAttributesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomizerAttributesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomizerAttributesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomizerAttributesRequest;

                        /**
                         * Creates a plain object from a MutateCustomizerAttributesRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomizerAttributesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomizerAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomizerAttributesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomizerAttributesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomizerAttributeOperation. */
                    interface ICustomizerAttributeOperation {

                        /** CustomizerAttributeOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomizerAttributeOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomizerAttribute|null);

                        /** CustomizerAttributeOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomizerAttributeOperation. */
                    class CustomizerAttributeOperation implements ICustomizerAttributeOperation {

                        /**
                         * Constructs a new CustomizerAttributeOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomizerAttributeOperation);

                        /** CustomizerAttributeOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomizerAttributeOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomizerAttribute|null);

                        /** CustomizerAttributeOperation remove. */
                        public remove?: (string|null);

                        /** CustomizerAttributeOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CustomizerAttributeOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomizerAttributeOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomizerAttributeOperation): google.ads.googleads.v23.services.CustomizerAttributeOperation;

                        /**
                         * Encodes the specified CustomizerAttributeOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomizerAttributeOperation.verify|verify} messages.
                         * @param message CustomizerAttributeOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomizerAttributeOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomizerAttributeOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomizerAttributeOperation.verify|verify} messages.
                         * @param message CustomizerAttributeOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomizerAttributeOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomizerAttributeOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomizerAttributeOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomizerAttributeOperation;

                        /**
                         * Decodes a CustomizerAttributeOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomizerAttributeOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomizerAttributeOperation;

                        /**
                         * Verifies a CustomizerAttributeOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomizerAttributeOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomizerAttributeOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomizerAttributeOperation;

                        /**
                         * Creates a plain object from a CustomizerAttributeOperation message. Also converts values to other types if specified.
                         * @param message CustomizerAttributeOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomizerAttributeOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomizerAttributeOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomizerAttributeOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomizerAttributesResponse. */
                    interface IMutateCustomizerAttributesResponse {

                        /** MutateCustomizerAttributesResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomizerAttributeResult[]|null);

                        /** MutateCustomizerAttributesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateCustomizerAttributesResponse. */
                    class MutateCustomizerAttributesResponse implements IMutateCustomizerAttributesResponse {

                        /**
                         * Constructs a new MutateCustomizerAttributesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomizerAttributesResponse);

                        /** MutateCustomizerAttributesResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomizerAttributeResult[];

                        /** MutateCustomizerAttributesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateCustomizerAttributesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomizerAttributesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomizerAttributesResponse): google.ads.googleads.v23.services.MutateCustomizerAttributesResponse;

                        /**
                         * Encodes the specified MutateCustomizerAttributesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomizerAttributesResponse.verify|verify} messages.
                         * @param message MutateCustomizerAttributesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomizerAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomizerAttributesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomizerAttributesResponse.verify|verify} messages.
                         * @param message MutateCustomizerAttributesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomizerAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomizerAttributesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomizerAttributesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomizerAttributesResponse;

                        /**
                         * Decodes a MutateCustomizerAttributesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomizerAttributesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomizerAttributesResponse;

                        /**
                         * Verifies a MutateCustomizerAttributesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomizerAttributesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomizerAttributesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomizerAttributesResponse;

                        /**
                         * Creates a plain object from a MutateCustomizerAttributesResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomizerAttributesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomizerAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomizerAttributesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomizerAttributesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomizerAttributeResult. */
                    interface IMutateCustomizerAttributeResult {

                        /** MutateCustomizerAttributeResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomizerAttributeResult customizer_attribute */
                        customizer_attribute?: (google.ads.googleads.v23.resources.ICustomizerAttribute|null);
                    }

                    /** Represents a MutateCustomizerAttributeResult. */
                    class MutateCustomizerAttributeResult implements IMutateCustomizerAttributeResult {

                        /**
                         * Constructs a new MutateCustomizerAttributeResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomizerAttributeResult);

                        /** MutateCustomizerAttributeResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomizerAttributeResult customizer_attribute. */
                        public customizer_attribute?: (google.ads.googleads.v23.resources.ICustomizerAttribute|null);

                        /**
                         * Creates a new MutateCustomizerAttributeResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomizerAttributeResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomizerAttributeResult): google.ads.googleads.v23.services.MutateCustomizerAttributeResult;

                        /**
                         * Encodes the specified MutateCustomizerAttributeResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomizerAttributeResult.verify|verify} messages.
                         * @param message MutateCustomizerAttributeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomizerAttributeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomizerAttributeResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomizerAttributeResult.verify|verify} messages.
                         * @param message MutateCustomizerAttributeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomizerAttributeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomizerAttributeResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomizerAttributeResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomizerAttributeResult;

                        /**
                         * Decodes a MutateCustomizerAttributeResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomizerAttributeResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomizerAttributeResult;

                        /**
                         * Verifies a MutateCustomizerAttributeResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomizerAttributeResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomizerAttributeResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomizerAttributeResult;

                        /**
                         * Creates a plain object from a MutateCustomizerAttributeResult message. Also converts values to other types if specified.
                         * @param message MutateCustomizerAttributeResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomizerAttributeResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomizerAttributeResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomizerAttributeResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an ExperimentArmService */
                    class ExperimentArmService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ExperimentArmService 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 ExperimentArmService 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): ExperimentArmService;

                        /**
                         * Calls MutateExperimentArms.
                         * @param request MutateExperimentArmsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateExperimentArmsResponse
                         */
                        public mutateExperimentArms(request: google.ads.googleads.v23.services.IMutateExperimentArmsRequest, callback: google.ads.googleads.v23.services.ExperimentArmService.MutateExperimentArmsCallback): void;

                        /**
                         * Calls MutateExperimentArms.
                         * @param request MutateExperimentArmsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateExperimentArms(request: google.ads.googleads.v23.services.IMutateExperimentArmsRequest): Promise<google.ads.googleads.v23.services.MutateExperimentArmsResponse>;
                    }

                    namespace ExperimentArmService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ExperimentArmService|mutateExperimentArms}.
                         * @param error Error, if any
                         * @param [response] MutateExperimentArmsResponse
                         */
                        type MutateExperimentArmsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateExperimentArmsResponse) => void;
                    }

                    /** Properties of a MutateExperimentArmsRequest. */
                    interface IMutateExperimentArmsRequest {

                        /** MutateExperimentArmsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateExperimentArmsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IExperimentArmOperation[]|null);

                        /** MutateExperimentArmsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateExperimentArmsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateExperimentArmsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateExperimentArmsRequest. */
                    class MutateExperimentArmsRequest implements IMutateExperimentArmsRequest {

                        /**
                         * Constructs a new MutateExperimentArmsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateExperimentArmsRequest);

                        /** MutateExperimentArmsRequest customer_id. */
                        public customer_id: string;

                        /** MutateExperimentArmsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IExperimentArmOperation[];

                        /** MutateExperimentArmsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateExperimentArmsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateExperimentArmsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateExperimentArmsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExperimentArmsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateExperimentArmsRequest): google.ads.googleads.v23.services.MutateExperimentArmsRequest;

                        /**
                         * Encodes the specified MutateExperimentArmsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentArmsRequest.verify|verify} messages.
                         * @param message MutateExperimentArmsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateExperimentArmsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExperimentArmsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentArmsRequest.verify|verify} messages.
                         * @param message MutateExperimentArmsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateExperimentArmsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExperimentArmsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateExperimentArmsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateExperimentArmsRequest;

                        /**
                         * Decodes a MutateExperimentArmsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExperimentArmsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateExperimentArmsRequest;

                        /**
                         * Verifies a MutateExperimentArmsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExperimentArmsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateExperimentArmsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateExperimentArmsRequest;

                        /**
                         * Creates a plain object from a MutateExperimentArmsRequest message. Also converts values to other types if specified.
                         * @param message MutateExperimentArmsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateExperimentArmsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExperimentArmsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateExperimentArmsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExperimentArmOperation. */
                    interface IExperimentArmOperation {

                        /** ExperimentArmOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ExperimentArmOperation create */
                        create?: (google.ads.googleads.v23.resources.IExperimentArm|null);

                        /** ExperimentArmOperation update */
                        update?: (google.ads.googleads.v23.resources.IExperimentArm|null);

                        /** ExperimentArmOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an ExperimentArmOperation. */
                    class ExperimentArmOperation implements IExperimentArmOperation {

                        /**
                         * Constructs a new ExperimentArmOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IExperimentArmOperation);

                        /** ExperimentArmOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ExperimentArmOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IExperimentArm|null);

                        /** ExperimentArmOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IExperimentArm|null);

                        /** ExperimentArmOperation remove. */
                        public remove?: (string|null);

                        /** ExperimentArmOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new ExperimentArmOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentArmOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IExperimentArmOperation): google.ads.googleads.v23.services.ExperimentArmOperation;

                        /**
                         * Encodes the specified ExperimentArmOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ExperimentArmOperation.verify|verify} messages.
                         * @param message ExperimentArmOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IExperimentArmOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentArmOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ExperimentArmOperation.verify|verify} messages.
                         * @param message ExperimentArmOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IExperimentArmOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentArmOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentArmOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ExperimentArmOperation;

                        /**
                         * Decodes an ExperimentArmOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentArmOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ExperimentArmOperation;

                        /**
                         * Verifies an ExperimentArmOperation message.
                         * @param message Plain 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 ExperimentArmOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentArmOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ExperimentArmOperation;

                        /**
                         * Creates a plain object from an ExperimentArmOperation message. Also converts values to other types if specified.
                         * @param message ExperimentArmOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ExperimentArmOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentArmOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentArmOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateExperimentArmsResponse. */
                    interface IMutateExperimentArmsResponse {

                        /** MutateExperimentArmsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateExperimentArmsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateExperimentArmResult[]|null);
                    }

                    /** Represents a MutateExperimentArmsResponse. */
                    class MutateExperimentArmsResponse implements IMutateExperimentArmsResponse {

                        /**
                         * Constructs a new MutateExperimentArmsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateExperimentArmsResponse);

                        /** MutateExperimentArmsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateExperimentArmsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateExperimentArmResult[];

                        /**
                         * Creates a new MutateExperimentArmsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExperimentArmsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateExperimentArmsResponse): google.ads.googleads.v23.services.MutateExperimentArmsResponse;

                        /**
                         * Encodes the specified MutateExperimentArmsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentArmsResponse.verify|verify} messages.
                         * @param message MutateExperimentArmsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateExperimentArmsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExperimentArmsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentArmsResponse.verify|verify} messages.
                         * @param message MutateExperimentArmsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateExperimentArmsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExperimentArmsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateExperimentArmsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateExperimentArmsResponse;

                        /**
                         * Decodes a MutateExperimentArmsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExperimentArmsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateExperimentArmsResponse;

                        /**
                         * Verifies a MutateExperimentArmsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExperimentArmsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateExperimentArmsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateExperimentArmsResponse;

                        /**
                         * Creates a plain object from a MutateExperimentArmsResponse message. Also converts values to other types if specified.
                         * @param message MutateExperimentArmsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateExperimentArmsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExperimentArmsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateExperimentArmsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateExperimentArmResult. */
                    interface IMutateExperimentArmResult {

                        /** MutateExperimentArmResult resource_name */
                        resource_name?: (string|null);

                        /** MutateExperimentArmResult experiment_arm */
                        experiment_arm?: (google.ads.googleads.v23.resources.IExperimentArm|null);
                    }

                    /** Represents a MutateExperimentArmResult. */
                    class MutateExperimentArmResult implements IMutateExperimentArmResult {

                        /**
                         * Constructs a new MutateExperimentArmResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateExperimentArmResult);

                        /** MutateExperimentArmResult resource_name. */
                        public resource_name: string;

                        /** MutateExperimentArmResult experiment_arm. */
                        public experiment_arm?: (google.ads.googleads.v23.resources.IExperimentArm|null);

                        /**
                         * Creates a new MutateExperimentArmResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExperimentArmResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateExperimentArmResult): google.ads.googleads.v23.services.MutateExperimentArmResult;

                        /**
                         * Encodes the specified MutateExperimentArmResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentArmResult.verify|verify} messages.
                         * @param message MutateExperimentArmResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateExperimentArmResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExperimentArmResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentArmResult.verify|verify} messages.
                         * @param message MutateExperimentArmResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateExperimentArmResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExperimentArmResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateExperimentArmResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateExperimentArmResult;

                        /**
                         * Decodes a MutateExperimentArmResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExperimentArmResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateExperimentArmResult;

                        /**
                         * Verifies a MutateExperimentArmResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExperimentArmResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateExperimentArmResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateExperimentArmResult;

                        /**
                         * Creates a plain object from a MutateExperimentArmResult message. Also converts values to other types if specified.
                         * @param message MutateExperimentArmResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateExperimentArmResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExperimentArmResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateExperimentArmResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an ExperimentService */
                    class ExperimentService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ExperimentService 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 ExperimentService 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): ExperimentService;

                        /**
                         * Calls MutateExperiments.
                         * @param request MutateExperimentsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateExperimentsResponse
                         */
                        public mutateExperiments(request: google.ads.googleads.v23.services.IMutateExperimentsRequest, callback: google.ads.googleads.v23.services.ExperimentService.MutateExperimentsCallback): void;

                        /**
                         * Calls MutateExperiments.
                         * @param request MutateExperimentsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateExperiments(request: google.ads.googleads.v23.services.IMutateExperimentsRequest): Promise<google.ads.googleads.v23.services.MutateExperimentsResponse>;

                        /**
                         * Calls EndExperiment.
                         * @param request EndExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public endExperiment(request: google.ads.googleads.v23.services.IEndExperimentRequest, callback: google.ads.googleads.v23.services.ExperimentService.EndExperimentCallback): void;

                        /**
                         * Calls EndExperiment.
                         * @param request EndExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public endExperiment(request: google.ads.googleads.v23.services.IEndExperimentRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls ListExperimentAsyncErrors.
                         * @param request ListExperimentAsyncErrorsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListExperimentAsyncErrorsResponse
                         */
                        public listExperimentAsyncErrors(request: google.ads.googleads.v23.services.IListExperimentAsyncErrorsRequest, callback: google.ads.googleads.v23.services.ExperimentService.ListExperimentAsyncErrorsCallback): void;

                        /**
                         * Calls ListExperimentAsyncErrors.
                         * @param request ListExperimentAsyncErrorsRequest message or plain object
                         * @returns Promise
                         */
                        public listExperimentAsyncErrors(request: google.ads.googleads.v23.services.IListExperimentAsyncErrorsRequest): Promise<google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse>;

                        /**
                         * Calls GraduateExperiment.
                         * @param request GraduateExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public graduateExperiment(request: google.ads.googleads.v23.services.IGraduateExperimentRequest, callback: google.ads.googleads.v23.services.ExperimentService.GraduateExperimentCallback): void;

                        /**
                         * Calls GraduateExperiment.
                         * @param request GraduateExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public graduateExperiment(request: google.ads.googleads.v23.services.IGraduateExperimentRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls ScheduleExperiment.
                         * @param request ScheduleExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public scheduleExperiment(request: google.ads.googleads.v23.services.IScheduleExperimentRequest, callback: google.ads.googleads.v23.services.ExperimentService.ScheduleExperimentCallback): void;

                        /**
                         * Calls ScheduleExperiment.
                         * @param request ScheduleExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public scheduleExperiment(request: google.ads.googleads.v23.services.IScheduleExperimentRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls PromoteExperiment.
                         * @param request PromoteExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public promoteExperiment(request: google.ads.googleads.v23.services.IPromoteExperimentRequest, callback: google.ads.googleads.v23.services.ExperimentService.PromoteExperimentCallback): void;

                        /**
                         * Calls PromoteExperiment.
                         * @param request PromoteExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public promoteExperiment(request: google.ads.googleads.v23.services.IPromoteExperimentRequest): Promise<google.longrunning.Operation>;
                    }

                    namespace ExperimentService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ExperimentService|mutateExperiments}.
                         * @param error Error, if any
                         * @param [response] MutateExperimentsResponse
                         */
                        type MutateExperimentsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateExperimentsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ExperimentService|endExperiment}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type EndExperimentCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ExperimentService|listExperimentAsyncErrors}.
                         * @param error Error, if any
                         * @param [response] ListExperimentAsyncErrorsResponse
                         */
                        type ListExperimentAsyncErrorsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ExperimentService|graduateExperiment}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type GraduateExperimentCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ExperimentService|scheduleExperiment}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type ScheduleExperimentCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ExperimentService|promoteExperiment}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type PromoteExperimentCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                    }

                    /** Properties of a MutateExperimentsRequest. */
                    interface IMutateExperimentsRequest {

                        /** MutateExperimentsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateExperimentsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IExperimentOperation[]|null);

                        /** MutateExperimentsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateExperimentsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateExperimentsRequest. */
                    class MutateExperimentsRequest implements IMutateExperimentsRequest {

                        /**
                         * Constructs a new MutateExperimentsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateExperimentsRequest);

                        /** MutateExperimentsRequest customer_id. */
                        public customer_id: string;

                        /** MutateExperimentsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IExperimentOperation[];

                        /** MutateExperimentsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateExperimentsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateExperimentsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExperimentsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateExperimentsRequest): google.ads.googleads.v23.services.MutateExperimentsRequest;

                        /**
                         * Encodes the specified MutateExperimentsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentsRequest.verify|verify} messages.
                         * @param message MutateExperimentsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateExperimentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExperimentsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentsRequest.verify|verify} messages.
                         * @param message MutateExperimentsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateExperimentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExperimentsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateExperimentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateExperimentsRequest;

                        /**
                         * Decodes a MutateExperimentsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExperimentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateExperimentsRequest;

                        /**
                         * Verifies a MutateExperimentsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExperimentsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateExperimentsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateExperimentsRequest;

                        /**
                         * Creates a plain object from a MutateExperimentsRequest message. Also converts values to other types if specified.
                         * @param message MutateExperimentsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateExperimentsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExperimentsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateExperimentsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExperimentOperation. */
                    interface IExperimentOperation {

                        /** ExperimentOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ExperimentOperation create */
                        create?: (google.ads.googleads.v23.resources.IExperiment|null);

                        /** ExperimentOperation update */
                        update?: (google.ads.googleads.v23.resources.IExperiment|null);

                        /** ExperimentOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an ExperimentOperation. */
                    class ExperimentOperation implements IExperimentOperation {

                        /**
                         * Constructs a new ExperimentOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IExperimentOperation);

                        /** ExperimentOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ExperimentOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IExperiment|null);

                        /** ExperimentOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IExperiment|null);

                        /** ExperimentOperation remove. */
                        public remove?: (string|null);

                        /** ExperimentOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new ExperimentOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExperimentOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IExperimentOperation): google.ads.googleads.v23.services.ExperimentOperation;

                        /**
                         * Encodes the specified ExperimentOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ExperimentOperation.verify|verify} messages.
                         * @param message ExperimentOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IExperimentOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExperimentOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ExperimentOperation.verify|verify} messages.
                         * @param message ExperimentOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IExperimentOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExperimentOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExperimentOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ExperimentOperation;

                        /**
                         * Decodes an ExperimentOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExperimentOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ExperimentOperation;

                        /**
                         * Verifies an ExperimentOperation message.
                         * @param message Plain 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 ExperimentOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExperimentOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ExperimentOperation;

                        /**
                         * Creates a plain object from an ExperimentOperation message. Also converts values to other types if specified.
                         * @param message ExperimentOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ExperimentOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExperimentOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExperimentOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateExperimentsResponse. */
                    interface IMutateExperimentsResponse {

                        /** MutateExperimentsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateExperimentsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateExperimentResult[]|null);
                    }

                    /** Represents a MutateExperimentsResponse. */
                    class MutateExperimentsResponse implements IMutateExperimentsResponse {

                        /**
                         * Constructs a new MutateExperimentsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateExperimentsResponse);

                        /** MutateExperimentsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateExperimentsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateExperimentResult[];

                        /**
                         * Creates a new MutateExperimentsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExperimentsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateExperimentsResponse): google.ads.googleads.v23.services.MutateExperimentsResponse;

                        /**
                         * Encodes the specified MutateExperimentsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentsResponse.verify|verify} messages.
                         * @param message MutateExperimentsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateExperimentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExperimentsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentsResponse.verify|verify} messages.
                         * @param message MutateExperimentsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateExperimentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExperimentsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateExperimentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateExperimentsResponse;

                        /**
                         * Decodes a MutateExperimentsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExperimentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateExperimentsResponse;

                        /**
                         * Verifies a MutateExperimentsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExperimentsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateExperimentsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateExperimentsResponse;

                        /**
                         * Creates a plain object from a MutateExperimentsResponse message. Also converts values to other types if specified.
                         * @param message MutateExperimentsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateExperimentsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExperimentsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateExperimentsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateExperimentResult. */
                    interface IMutateExperimentResult {

                        /** MutateExperimentResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateExperimentResult. */
                    class MutateExperimentResult implements IMutateExperimentResult {

                        /**
                         * Constructs a new MutateExperimentResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateExperimentResult);

                        /** MutateExperimentResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateExperimentResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExperimentResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateExperimentResult): google.ads.googleads.v23.services.MutateExperimentResult;

                        /**
                         * Encodes the specified MutateExperimentResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentResult.verify|verify} messages.
                         * @param message MutateExperimentResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateExperimentResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExperimentResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateExperimentResult.verify|verify} messages.
                         * @param message MutateExperimentResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateExperimentResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExperimentResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateExperimentResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateExperimentResult;

                        /**
                         * Decodes a MutateExperimentResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExperimentResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateExperimentResult;

                        /**
                         * Verifies a MutateExperimentResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExperimentResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateExperimentResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateExperimentResult;

                        /**
                         * Creates a plain object from a MutateExperimentResult message. Also converts values to other types if specified.
                         * @param message MutateExperimentResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateExperimentResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExperimentResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateExperimentResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EndExperimentRequest. */
                    interface IEndExperimentRequest {

                        /** EndExperimentRequest experiment */
                        experiment?: (string|null);

                        /** EndExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents an EndExperimentRequest. */
                    class EndExperimentRequest implements IEndExperimentRequest {

                        /**
                         * Constructs a new EndExperimentRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IEndExperimentRequest);

                        /** EndExperimentRequest experiment. */
                        public experiment: string;

                        /** EndExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new EndExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EndExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IEndExperimentRequest): google.ads.googleads.v23.services.EndExperimentRequest;

                        /**
                         * Encodes the specified EndExperimentRequest message. Does not implicitly {@link google.ads.googleads.v23.services.EndExperimentRequest.verify|verify} messages.
                         * @param message EndExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IEndExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EndExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.EndExperimentRequest.verify|verify} messages.
                         * @param message EndExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IEndExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EndExperimentRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EndExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.EndExperimentRequest;

                        /**
                         * Decodes an EndExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EndExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.EndExperimentRequest;

                        /**
                         * Verifies an EndExperimentRequest message.
                         * @param message Plain 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 EndExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EndExperimentRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.EndExperimentRequest;

                        /**
                         * Creates a plain object from an EndExperimentRequest message. Also converts values to other types if specified.
                         * @param message EndExperimentRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.EndExperimentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EndExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EndExperimentRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListExperimentAsyncErrorsRequest. */
                    interface IListExperimentAsyncErrorsRequest {

                        /** ListExperimentAsyncErrorsRequest resource_name */
                        resource_name?: (string|null);

                        /** ListExperimentAsyncErrorsRequest page_token */
                        page_token?: (string|null);

                        /** ListExperimentAsyncErrorsRequest page_size */
                        page_size?: (number|null);
                    }

                    /** Represents a ListExperimentAsyncErrorsRequest. */
                    class ListExperimentAsyncErrorsRequest implements IListExperimentAsyncErrorsRequest {

                        /**
                         * Constructs a new ListExperimentAsyncErrorsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListExperimentAsyncErrorsRequest);

                        /** ListExperimentAsyncErrorsRequest resource_name. */
                        public resource_name: string;

                        /** ListExperimentAsyncErrorsRequest page_token. */
                        public page_token: string;

                        /** ListExperimentAsyncErrorsRequest page_size. */
                        public page_size: number;

                        /**
                         * Creates a new ListExperimentAsyncErrorsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListExperimentAsyncErrorsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListExperimentAsyncErrorsRequest): google.ads.googleads.v23.services.ListExperimentAsyncErrorsRequest;

                        /**
                         * Encodes the specified ListExperimentAsyncErrorsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListExperimentAsyncErrorsRequest.verify|verify} messages.
                         * @param message ListExperimentAsyncErrorsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListExperimentAsyncErrorsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListExperimentAsyncErrorsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListExperimentAsyncErrorsRequest.verify|verify} messages.
                         * @param message ListExperimentAsyncErrorsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListExperimentAsyncErrorsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListExperimentAsyncErrorsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListExperimentAsyncErrorsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListExperimentAsyncErrorsRequest;

                        /**
                         * Decodes a ListExperimentAsyncErrorsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListExperimentAsyncErrorsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListExperimentAsyncErrorsRequest;

                        /**
                         * Verifies a ListExperimentAsyncErrorsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListExperimentAsyncErrorsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListExperimentAsyncErrorsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListExperimentAsyncErrorsRequest;

                        /**
                         * Creates a plain object from a ListExperimentAsyncErrorsRequest message. Also converts values to other types if specified.
                         * @param message ListExperimentAsyncErrorsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListExperimentAsyncErrorsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListExperimentAsyncErrorsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListExperimentAsyncErrorsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListExperimentAsyncErrorsResponse. */
                    interface IListExperimentAsyncErrorsResponse {

                        /** ListExperimentAsyncErrorsResponse errors */
                        errors?: (google.rpc.IStatus[]|null);

                        /** ListExperimentAsyncErrorsResponse next_page_token */
                        next_page_token?: (string|null);
                    }

                    /** Represents a ListExperimentAsyncErrorsResponse. */
                    class ListExperimentAsyncErrorsResponse implements IListExperimentAsyncErrorsResponse {

                        /**
                         * Constructs a new ListExperimentAsyncErrorsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListExperimentAsyncErrorsResponse);

                        /** ListExperimentAsyncErrorsResponse errors. */
                        public errors: google.rpc.IStatus[];

                        /** ListExperimentAsyncErrorsResponse next_page_token. */
                        public next_page_token: string;

                        /**
                         * Creates a new ListExperimentAsyncErrorsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListExperimentAsyncErrorsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListExperimentAsyncErrorsResponse): google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse;

                        /**
                         * Encodes the specified ListExperimentAsyncErrorsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse.verify|verify} messages.
                         * @param message ListExperimentAsyncErrorsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListExperimentAsyncErrorsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListExperimentAsyncErrorsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse.verify|verify} messages.
                         * @param message ListExperimentAsyncErrorsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListExperimentAsyncErrorsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListExperimentAsyncErrorsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListExperimentAsyncErrorsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse;

                        /**
                         * Decodes a ListExperimentAsyncErrorsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListExperimentAsyncErrorsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse;

                        /**
                         * Verifies a ListExperimentAsyncErrorsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListExperimentAsyncErrorsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListExperimentAsyncErrorsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse;

                        /**
                         * Creates a plain object from a ListExperimentAsyncErrorsResponse message. Also converts values to other types if specified.
                         * @param message ListExperimentAsyncErrorsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListExperimentAsyncErrorsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListExperimentAsyncErrorsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListExperimentAsyncErrorsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GraduateExperimentRequest. */
                    interface IGraduateExperimentRequest {

                        /** GraduateExperimentRequest experiment */
                        experiment?: (string|null);

                        /** GraduateExperimentRequest campaign_budget_mappings */
                        campaign_budget_mappings?: (google.ads.googleads.v23.services.ICampaignBudgetMapping[]|null);

                        /** GraduateExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a GraduateExperimentRequest. */
                    class GraduateExperimentRequest implements IGraduateExperimentRequest {

                        /**
                         * Constructs a new GraduateExperimentRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGraduateExperimentRequest);

                        /** GraduateExperimentRequest experiment. */
                        public experiment: string;

                        /** GraduateExperimentRequest campaign_budget_mappings. */
                        public campaign_budget_mappings: google.ads.googleads.v23.services.ICampaignBudgetMapping[];

                        /** GraduateExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new GraduateExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GraduateExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGraduateExperimentRequest): google.ads.googleads.v23.services.GraduateExperimentRequest;

                        /**
                         * Encodes the specified GraduateExperimentRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GraduateExperimentRequest.verify|verify} messages.
                         * @param message GraduateExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGraduateExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GraduateExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GraduateExperimentRequest.verify|verify} messages.
                         * @param message GraduateExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGraduateExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GraduateExperimentRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GraduateExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GraduateExperimentRequest;

                        /**
                         * Decodes a GraduateExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GraduateExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GraduateExperimentRequest;

                        /**
                         * Verifies a GraduateExperimentRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GraduateExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GraduateExperimentRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GraduateExperimentRequest;

                        /**
                         * Creates a plain object from a GraduateExperimentRequest message. Also converts values to other types if specified.
                         * @param message GraduateExperimentRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GraduateExperimentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GraduateExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GraduateExperimentRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignBudgetMapping. */
                    interface ICampaignBudgetMapping {

                        /** CampaignBudgetMapping experiment_campaign */
                        experiment_campaign?: (string|null);

                        /** CampaignBudgetMapping campaign_budget */
                        campaign_budget?: (string|null);
                    }

                    /** Represents a CampaignBudgetMapping. */
                    class CampaignBudgetMapping implements ICampaignBudgetMapping {

                        /**
                         * Constructs a new CampaignBudgetMapping.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignBudgetMapping);

                        /** CampaignBudgetMapping experiment_campaign. */
                        public experiment_campaign: string;

                        /** CampaignBudgetMapping campaign_budget. */
                        public campaign_budget: string;

                        /**
                         * Creates a new CampaignBudgetMapping instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignBudgetMapping instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignBudgetMapping): google.ads.googleads.v23.services.CampaignBudgetMapping;

                        /**
                         * Encodes the specified CampaignBudgetMapping message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignBudgetMapping.verify|verify} messages.
                         * @param message CampaignBudgetMapping message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignBudgetMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBudgetMapping message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignBudgetMapping.verify|verify} messages.
                         * @param message CampaignBudgetMapping message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignBudgetMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBudgetMapping message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignBudgetMapping
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignBudgetMapping;

                        /**
                         * Decodes a CampaignBudgetMapping message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignBudgetMapping
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignBudgetMapping;

                        /**
                         * Verifies a CampaignBudgetMapping message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBudgetMapping message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignBudgetMapping
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignBudgetMapping;

                        /**
                         * Creates a plain object from a CampaignBudgetMapping message. Also converts values to other types if specified.
                         * @param message CampaignBudgetMapping
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignBudgetMapping, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBudgetMapping to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignBudgetMapping
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ScheduleExperimentRequest. */
                    interface IScheduleExperimentRequest {

                        /** ScheduleExperimentRequest resource_name */
                        resource_name?: (string|null);

                        /** ScheduleExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a ScheduleExperimentRequest. */
                    class ScheduleExperimentRequest implements IScheduleExperimentRequest {

                        /**
                         * Constructs a new ScheduleExperimentRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IScheduleExperimentRequest);

                        /** ScheduleExperimentRequest resource_name. */
                        public resource_name: string;

                        /** ScheduleExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new ScheduleExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ScheduleExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IScheduleExperimentRequest): google.ads.googleads.v23.services.ScheduleExperimentRequest;

                        /**
                         * Encodes the specified ScheduleExperimentRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ScheduleExperimentRequest.verify|verify} messages.
                         * @param message ScheduleExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IScheduleExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ScheduleExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ScheduleExperimentRequest.verify|verify} messages.
                         * @param message ScheduleExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IScheduleExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ScheduleExperimentRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ScheduleExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ScheduleExperimentRequest;

                        /**
                         * Decodes a ScheduleExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ScheduleExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ScheduleExperimentRequest;

                        /**
                         * Verifies a ScheduleExperimentRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ScheduleExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ScheduleExperimentRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ScheduleExperimentRequest;

                        /**
                         * Creates a plain object from a ScheduleExperimentRequest message. Also converts values to other types if specified.
                         * @param message ScheduleExperimentRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ScheduleExperimentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ScheduleExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ScheduleExperimentRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ScheduleExperimentMetadata. */
                    interface IScheduleExperimentMetadata {

                        /** ScheduleExperimentMetadata experiment */
                        experiment?: (string|null);
                    }

                    /** Represents a ScheduleExperimentMetadata. */
                    class ScheduleExperimentMetadata implements IScheduleExperimentMetadata {

                        /**
                         * Constructs a new ScheduleExperimentMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IScheduleExperimentMetadata);

                        /** ScheduleExperimentMetadata experiment. */
                        public experiment: string;

                        /**
                         * Creates a new ScheduleExperimentMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ScheduleExperimentMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IScheduleExperimentMetadata): google.ads.googleads.v23.services.ScheduleExperimentMetadata;

                        /**
                         * Encodes the specified ScheduleExperimentMetadata message. Does not implicitly {@link google.ads.googleads.v23.services.ScheduleExperimentMetadata.verify|verify} messages.
                         * @param message ScheduleExperimentMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IScheduleExperimentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ScheduleExperimentMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ScheduleExperimentMetadata.verify|verify} messages.
                         * @param message ScheduleExperimentMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IScheduleExperimentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ScheduleExperimentMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ScheduleExperimentMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ScheduleExperimentMetadata;

                        /**
                         * Decodes a ScheduleExperimentMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ScheduleExperimentMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ScheduleExperimentMetadata;

                        /**
                         * Verifies a ScheduleExperimentMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ScheduleExperimentMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ScheduleExperimentMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ScheduleExperimentMetadata;

                        /**
                         * Creates a plain object from a ScheduleExperimentMetadata message. Also converts values to other types if specified.
                         * @param message ScheduleExperimentMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ScheduleExperimentMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ScheduleExperimentMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ScheduleExperimentMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PromoteExperimentRequest. */
                    interface IPromoteExperimentRequest {

                        /** PromoteExperimentRequest resource_name */
                        resource_name?: (string|null);

                        /** PromoteExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a PromoteExperimentRequest. */
                    class PromoteExperimentRequest implements IPromoteExperimentRequest {

                        /**
                         * Constructs a new PromoteExperimentRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPromoteExperimentRequest);

                        /** PromoteExperimentRequest resource_name. */
                        public resource_name: string;

                        /** PromoteExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new PromoteExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromoteExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPromoteExperimentRequest): google.ads.googleads.v23.services.PromoteExperimentRequest;

                        /**
                         * Encodes the specified PromoteExperimentRequest message. Does not implicitly {@link google.ads.googleads.v23.services.PromoteExperimentRequest.verify|verify} messages.
                         * @param message PromoteExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPromoteExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromoteExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PromoteExperimentRequest.verify|verify} messages.
                         * @param message PromoteExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPromoteExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromoteExperimentRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PromoteExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PromoteExperimentRequest;

                        /**
                         * Decodes a PromoteExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromoteExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PromoteExperimentRequest;

                        /**
                         * Verifies a PromoteExperimentRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromoteExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PromoteExperimentRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PromoteExperimentRequest;

                        /**
                         * Creates a plain object from a PromoteExperimentRequest message. Also converts values to other types if specified.
                         * @param message PromoteExperimentRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PromoteExperimentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromoteExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PromoteExperimentRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PromoteExperimentMetadata. */
                    interface IPromoteExperimentMetadata {

                        /** PromoteExperimentMetadata experiment */
                        experiment?: (string|null);
                    }

                    /** Represents a PromoteExperimentMetadata. */
                    class PromoteExperimentMetadata implements IPromoteExperimentMetadata {

                        /**
                         * Constructs a new PromoteExperimentMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPromoteExperimentMetadata);

                        /** PromoteExperimentMetadata experiment. */
                        public experiment: string;

                        /**
                         * Creates a new PromoteExperimentMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromoteExperimentMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPromoteExperimentMetadata): google.ads.googleads.v23.services.PromoteExperimentMetadata;

                        /**
                         * Encodes the specified PromoteExperimentMetadata message. Does not implicitly {@link google.ads.googleads.v23.services.PromoteExperimentMetadata.verify|verify} messages.
                         * @param message PromoteExperimentMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPromoteExperimentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromoteExperimentMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PromoteExperimentMetadata.verify|verify} messages.
                         * @param message PromoteExperimentMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPromoteExperimentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromoteExperimentMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PromoteExperimentMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PromoteExperimentMetadata;

                        /**
                         * Decodes a PromoteExperimentMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromoteExperimentMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PromoteExperimentMetadata;

                        /**
                         * Verifies a PromoteExperimentMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromoteExperimentMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PromoteExperimentMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PromoteExperimentMetadata;

                        /**
                         * Creates a plain object from a PromoteExperimentMetadata message. Also converts values to other types if specified.
                         * @param message PromoteExperimentMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PromoteExperimentMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromoteExperimentMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PromoteExperimentMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a KeywordPlanAdGroupKeywordService */
                    class KeywordPlanAdGroupKeywordService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordPlanAdGroupKeywordService 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 KeywordPlanAdGroupKeywordService 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): KeywordPlanAdGroupKeywordService;

                        /**
                         * Calls MutateKeywordPlanAdGroupKeywords.
                         * @param request MutateKeywordPlanAdGroupKeywordsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateKeywordPlanAdGroupKeywordsResponse
                         */
                        public mutateKeywordPlanAdGroupKeywords(request: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsRequest, callback: google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordService.MutateKeywordPlanAdGroupKeywordsCallback): void;

                        /**
                         * Calls MutateKeywordPlanAdGroupKeywords.
                         * @param request MutateKeywordPlanAdGroupKeywordsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanAdGroupKeywords(request: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsRequest): Promise<google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse>;
                    }

                    namespace KeywordPlanAdGroupKeywordService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordService|mutateKeywordPlanAdGroupKeywords}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanAdGroupKeywordsResponse
                         */
                        type MutateKeywordPlanAdGroupKeywordsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse) => void;
                    }

                    /** Properties of a MutateKeywordPlanAdGroupKeywordsRequest. */
                    interface IMutateKeywordPlanAdGroupKeywordsRequest {

                        /** MutateKeywordPlanAdGroupKeywordsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanAdGroupKeywordsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation[]|null);

                        /** MutateKeywordPlanAdGroupKeywordsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateKeywordPlanAdGroupKeywordsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupKeywordsRequest. */
                    class MutateKeywordPlanAdGroupKeywordsRequest implements IMutateKeywordPlanAdGroupKeywordsRequest {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupKeywordsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsRequest);

                        /** MutateKeywordPlanAdGroupKeywordsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanAdGroupKeywordsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation[];

                        /** MutateKeywordPlanAdGroupKeywordsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateKeywordPlanAdGroupKeywordsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateKeywordPlanAdGroupKeywordsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanAdGroupKeywordsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsRequest): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupKeywordsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupKeywordsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanAdGroupKeywordsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsRequest;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanAdGroupKeywordsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsRequest;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupKeywordsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupKeywordsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanAdGroupKeywordsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupKeywordsRequest message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanAdGroupKeywordsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupKeywordsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanAdGroupKeywordsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanAdGroupKeywordOperation. */
                    interface IKeywordPlanAdGroupKeywordOperation {

                        /** KeywordPlanAdGroupKeywordOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupKeywordOperation create */
                        create?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword|null);

                        /** KeywordPlanAdGroupKeywordOperation update */
                        update?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword|null);

                        /** KeywordPlanAdGroupKeywordOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanAdGroupKeywordOperation. */
                    class KeywordPlanAdGroupKeywordOperation implements IKeywordPlanAdGroupKeywordOperation {

                        /**
                         * Constructs a new KeywordPlanAdGroupKeywordOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation);

                        /** KeywordPlanAdGroupKeywordOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupKeywordOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword|null);

                        /** KeywordPlanAdGroupKeywordOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroupKeyword|null);

                        /** KeywordPlanAdGroupKeywordOperation remove. */
                        public remove?: (string|null);

                        /** KeywordPlanAdGroupKeywordOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new KeywordPlanAdGroupKeywordOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroupKeywordOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation): google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordOperation;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordOperation message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordOperation.verify|verify} messages.
                         * @param message KeywordPlanAdGroupKeywordOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordOperation.verify|verify} messages.
                         * @param message KeywordPlanAdGroupKeywordOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordPlanAdGroupKeywordOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupKeywordOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAdGroupKeywordOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordOperation;

                        /**
                         * Decodes a KeywordPlanAdGroupKeywordOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAdGroupKeywordOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordOperation;

                        /**
                         * Verifies a KeywordPlanAdGroupKeywordOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupKeywordOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAdGroupKeywordOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordOperation;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupKeywordOperation message. Also converts values to other types if specified.
                         * @param message KeywordPlanAdGroupKeywordOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordPlanAdGroupKeywordOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupKeywordOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAdGroupKeywordOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanAdGroupKeywordsResponse. */
                    interface IMutateKeywordPlanAdGroupKeywordsResponse {

                        /** MutateKeywordPlanAdGroupKeywordsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupKeywordsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupKeywordsResponse. */
                    class MutateKeywordPlanAdGroupKeywordsResponse implements IMutateKeywordPlanAdGroupKeywordsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupKeywordsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsResponse);

                        /** MutateKeywordPlanAdGroupKeywordsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupKeywordsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult[];

                        /**
                         * Creates a new MutateKeywordPlanAdGroupKeywordsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanAdGroupKeywordsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsResponse): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupKeywordsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupKeywordsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanAdGroupKeywordsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanAdGroupKeywordsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupKeywordsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupKeywordsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanAdGroupKeywordsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupKeywordsResponse message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanAdGroupKeywordsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupKeywordsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanAdGroupKeywordsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanAdGroupKeywordResult. */
                    interface IMutateKeywordPlanAdGroupKeywordResult {

                        /** MutateKeywordPlanAdGroupKeywordResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupKeywordResult. */
                    class MutateKeywordPlanAdGroupKeywordResult implements IMutateKeywordPlanAdGroupKeywordResult {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupKeywordResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult);

                        /** MutateKeywordPlanAdGroupKeywordResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateKeywordPlanAdGroupKeywordResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanAdGroupKeywordResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordResult;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordResult.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupKeywordResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordResult.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupKeywordResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupKeywordResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanAdGroupKeywordResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordResult;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanAdGroupKeywordResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordResult;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupKeywordResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupKeywordResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanAdGroupKeywordResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupKeywordResult message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanAdGroupKeywordResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupKeywordResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupKeywordResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanAdGroupKeywordResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a KeywordPlanAdGroupService */
                    class KeywordPlanAdGroupService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordPlanAdGroupService 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 KeywordPlanAdGroupService 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): KeywordPlanAdGroupService;

                        /**
                         * Calls MutateKeywordPlanAdGroups.
                         * @param request MutateKeywordPlanAdGroupsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateKeywordPlanAdGroupsResponse
                         */
                        public mutateKeywordPlanAdGroups(request: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsRequest, callback: google.ads.googleads.v23.services.KeywordPlanAdGroupService.MutateKeywordPlanAdGroupsCallback): void;

                        /**
                         * Calls MutateKeywordPlanAdGroups.
                         * @param request MutateKeywordPlanAdGroupsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanAdGroups(request: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsRequest): Promise<google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse>;
                    }

                    namespace KeywordPlanAdGroupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanAdGroupService|mutateKeywordPlanAdGroups}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanAdGroupsResponse
                         */
                        type MutateKeywordPlanAdGroupsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse) => void;
                    }

                    /** Properties of a MutateKeywordPlanAdGroupsRequest. */
                    interface IMutateKeywordPlanAdGroupsRequest {

                        /** MutateKeywordPlanAdGroupsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanAdGroupsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation[]|null);

                        /** MutateKeywordPlanAdGroupsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateKeywordPlanAdGroupsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupsRequest. */
                    class MutateKeywordPlanAdGroupsRequest implements IMutateKeywordPlanAdGroupsRequest {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsRequest);

                        /** MutateKeywordPlanAdGroupsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanAdGroupsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation[];

                        /** MutateKeywordPlanAdGroupsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateKeywordPlanAdGroupsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateKeywordPlanAdGroupsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanAdGroupsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsRequest): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanAdGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsRequest;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanAdGroupsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsRequest;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanAdGroupsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupsRequest message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanAdGroupsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanAdGroupsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanAdGroupOperation. */
                    interface IKeywordPlanAdGroupOperation {

                        /** KeywordPlanAdGroupOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupOperation create */
                        create?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroup|null);

                        /** KeywordPlanAdGroupOperation update */
                        update?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroup|null);

                        /** KeywordPlanAdGroupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanAdGroupOperation. */
                    class KeywordPlanAdGroupOperation implements IKeywordPlanAdGroupOperation {

                        /**
                         * Constructs a new KeywordPlanAdGroupOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation);

                        /** KeywordPlanAdGroupOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroup|null);

                        /** KeywordPlanAdGroupOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IKeywordPlanAdGroup|null);

                        /** KeywordPlanAdGroupOperation remove. */
                        public remove?: (string|null);

                        /** KeywordPlanAdGroupOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new KeywordPlanAdGroupOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroupOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation): google.ads.googleads.v23.services.KeywordPlanAdGroupOperation;

                        /**
                         * Encodes the specified KeywordPlanAdGroupOperation message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanAdGroupOperation.verify|verify} messages.
                         * @param message KeywordPlanAdGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanAdGroupOperation.verify|verify} messages.
                         * @param message KeywordPlanAdGroupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordPlanAdGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanAdGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordPlanAdGroupOperation;

                        /**
                         * Decodes a KeywordPlanAdGroupOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAdGroupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordPlanAdGroupOperation;

                        /**
                         * Verifies a KeywordPlanAdGroupOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanAdGroupOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordPlanAdGroupOperation;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupOperation message. Also converts values to other types if specified.
                         * @param message KeywordPlanAdGroupOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordPlanAdGroupOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanAdGroupOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanAdGroupsResponse. */
                    interface IMutateKeywordPlanAdGroupsResponse {

                        /** MutateKeywordPlanAdGroupsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupsResponse. */
                    class MutateKeywordPlanAdGroupsResponse implements IMutateKeywordPlanAdGroupsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsResponse);

                        /** MutateKeywordPlanAdGroupsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult[];

                        /**
                         * Creates a new MutateKeywordPlanAdGroupsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanAdGroupsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsResponse): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanAdGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanAdGroupsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanAdGroupsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupsResponse message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanAdGroupsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanAdGroupsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanAdGroupResult. */
                    interface IMutateKeywordPlanAdGroupResult {

                        /** MutateKeywordPlanAdGroupResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupResult. */
                    class MutateKeywordPlanAdGroupResult implements IMutateKeywordPlanAdGroupResult {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult);

                        /** MutateKeywordPlanAdGroupResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateKeywordPlanAdGroupResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanAdGroupResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupResult;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupResult.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanAdGroupResult.verify|verify} messages.
                         * @param message MutateKeywordPlanAdGroupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanAdGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanAdGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupResult;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanAdGroupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupResult;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanAdGroupResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanAdGroupResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupResult message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanAdGroupResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanAdGroupResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanAdGroupResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a KeywordPlanCampaignKeywordService */
                    class KeywordPlanCampaignKeywordService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordPlanCampaignKeywordService 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 KeywordPlanCampaignKeywordService 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): KeywordPlanCampaignKeywordService;

                        /**
                         * Calls MutateKeywordPlanCampaignKeywords.
                         * @param request MutateKeywordPlanCampaignKeywordsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateKeywordPlanCampaignKeywordsResponse
                         */
                        public mutateKeywordPlanCampaignKeywords(request: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsRequest, callback: google.ads.googleads.v23.services.KeywordPlanCampaignKeywordService.MutateKeywordPlanCampaignKeywordsCallback): void;

                        /**
                         * Calls MutateKeywordPlanCampaignKeywords.
                         * @param request MutateKeywordPlanCampaignKeywordsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanCampaignKeywords(request: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsRequest): Promise<google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse>;
                    }

                    namespace KeywordPlanCampaignKeywordService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanCampaignKeywordService|mutateKeywordPlanCampaignKeywords}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanCampaignKeywordsResponse
                         */
                        type MutateKeywordPlanCampaignKeywordsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse) => void;
                    }

                    /** Properties of a MutateKeywordPlanCampaignKeywordsRequest. */
                    interface IMutateKeywordPlanCampaignKeywordsRequest {

                        /** MutateKeywordPlanCampaignKeywordsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanCampaignKeywordsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation[]|null);

                        /** MutateKeywordPlanCampaignKeywordsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateKeywordPlanCampaignKeywordsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignKeywordsRequest. */
                    class MutateKeywordPlanCampaignKeywordsRequest implements IMutateKeywordPlanCampaignKeywordsRequest {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignKeywordsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsRequest);

                        /** MutateKeywordPlanCampaignKeywordsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanCampaignKeywordsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation[];

                        /** MutateKeywordPlanCampaignKeywordsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateKeywordPlanCampaignKeywordsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateKeywordPlanCampaignKeywordsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanCampaignKeywordsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsRequest): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignKeywordsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignKeywordsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanCampaignKeywordsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsRequest;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanCampaignKeywordsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsRequest;

                        /**
                         * Verifies a MutateKeywordPlanCampaignKeywordsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignKeywordsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanCampaignKeywordsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignKeywordsRequest message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanCampaignKeywordsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignKeywordsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanCampaignKeywordsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanCampaignKeywordOperation. */
                    interface IKeywordPlanCampaignKeywordOperation {

                        /** KeywordPlanCampaignKeywordOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignKeywordOperation create */
                        create?: (google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword|null);

                        /** KeywordPlanCampaignKeywordOperation update */
                        update?: (google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword|null);

                        /** KeywordPlanCampaignKeywordOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanCampaignKeywordOperation. */
                    class KeywordPlanCampaignKeywordOperation implements IKeywordPlanCampaignKeywordOperation {

                        /**
                         * Constructs a new KeywordPlanCampaignKeywordOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation);

                        /** KeywordPlanCampaignKeywordOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignKeywordOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword|null);

                        /** KeywordPlanCampaignKeywordOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IKeywordPlanCampaignKeyword|null);

                        /** KeywordPlanCampaignKeywordOperation remove. */
                        public remove?: (string|null);

                        /** KeywordPlanCampaignKeywordOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new KeywordPlanCampaignKeywordOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignKeywordOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation): google.ads.googleads.v23.services.KeywordPlanCampaignKeywordOperation;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordOperation message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanCampaignKeywordOperation.verify|verify} messages.
                         * @param message KeywordPlanCampaignKeywordOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanCampaignKeywordOperation.verify|verify} messages.
                         * @param message KeywordPlanCampaignKeywordOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordPlanCampaignKeywordOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignKeywordOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanCampaignKeywordOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordPlanCampaignKeywordOperation;

                        /**
                         * Decodes a KeywordPlanCampaignKeywordOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaignKeywordOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordPlanCampaignKeywordOperation;

                        /**
                         * Verifies a KeywordPlanCampaignKeywordOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignKeywordOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanCampaignKeywordOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordPlanCampaignKeywordOperation;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignKeywordOperation message. Also converts values to other types if specified.
                         * @param message KeywordPlanCampaignKeywordOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordPlanCampaignKeywordOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignKeywordOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanCampaignKeywordOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanCampaignKeywordsResponse. */
                    interface IMutateKeywordPlanCampaignKeywordsResponse {

                        /** MutateKeywordPlanCampaignKeywordsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignKeywordsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignKeywordsResponse. */
                    class MutateKeywordPlanCampaignKeywordsResponse implements IMutateKeywordPlanCampaignKeywordsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignKeywordsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsResponse);

                        /** MutateKeywordPlanCampaignKeywordsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignKeywordsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult[];

                        /**
                         * Creates a new MutateKeywordPlanCampaignKeywordsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanCampaignKeywordsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsResponse): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignKeywordsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignKeywordsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanCampaignKeywordsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanCampaignKeywordsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse;

                        /**
                         * Verifies a MutateKeywordPlanCampaignKeywordsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignKeywordsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanCampaignKeywordsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignKeywordsResponse message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanCampaignKeywordsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignKeywordsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanCampaignKeywordsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanCampaignKeywordResult. */
                    interface IMutateKeywordPlanCampaignKeywordResult {

                        /** MutateKeywordPlanCampaignKeywordResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignKeywordResult. */
                    class MutateKeywordPlanCampaignKeywordResult implements IMutateKeywordPlanCampaignKeywordResult {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignKeywordResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult);

                        /** MutateKeywordPlanCampaignKeywordResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateKeywordPlanCampaignKeywordResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanCampaignKeywordResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordResult;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordResult.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignKeywordResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordResult.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignKeywordResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignKeywordResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanCampaignKeywordResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordResult;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanCampaignKeywordResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordResult;

                        /**
                         * Verifies a MutateKeywordPlanCampaignKeywordResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignKeywordResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanCampaignKeywordResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignKeywordResult message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanCampaignKeywordResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanCampaignKeywordResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignKeywordResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanCampaignKeywordResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a KeywordPlanCampaignService */
                    class KeywordPlanCampaignService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordPlanCampaignService 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 KeywordPlanCampaignService 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): KeywordPlanCampaignService;

                        /**
                         * Calls MutateKeywordPlanCampaigns.
                         * @param request MutateKeywordPlanCampaignsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateKeywordPlanCampaignsResponse
                         */
                        public mutateKeywordPlanCampaigns(request: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsRequest, callback: google.ads.googleads.v23.services.KeywordPlanCampaignService.MutateKeywordPlanCampaignsCallback): void;

                        /**
                         * Calls MutateKeywordPlanCampaigns.
                         * @param request MutateKeywordPlanCampaignsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanCampaigns(request: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsRequest): Promise<google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse>;
                    }

                    namespace KeywordPlanCampaignService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanCampaignService|mutateKeywordPlanCampaigns}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanCampaignsResponse
                         */
                        type MutateKeywordPlanCampaignsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse) => void;
                    }

                    /** Properties of a MutateKeywordPlanCampaignsRequest. */
                    interface IMutateKeywordPlanCampaignsRequest {

                        /** MutateKeywordPlanCampaignsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanCampaignsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IKeywordPlanCampaignOperation[]|null);

                        /** MutateKeywordPlanCampaignsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateKeywordPlanCampaignsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignsRequest. */
                    class MutateKeywordPlanCampaignsRequest implements IMutateKeywordPlanCampaignsRequest {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsRequest);

                        /** MutateKeywordPlanCampaignsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanCampaignsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IKeywordPlanCampaignOperation[];

                        /** MutateKeywordPlanCampaignsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateKeywordPlanCampaignsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateKeywordPlanCampaignsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanCampaignsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsRequest): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignsRequest.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanCampaignsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsRequest;

                        /**
                         * Decodes a MutateKeywordPlanCampaignsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanCampaignsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsRequest;

                        /**
                         * Verifies a MutateKeywordPlanCampaignsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanCampaignsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignsRequest message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanCampaignsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanCampaignsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanCampaignsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanCampaignOperation. */
                    interface IKeywordPlanCampaignOperation {

                        /** KeywordPlanCampaignOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignOperation create */
                        create?: (google.ads.googleads.v23.resources.IKeywordPlanCampaign|null);

                        /** KeywordPlanCampaignOperation update */
                        update?: (google.ads.googleads.v23.resources.IKeywordPlanCampaign|null);

                        /** KeywordPlanCampaignOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanCampaignOperation. */
                    class KeywordPlanCampaignOperation implements IKeywordPlanCampaignOperation {

                        /**
                         * Constructs a new KeywordPlanCampaignOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordPlanCampaignOperation);

                        /** KeywordPlanCampaignOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IKeywordPlanCampaign|null);

                        /** KeywordPlanCampaignOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IKeywordPlanCampaign|null);

                        /** KeywordPlanCampaignOperation remove. */
                        public remove?: (string|null);

                        /** KeywordPlanCampaignOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new KeywordPlanCampaignOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordPlanCampaignOperation): google.ads.googleads.v23.services.KeywordPlanCampaignOperation;

                        /**
                         * Encodes the specified KeywordPlanCampaignOperation message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanCampaignOperation.verify|verify} messages.
                         * @param message KeywordPlanCampaignOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordPlanCampaignOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanCampaignOperation.verify|verify} messages.
                         * @param message KeywordPlanCampaignOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordPlanCampaignOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanCampaignOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordPlanCampaignOperation;

                        /**
                         * Decodes a KeywordPlanCampaignOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaignOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordPlanCampaignOperation;

                        /**
                         * Verifies a KeywordPlanCampaignOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanCampaignOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordPlanCampaignOperation;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignOperation message. Also converts values to other types if specified.
                         * @param message KeywordPlanCampaignOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordPlanCampaignOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanCampaignOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanCampaignsResponse. */
                    interface IMutateKeywordPlanCampaignsResponse {

                        /** MutateKeywordPlanCampaignsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignsResponse. */
                    class MutateKeywordPlanCampaignsResponse implements IMutateKeywordPlanCampaignsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsResponse);

                        /** MutateKeywordPlanCampaignsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult[];

                        /**
                         * Creates a new MutateKeywordPlanCampaignsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanCampaignsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsResponse): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanCampaignsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse;

                        /**
                         * Decodes a MutateKeywordPlanCampaignsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanCampaignsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse;

                        /**
                         * Verifies a MutateKeywordPlanCampaignsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanCampaignsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignsResponse message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanCampaignsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanCampaignsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanCampaignsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlanCampaignResult. */
                    interface IMutateKeywordPlanCampaignResult {

                        /** MutateKeywordPlanCampaignResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignResult. */
                    class MutateKeywordPlanCampaignResult implements IMutateKeywordPlanCampaignResult {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult);

                        /** MutateKeywordPlanCampaignResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateKeywordPlanCampaignResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlanCampaignResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult): google.ads.googleads.v23.services.MutateKeywordPlanCampaignResult;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignResult.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlanCampaignResult.verify|verify} messages.
                         * @param message MutateKeywordPlanCampaignResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlanCampaignResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlanCampaignResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlanCampaignResult;

                        /**
                         * Decodes a MutateKeywordPlanCampaignResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlanCampaignResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlanCampaignResult;

                        /**
                         * Verifies a MutateKeywordPlanCampaignResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlanCampaignResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlanCampaignResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignResult message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlanCampaignResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlanCampaignResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlanCampaignResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a KeywordPlanService */
                    class KeywordPlanService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordPlanService 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 KeywordPlanService 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): KeywordPlanService;

                        /**
                         * Calls MutateKeywordPlans.
                         * @param request MutateKeywordPlansRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateKeywordPlansResponse
                         */
                        public mutateKeywordPlans(request: google.ads.googleads.v23.services.IMutateKeywordPlansRequest, callback: google.ads.googleads.v23.services.KeywordPlanService.MutateKeywordPlansCallback): void;

                        /**
                         * Calls MutateKeywordPlans.
                         * @param request MutateKeywordPlansRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlans(request: google.ads.googleads.v23.services.IMutateKeywordPlansRequest): Promise<google.ads.googleads.v23.services.MutateKeywordPlansResponse>;
                    }

                    namespace KeywordPlanService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanService|mutateKeywordPlans}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlansResponse
                         */
                        type MutateKeywordPlansCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateKeywordPlansResponse) => void;
                    }

                    /** Properties of a MutateKeywordPlansRequest. */
                    interface IMutateKeywordPlansRequest {

                        /** MutateKeywordPlansRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlansRequest operations */
                        operations?: (google.ads.googleads.v23.services.IKeywordPlanOperation[]|null);

                        /** MutateKeywordPlansRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateKeywordPlansRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateKeywordPlansRequest. */
                    class MutateKeywordPlansRequest implements IMutateKeywordPlansRequest {

                        /**
                         * Constructs a new MutateKeywordPlansRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlansRequest);

                        /** MutateKeywordPlansRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlansRequest operations. */
                        public operations: google.ads.googleads.v23.services.IKeywordPlanOperation[];

                        /** MutateKeywordPlansRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateKeywordPlansRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateKeywordPlansRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlansRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlansRequest): google.ads.googleads.v23.services.MutateKeywordPlansRequest;

                        /**
                         * Encodes the specified MutateKeywordPlansRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlansRequest.verify|verify} messages.
                         * @param message MutateKeywordPlansRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlansRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlansRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlansRequest.verify|verify} messages.
                         * @param message MutateKeywordPlansRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlansRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlansRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlansRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlansRequest;

                        /**
                         * Decodes a MutateKeywordPlansRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlansRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlansRequest;

                        /**
                         * Verifies a MutateKeywordPlansRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlansRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlansRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlansRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlansRequest message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlansRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlansRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlansRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlansRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordPlanOperation. */
                    interface IKeywordPlanOperation {

                        /** KeywordPlanOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanOperation create */
                        create?: (google.ads.googleads.v23.resources.IKeywordPlan|null);

                        /** KeywordPlanOperation update */
                        update?: (google.ads.googleads.v23.resources.IKeywordPlan|null);

                        /** KeywordPlanOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanOperation. */
                    class KeywordPlanOperation implements IKeywordPlanOperation {

                        /**
                         * Constructs a new KeywordPlanOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordPlanOperation);

                        /** KeywordPlanOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IKeywordPlan|null);

                        /** KeywordPlanOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IKeywordPlan|null);

                        /** KeywordPlanOperation remove. */
                        public remove?: (string|null);

                        /** KeywordPlanOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new KeywordPlanOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordPlanOperation): google.ads.googleads.v23.services.KeywordPlanOperation;

                        /**
                         * Encodes the specified KeywordPlanOperation message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanOperation.verify|verify} messages.
                         * @param message KeywordPlanOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordPlanOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordPlanOperation.verify|verify} messages.
                         * @param message KeywordPlanOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordPlanOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordPlanOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordPlanOperation;

                        /**
                         * Decodes a KeywordPlanOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordPlanOperation;

                        /**
                         * Verifies a KeywordPlanOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordPlanOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordPlanOperation;

                        /**
                         * Creates a plain object from a KeywordPlanOperation message. Also converts values to other types if specified.
                         * @param message KeywordPlanOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordPlanOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordPlanOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlansResponse. */
                    interface IMutateKeywordPlansResponse {

                        /** MutateKeywordPlansResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlansResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateKeywordPlansResult[]|null);
                    }

                    /** Represents a MutateKeywordPlansResponse. */
                    class MutateKeywordPlansResponse implements IMutateKeywordPlansResponse {

                        /**
                         * Constructs a new MutateKeywordPlansResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlansResponse);

                        /** MutateKeywordPlansResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlansResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateKeywordPlansResult[];

                        /**
                         * Creates a new MutateKeywordPlansResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlansResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlansResponse): google.ads.googleads.v23.services.MutateKeywordPlansResponse;

                        /**
                         * Encodes the specified MutateKeywordPlansResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlansResponse.verify|verify} messages.
                         * @param message MutateKeywordPlansResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlansResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlansResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlansResponse.verify|verify} messages.
                         * @param message MutateKeywordPlansResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlansResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlansResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlansResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlansResponse;

                        /**
                         * Decodes a MutateKeywordPlansResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlansResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlansResponse;

                        /**
                         * Verifies a MutateKeywordPlansResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlansResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlansResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlansResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlansResponse message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlansResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlansResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlansResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlansResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateKeywordPlansResult. */
                    interface IMutateKeywordPlansResult {

                        /** MutateKeywordPlansResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateKeywordPlansResult. */
                    class MutateKeywordPlansResult implements IMutateKeywordPlansResult {

                        /**
                         * Constructs a new MutateKeywordPlansResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateKeywordPlansResult);

                        /** MutateKeywordPlansResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateKeywordPlansResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateKeywordPlansResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateKeywordPlansResult): google.ads.googleads.v23.services.MutateKeywordPlansResult;

                        /**
                         * Encodes the specified MutateKeywordPlansResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlansResult.verify|verify} messages.
                         * @param message MutateKeywordPlansResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateKeywordPlansResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlansResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateKeywordPlansResult.verify|verify} messages.
                         * @param message MutateKeywordPlansResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateKeywordPlansResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlansResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateKeywordPlansResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateKeywordPlansResult;

                        /**
                         * Decodes a MutateKeywordPlansResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateKeywordPlansResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateKeywordPlansResult;

                        /**
                         * Verifies a MutateKeywordPlansResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlansResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateKeywordPlansResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateKeywordPlansResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlansResult message. Also converts values to other types if specified.
                         * @param message MutateKeywordPlansResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateKeywordPlansResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlansResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateKeywordPlansResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a LabelService */
                    class LabelService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new LabelService 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 LabelService 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): LabelService;

                        /**
                         * Calls MutateLabels.
                         * @param request MutateLabelsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateLabelsResponse
                         */
                        public mutateLabels(request: google.ads.googleads.v23.services.IMutateLabelsRequest, callback: google.ads.googleads.v23.services.LabelService.MutateLabelsCallback): void;

                        /**
                         * Calls MutateLabels.
                         * @param request MutateLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateLabels(request: google.ads.googleads.v23.services.IMutateLabelsRequest): Promise<google.ads.googleads.v23.services.MutateLabelsResponse>;
                    }

                    namespace LabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.LabelService|mutateLabels}.
                         * @param error Error, if any
                         * @param [response] MutateLabelsResponse
                         */
                        type MutateLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateLabelsResponse) => void;
                    }

                    /** Properties of a MutateLabelsRequest. */
                    interface IMutateLabelsRequest {

                        /** MutateLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateLabelsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ILabelOperation[]|null);

                        /** MutateLabelsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateLabelsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateLabelsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateLabelsRequest. */
                    class MutateLabelsRequest implements IMutateLabelsRequest {

                        /**
                         * Constructs a new MutateLabelsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateLabelsRequest);

                        /** MutateLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateLabelsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ILabelOperation[];

                        /** MutateLabelsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateLabelsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateLabelsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateLabelsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateLabelsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateLabelsRequest): google.ads.googleads.v23.services.MutateLabelsRequest;

                        /**
                         * Encodes the specified MutateLabelsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateLabelsRequest.verify|verify} messages.
                         * @param message MutateLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateLabelsRequest.verify|verify} messages.
                         * @param message MutateLabelsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateLabelsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateLabelsRequest;

                        /**
                         * Decodes a MutateLabelsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateLabelsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateLabelsRequest;

                        /**
                         * Verifies a MutateLabelsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateLabelsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateLabelsRequest;

                        /**
                         * Creates a plain object from a MutateLabelsRequest message. Also converts values to other types if specified.
                         * @param message MutateLabelsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateLabelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateLabelsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LabelOperation. */
                    interface ILabelOperation {

                        /** LabelOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** LabelOperation create */
                        create?: (google.ads.googleads.v23.resources.ILabel|null);

                        /** LabelOperation update */
                        update?: (google.ads.googleads.v23.resources.ILabel|null);

                        /** LabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a LabelOperation. */
                    class LabelOperation implements ILabelOperation {

                        /**
                         * Constructs a new LabelOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ILabelOperation);

                        /** LabelOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** LabelOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ILabel|null);

                        /** LabelOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ILabel|null);

                        /** LabelOperation remove. */
                        public remove?: (string|null);

                        /** LabelOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new LabelOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LabelOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ILabelOperation): google.ads.googleads.v23.services.LabelOperation;

                        /**
                         * Encodes the specified LabelOperation message. Does not implicitly {@link google.ads.googleads.v23.services.LabelOperation.verify|verify} messages.
                         * @param message LabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ILabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.LabelOperation.verify|verify} messages.
                         * @param message LabelOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ILabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LabelOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.LabelOperation;

                        /**
                         * Decodes a LabelOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LabelOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.LabelOperation;

                        /**
                         * Verifies a LabelOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LabelOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.LabelOperation;

                        /**
                         * Creates a plain object from a LabelOperation message. Also converts values to other types if specified.
                         * @param message LabelOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.LabelOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LabelOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateLabelsResponse. */
                    interface IMutateLabelsResponse {

                        /** MutateLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateLabelsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateLabelResult[]|null);
                    }

                    /** Represents a MutateLabelsResponse. */
                    class MutateLabelsResponse implements IMutateLabelsResponse {

                        /**
                         * Constructs a new MutateLabelsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateLabelsResponse);

                        /** MutateLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateLabelsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateLabelResult[];

                        /**
                         * Creates a new MutateLabelsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateLabelsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateLabelsResponse): google.ads.googleads.v23.services.MutateLabelsResponse;

                        /**
                         * Encodes the specified MutateLabelsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateLabelsResponse.verify|verify} messages.
                         * @param message MutateLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateLabelsResponse.verify|verify} messages.
                         * @param message MutateLabelsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateLabelsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateLabelsResponse;

                        /**
                         * Decodes a MutateLabelsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateLabelsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateLabelsResponse;

                        /**
                         * Verifies a MutateLabelsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateLabelsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateLabelsResponse;

                        /**
                         * Creates a plain object from a MutateLabelsResponse message. Also converts values to other types if specified.
                         * @param message MutateLabelsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateLabelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateLabelsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateLabelResult. */
                    interface IMutateLabelResult {

                        /** MutateLabelResult resource_name */
                        resource_name?: (string|null);

                        /** MutateLabelResult label */
                        label?: (google.ads.googleads.v23.resources.ILabel|null);
                    }

                    /** Represents a MutateLabelResult. */
                    class MutateLabelResult implements IMutateLabelResult {

                        /**
                         * Constructs a new MutateLabelResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateLabelResult);

                        /** MutateLabelResult resource_name. */
                        public resource_name: string;

                        /** MutateLabelResult label. */
                        public label?: (google.ads.googleads.v23.resources.ILabel|null);

                        /**
                         * Creates a new MutateLabelResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateLabelResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateLabelResult): google.ads.googleads.v23.services.MutateLabelResult;

                        /**
                         * Encodes the specified MutateLabelResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateLabelResult.verify|verify} messages.
                         * @param message MutateLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateLabelResult.verify|verify} messages.
                         * @param message MutateLabelResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateLabelResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateLabelResult;

                        /**
                         * Decodes a MutateLabelResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateLabelResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateLabelResult;

                        /**
                         * Verifies a MutateLabelResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateLabelResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateLabelResult;

                        /**
                         * Creates a plain object from a MutateLabelResult message. Also converts values to other types if specified.
                         * @param message MutateLabelResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateLabelResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateLabelResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a RecommendationSubscriptionService */
                    class RecommendationSubscriptionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new RecommendationSubscriptionService 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 RecommendationSubscriptionService 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): RecommendationSubscriptionService;

                        /**
                         * Calls MutateRecommendationSubscription.
                         * @param request MutateRecommendationSubscriptionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateRecommendationSubscriptionResponse
                         */
                        public mutateRecommendationSubscription(request: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionRequest, callback: google.ads.googleads.v23.services.RecommendationSubscriptionService.MutateRecommendationSubscriptionCallback): void;

                        /**
                         * Calls MutateRecommendationSubscription.
                         * @param request MutateRecommendationSubscriptionRequest message or plain object
                         * @returns Promise
                         */
                        public mutateRecommendationSubscription(request: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionRequest): Promise<google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse>;
                    }

                    namespace RecommendationSubscriptionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.RecommendationSubscriptionService|mutateRecommendationSubscription}.
                         * @param error Error, if any
                         * @param [response] MutateRecommendationSubscriptionResponse
                         */
                        type MutateRecommendationSubscriptionCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse) => void;
                    }

                    /** Properties of a MutateRecommendationSubscriptionRequest. */
                    interface IMutateRecommendationSubscriptionRequest {

                        /** MutateRecommendationSubscriptionRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateRecommendationSubscriptionRequest operations */
                        operations?: (google.ads.googleads.v23.services.IRecommendationSubscriptionOperation[]|null);

                        /** MutateRecommendationSubscriptionRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateRecommendationSubscriptionRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateRecommendationSubscriptionRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateRecommendationSubscriptionRequest. */
                    class MutateRecommendationSubscriptionRequest implements IMutateRecommendationSubscriptionRequest {

                        /**
                         * Constructs a new MutateRecommendationSubscriptionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionRequest);

                        /** MutateRecommendationSubscriptionRequest customer_id. */
                        public customer_id: string;

                        /** MutateRecommendationSubscriptionRequest operations. */
                        public operations: google.ads.googleads.v23.services.IRecommendationSubscriptionOperation[];

                        /** MutateRecommendationSubscriptionRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateRecommendationSubscriptionRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateRecommendationSubscriptionRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateRecommendationSubscriptionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateRecommendationSubscriptionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionRequest): google.ads.googleads.v23.services.MutateRecommendationSubscriptionRequest;

                        /**
                         * Encodes the specified MutateRecommendationSubscriptionRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateRecommendationSubscriptionRequest.verify|verify} messages.
                         * @param message MutateRecommendationSubscriptionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRecommendationSubscriptionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateRecommendationSubscriptionRequest.verify|verify} messages.
                         * @param message MutateRecommendationSubscriptionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRecommendationSubscriptionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateRecommendationSubscriptionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateRecommendationSubscriptionRequest;

                        /**
                         * Decodes a MutateRecommendationSubscriptionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateRecommendationSubscriptionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateRecommendationSubscriptionRequest;

                        /**
                         * Verifies a MutateRecommendationSubscriptionRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRecommendationSubscriptionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateRecommendationSubscriptionRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateRecommendationSubscriptionRequest;

                        /**
                         * Creates a plain object from a MutateRecommendationSubscriptionRequest message. Also converts values to other types if specified.
                         * @param message MutateRecommendationSubscriptionRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateRecommendationSubscriptionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRecommendationSubscriptionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateRecommendationSubscriptionRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RecommendationSubscriptionOperation. */
                    interface IRecommendationSubscriptionOperation {

                        /** RecommendationSubscriptionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** RecommendationSubscriptionOperation create */
                        create?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);

                        /** RecommendationSubscriptionOperation update */
                        update?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);
                    }

                    /** Represents a RecommendationSubscriptionOperation. */
                    class RecommendationSubscriptionOperation implements IRecommendationSubscriptionOperation {

                        /**
                         * Constructs a new RecommendationSubscriptionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRecommendationSubscriptionOperation);

                        /** RecommendationSubscriptionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** RecommendationSubscriptionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);

                        /** RecommendationSubscriptionOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);

                        /** RecommendationSubscriptionOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new RecommendationSubscriptionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecommendationSubscriptionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRecommendationSubscriptionOperation): google.ads.googleads.v23.services.RecommendationSubscriptionOperation;

                        /**
                         * Encodes the specified RecommendationSubscriptionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.RecommendationSubscriptionOperation.verify|verify} messages.
                         * @param message RecommendationSubscriptionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRecommendationSubscriptionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationSubscriptionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RecommendationSubscriptionOperation.verify|verify} messages.
                         * @param message RecommendationSubscriptionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRecommendationSubscriptionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationSubscriptionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecommendationSubscriptionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RecommendationSubscriptionOperation;

                        /**
                         * Decodes a RecommendationSubscriptionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecommendationSubscriptionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RecommendationSubscriptionOperation;

                        /**
                         * Verifies a RecommendationSubscriptionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationSubscriptionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecommendationSubscriptionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RecommendationSubscriptionOperation;

                        /**
                         * Creates a plain object from a RecommendationSubscriptionOperation message. Also converts values to other types if specified.
                         * @param message RecommendationSubscriptionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RecommendationSubscriptionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationSubscriptionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecommendationSubscriptionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateRecommendationSubscriptionResponse. */
                    interface IMutateRecommendationSubscriptionResponse {

                        /** MutateRecommendationSubscriptionResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult[]|null);

                        /** MutateRecommendationSubscriptionResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateRecommendationSubscriptionResponse. */
                    class MutateRecommendationSubscriptionResponse implements IMutateRecommendationSubscriptionResponse {

                        /**
                         * Constructs a new MutateRecommendationSubscriptionResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResponse);

                        /** MutateRecommendationSubscriptionResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult[];

                        /** MutateRecommendationSubscriptionResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateRecommendationSubscriptionResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateRecommendationSubscriptionResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResponse): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse;

                        /**
                         * Encodes the specified MutateRecommendationSubscriptionResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse.verify|verify} messages.
                         * @param message MutateRecommendationSubscriptionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRecommendationSubscriptionResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse.verify|verify} messages.
                         * @param message MutateRecommendationSubscriptionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRecommendationSubscriptionResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateRecommendationSubscriptionResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse;

                        /**
                         * Decodes a MutateRecommendationSubscriptionResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateRecommendationSubscriptionResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse;

                        /**
                         * Verifies a MutateRecommendationSubscriptionResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRecommendationSubscriptionResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateRecommendationSubscriptionResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse;

                        /**
                         * Creates a plain object from a MutateRecommendationSubscriptionResponse message. Also converts values to other types if specified.
                         * @param message MutateRecommendationSubscriptionResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateRecommendationSubscriptionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRecommendationSubscriptionResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateRecommendationSubscriptionResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateRecommendationSubscriptionResult. */
                    interface IMutateRecommendationSubscriptionResult {

                        /** MutateRecommendationSubscriptionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateRecommendationSubscriptionResult recommendation_subscription */
                        recommendation_subscription?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);
                    }

                    /** Represents a MutateRecommendationSubscriptionResult. */
                    class MutateRecommendationSubscriptionResult implements IMutateRecommendationSubscriptionResult {

                        /**
                         * Constructs a new MutateRecommendationSubscriptionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult);

                        /** MutateRecommendationSubscriptionResult resource_name. */
                        public resource_name: string;

                        /** MutateRecommendationSubscriptionResult recommendation_subscription. */
                        public recommendation_subscription?: (google.ads.googleads.v23.resources.IRecommendationSubscription|null);

                        /**
                         * Creates a new MutateRecommendationSubscriptionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateRecommendationSubscriptionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResult;

                        /**
                         * Encodes the specified MutateRecommendationSubscriptionResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateRecommendationSubscriptionResult.verify|verify} messages.
                         * @param message MutateRecommendationSubscriptionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRecommendationSubscriptionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateRecommendationSubscriptionResult.verify|verify} messages.
                         * @param message MutateRecommendationSubscriptionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateRecommendationSubscriptionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRecommendationSubscriptionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateRecommendationSubscriptionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResult;

                        /**
                         * Decodes a MutateRecommendationSubscriptionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateRecommendationSubscriptionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResult;

                        /**
                         * Verifies a MutateRecommendationSubscriptionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRecommendationSubscriptionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateRecommendationSubscriptionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateRecommendationSubscriptionResult;

                        /**
                         * Creates a plain object from a MutateRecommendationSubscriptionResult message. Also converts values to other types if specified.
                         * @param message MutateRecommendationSubscriptionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateRecommendationSubscriptionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRecommendationSubscriptionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateRecommendationSubscriptionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a RemarketingActionService */
                    class RemarketingActionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new RemarketingActionService 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 RemarketingActionService 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): RemarketingActionService;

                        /**
                         * Calls MutateRemarketingActions.
                         * @param request MutateRemarketingActionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateRemarketingActionsResponse
                         */
                        public mutateRemarketingActions(request: google.ads.googleads.v23.services.IMutateRemarketingActionsRequest, callback: google.ads.googleads.v23.services.RemarketingActionService.MutateRemarketingActionsCallback): void;

                        /**
                         * Calls MutateRemarketingActions.
                         * @param request MutateRemarketingActionsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateRemarketingActions(request: google.ads.googleads.v23.services.IMutateRemarketingActionsRequest): Promise<google.ads.googleads.v23.services.MutateRemarketingActionsResponse>;
                    }

                    namespace RemarketingActionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.RemarketingActionService|mutateRemarketingActions}.
                         * @param error Error, if any
                         * @param [response] MutateRemarketingActionsResponse
                         */
                        type MutateRemarketingActionsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateRemarketingActionsResponse) => void;
                    }

                    /** Properties of a MutateRemarketingActionsRequest. */
                    interface IMutateRemarketingActionsRequest {

                        /** MutateRemarketingActionsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateRemarketingActionsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IRemarketingActionOperation[]|null);

                        /** MutateRemarketingActionsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateRemarketingActionsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateRemarketingActionsRequest. */
                    class MutateRemarketingActionsRequest implements IMutateRemarketingActionsRequest {

                        /**
                         * Constructs a new MutateRemarketingActionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateRemarketingActionsRequest);

                        /** MutateRemarketingActionsRequest customer_id. */
                        public customer_id: string;

                        /** MutateRemarketingActionsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IRemarketingActionOperation[];

                        /** MutateRemarketingActionsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateRemarketingActionsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateRemarketingActionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateRemarketingActionsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateRemarketingActionsRequest): google.ads.googleads.v23.services.MutateRemarketingActionsRequest;

                        /**
                         * Encodes the specified MutateRemarketingActionsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateRemarketingActionsRequest.verify|verify} messages.
                         * @param message MutateRemarketingActionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateRemarketingActionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRemarketingActionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateRemarketingActionsRequest.verify|verify} messages.
                         * @param message MutateRemarketingActionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateRemarketingActionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRemarketingActionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateRemarketingActionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateRemarketingActionsRequest;

                        /**
                         * Decodes a MutateRemarketingActionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateRemarketingActionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateRemarketingActionsRequest;

                        /**
                         * Verifies a MutateRemarketingActionsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRemarketingActionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateRemarketingActionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateRemarketingActionsRequest;

                        /**
                         * Creates a plain object from a MutateRemarketingActionsRequest message. Also converts values to other types if specified.
                         * @param message MutateRemarketingActionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateRemarketingActionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRemarketingActionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateRemarketingActionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemarketingActionOperation. */
                    interface IRemarketingActionOperation {

                        /** RemarketingActionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** RemarketingActionOperation create */
                        create?: (google.ads.googleads.v23.resources.IRemarketingAction|null);

                        /** RemarketingActionOperation update */
                        update?: (google.ads.googleads.v23.resources.IRemarketingAction|null);
                    }

                    /** Represents a RemarketingActionOperation. */
                    class RemarketingActionOperation implements IRemarketingActionOperation {

                        /**
                         * Constructs a new RemarketingActionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemarketingActionOperation);

                        /** RemarketingActionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** RemarketingActionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IRemarketingAction|null);

                        /** RemarketingActionOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IRemarketingAction|null);

                        /** RemarketingActionOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new RemarketingActionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemarketingActionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemarketingActionOperation): google.ads.googleads.v23.services.RemarketingActionOperation;

                        /**
                         * Encodes the specified RemarketingActionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.RemarketingActionOperation.verify|verify} messages.
                         * @param message RemarketingActionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemarketingActionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemarketingActionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemarketingActionOperation.verify|verify} messages.
                         * @param message RemarketingActionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemarketingActionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemarketingActionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemarketingActionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemarketingActionOperation;

                        /**
                         * Decodes a RemarketingActionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemarketingActionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemarketingActionOperation;

                        /**
                         * Verifies a RemarketingActionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemarketingActionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemarketingActionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemarketingActionOperation;

                        /**
                         * Creates a plain object from a RemarketingActionOperation message. Also converts values to other types if specified.
                         * @param message RemarketingActionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemarketingActionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemarketingActionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemarketingActionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateRemarketingActionsResponse. */
                    interface IMutateRemarketingActionsResponse {

                        /** MutateRemarketingActionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateRemarketingActionsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateRemarketingActionResult[]|null);
                    }

                    /** Represents a MutateRemarketingActionsResponse. */
                    class MutateRemarketingActionsResponse implements IMutateRemarketingActionsResponse {

                        /**
                         * Constructs a new MutateRemarketingActionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateRemarketingActionsResponse);

                        /** MutateRemarketingActionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateRemarketingActionsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateRemarketingActionResult[];

                        /**
                         * Creates a new MutateRemarketingActionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateRemarketingActionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateRemarketingActionsResponse): google.ads.googleads.v23.services.MutateRemarketingActionsResponse;

                        /**
                         * Encodes the specified MutateRemarketingActionsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateRemarketingActionsResponse.verify|verify} messages.
                         * @param message MutateRemarketingActionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateRemarketingActionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRemarketingActionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateRemarketingActionsResponse.verify|verify} messages.
                         * @param message MutateRemarketingActionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateRemarketingActionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRemarketingActionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateRemarketingActionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateRemarketingActionsResponse;

                        /**
                         * Decodes a MutateRemarketingActionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateRemarketingActionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateRemarketingActionsResponse;

                        /**
                         * Verifies a MutateRemarketingActionsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRemarketingActionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateRemarketingActionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateRemarketingActionsResponse;

                        /**
                         * Creates a plain object from a MutateRemarketingActionsResponse message. Also converts values to other types if specified.
                         * @param message MutateRemarketingActionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateRemarketingActionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRemarketingActionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateRemarketingActionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateRemarketingActionResult. */
                    interface IMutateRemarketingActionResult {

                        /** MutateRemarketingActionResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateRemarketingActionResult. */
                    class MutateRemarketingActionResult implements IMutateRemarketingActionResult {

                        /**
                         * Constructs a new MutateRemarketingActionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateRemarketingActionResult);

                        /** MutateRemarketingActionResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateRemarketingActionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateRemarketingActionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateRemarketingActionResult): google.ads.googleads.v23.services.MutateRemarketingActionResult;

                        /**
                         * Encodes the specified MutateRemarketingActionResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateRemarketingActionResult.verify|verify} messages.
                         * @param message MutateRemarketingActionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateRemarketingActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRemarketingActionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateRemarketingActionResult.verify|verify} messages.
                         * @param message MutateRemarketingActionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateRemarketingActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRemarketingActionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateRemarketingActionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateRemarketingActionResult;

                        /**
                         * Decodes a MutateRemarketingActionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateRemarketingActionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateRemarketingActionResult;

                        /**
                         * Verifies a MutateRemarketingActionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRemarketingActionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateRemarketingActionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateRemarketingActionResult;

                        /**
                         * Creates a plain object from a MutateRemarketingActionResult message. Also converts values to other types if specified.
                         * @param message MutateRemarketingActionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateRemarketingActionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRemarketingActionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateRemarketingActionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a SharedCriterionService */
                    class SharedCriterionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new SharedCriterionService 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 SharedCriterionService 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): SharedCriterionService;

                        /**
                         * Calls MutateSharedCriteria.
                         * @param request MutateSharedCriteriaRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateSharedCriteriaResponse
                         */
                        public mutateSharedCriteria(request: google.ads.googleads.v23.services.IMutateSharedCriteriaRequest, callback: google.ads.googleads.v23.services.SharedCriterionService.MutateSharedCriteriaCallback): void;

                        /**
                         * Calls MutateSharedCriteria.
                         * @param request MutateSharedCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateSharedCriteria(request: google.ads.googleads.v23.services.IMutateSharedCriteriaRequest): Promise<google.ads.googleads.v23.services.MutateSharedCriteriaResponse>;
                    }

                    namespace SharedCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.SharedCriterionService|mutateSharedCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateSharedCriteriaResponse
                         */
                        type MutateSharedCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateSharedCriteriaResponse) => void;
                    }

                    /** Properties of a MutateSharedCriteriaRequest. */
                    interface IMutateSharedCriteriaRequest {

                        /** MutateSharedCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateSharedCriteriaRequest operations */
                        operations?: (google.ads.googleads.v23.services.ISharedCriterionOperation[]|null);

                        /** MutateSharedCriteriaRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateSharedCriteriaRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateSharedCriteriaRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateSharedCriteriaRequest. */
                    class MutateSharedCriteriaRequest implements IMutateSharedCriteriaRequest {

                        /**
                         * Constructs a new MutateSharedCriteriaRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSharedCriteriaRequest);

                        /** MutateSharedCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateSharedCriteriaRequest operations. */
                        public operations: google.ads.googleads.v23.services.ISharedCriterionOperation[];

                        /** MutateSharedCriteriaRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateSharedCriteriaRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateSharedCriteriaRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateSharedCriteriaRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSharedCriteriaRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSharedCriteriaRequest): google.ads.googleads.v23.services.MutateSharedCriteriaRequest;

                        /**
                         * Encodes the specified MutateSharedCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedCriteriaRequest.verify|verify} messages.
                         * @param message MutateSharedCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSharedCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedCriteriaRequest.verify|verify} messages.
                         * @param message MutateSharedCriteriaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSharedCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedCriteriaRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSharedCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSharedCriteriaRequest;

                        /**
                         * Decodes a MutateSharedCriteriaRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSharedCriteriaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSharedCriteriaRequest;

                        /**
                         * Verifies a MutateSharedCriteriaRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSharedCriteriaRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSharedCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateSharedCriteriaRequest message. Also converts values to other types if specified.
                         * @param message MutateSharedCriteriaRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSharedCriteriaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSharedCriteriaRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SharedCriterionOperation. */
                    interface ISharedCriterionOperation {

                        /** SharedCriterionOperation create */
                        create?: (google.ads.googleads.v23.resources.ISharedCriterion|null);

                        /** SharedCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a SharedCriterionOperation. */
                    class SharedCriterionOperation implements ISharedCriterionOperation {

                        /**
                         * Constructs a new SharedCriterionOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISharedCriterionOperation);

                        /** SharedCriterionOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ISharedCriterion|null);

                        /** SharedCriterionOperation remove. */
                        public remove?: (string|null);

                        /** SharedCriterionOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new SharedCriterionOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedCriterionOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISharedCriterionOperation): google.ads.googleads.v23.services.SharedCriterionOperation;

                        /**
                         * Encodes the specified SharedCriterionOperation message. Does not implicitly {@link google.ads.googleads.v23.services.SharedCriterionOperation.verify|verify} messages.
                         * @param message SharedCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISharedCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SharedCriterionOperation.verify|verify} messages.
                         * @param message SharedCriterionOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISharedCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedCriterionOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SharedCriterionOperation;

                        /**
                         * Decodes a SharedCriterionOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedCriterionOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SharedCriterionOperation;

                        /**
                         * Verifies a SharedCriterionOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedCriterionOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SharedCriterionOperation;

                        /**
                         * Creates a plain object from a SharedCriterionOperation message. Also converts values to other types if specified.
                         * @param message SharedCriterionOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SharedCriterionOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedCriterionOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateSharedCriteriaResponse. */
                    interface IMutateSharedCriteriaResponse {

                        /** MutateSharedCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedCriteriaResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateSharedCriterionResult[]|null);
                    }

                    /** Represents a MutateSharedCriteriaResponse. */
                    class MutateSharedCriteriaResponse implements IMutateSharedCriteriaResponse {

                        /**
                         * Constructs a new MutateSharedCriteriaResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSharedCriteriaResponse);

                        /** MutateSharedCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedCriteriaResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateSharedCriterionResult[];

                        /**
                         * Creates a new MutateSharedCriteriaResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSharedCriteriaResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSharedCriteriaResponse): google.ads.googleads.v23.services.MutateSharedCriteriaResponse;

                        /**
                         * Encodes the specified MutateSharedCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedCriteriaResponse.verify|verify} messages.
                         * @param message MutateSharedCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSharedCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedCriteriaResponse.verify|verify} messages.
                         * @param message MutateSharedCriteriaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSharedCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedCriteriaResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSharedCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSharedCriteriaResponse;

                        /**
                         * Decodes a MutateSharedCriteriaResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSharedCriteriaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSharedCriteriaResponse;

                        /**
                         * Verifies a MutateSharedCriteriaResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSharedCriteriaResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSharedCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateSharedCriteriaResponse message. Also converts values to other types if specified.
                         * @param message MutateSharedCriteriaResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSharedCriteriaResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSharedCriteriaResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateSharedCriterionResult. */
                    interface IMutateSharedCriterionResult {

                        /** MutateSharedCriterionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateSharedCriterionResult shared_criterion */
                        shared_criterion?: (google.ads.googleads.v23.resources.ISharedCriterion|null);
                    }

                    /** Represents a MutateSharedCriterionResult. */
                    class MutateSharedCriterionResult implements IMutateSharedCriterionResult {

                        /**
                         * Constructs a new MutateSharedCriterionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSharedCriterionResult);

                        /** MutateSharedCriterionResult resource_name. */
                        public resource_name: string;

                        /** MutateSharedCriterionResult shared_criterion. */
                        public shared_criterion?: (google.ads.googleads.v23.resources.ISharedCriterion|null);

                        /**
                         * Creates a new MutateSharedCriterionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSharedCriterionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSharedCriterionResult): google.ads.googleads.v23.services.MutateSharedCriterionResult;

                        /**
                         * Encodes the specified MutateSharedCriterionResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedCriterionResult.verify|verify} messages.
                         * @param message MutateSharedCriterionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSharedCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedCriterionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedCriterionResult.verify|verify} messages.
                         * @param message MutateSharedCriterionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSharedCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedCriterionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSharedCriterionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSharedCriterionResult;

                        /**
                         * Decodes a MutateSharedCriterionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSharedCriterionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSharedCriterionResult;

                        /**
                         * Verifies a MutateSharedCriterionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedCriterionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSharedCriterionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSharedCriterionResult;

                        /**
                         * Creates a plain object from a MutateSharedCriterionResult message. Also converts values to other types if specified.
                         * @param message MutateSharedCriterionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSharedCriterionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedCriterionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSharedCriterionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a SharedSetService */
                    class SharedSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new SharedSetService 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 SharedSetService 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): SharedSetService;

                        /**
                         * Calls MutateSharedSets.
                         * @param request MutateSharedSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateSharedSetsResponse
                         */
                        public mutateSharedSets(request: google.ads.googleads.v23.services.IMutateSharedSetsRequest, callback: google.ads.googleads.v23.services.SharedSetService.MutateSharedSetsCallback): void;

                        /**
                         * Calls MutateSharedSets.
                         * @param request MutateSharedSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateSharedSets(request: google.ads.googleads.v23.services.IMutateSharedSetsRequest): Promise<google.ads.googleads.v23.services.MutateSharedSetsResponse>;
                    }

                    namespace SharedSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.SharedSetService|mutateSharedSets}.
                         * @param error Error, if any
                         * @param [response] MutateSharedSetsResponse
                         */
                        type MutateSharedSetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateSharedSetsResponse) => void;
                    }

                    /** Properties of a MutateSharedSetsRequest. */
                    interface IMutateSharedSetsRequest {

                        /** MutateSharedSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateSharedSetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ISharedSetOperation[]|null);

                        /** MutateSharedSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateSharedSetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateSharedSetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateSharedSetsRequest. */
                    class MutateSharedSetsRequest implements IMutateSharedSetsRequest {

                        /**
                         * Constructs a new MutateSharedSetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSharedSetsRequest);

                        /** MutateSharedSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateSharedSetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ISharedSetOperation[];

                        /** MutateSharedSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateSharedSetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateSharedSetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateSharedSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSharedSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSharedSetsRequest): google.ads.googleads.v23.services.MutateSharedSetsRequest;

                        /**
                         * Encodes the specified MutateSharedSetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedSetsRequest.verify|verify} messages.
                         * @param message MutateSharedSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSharedSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedSetsRequest.verify|verify} messages.
                         * @param message MutateSharedSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSharedSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedSetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSharedSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSharedSetsRequest;

                        /**
                         * Decodes a MutateSharedSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSharedSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSharedSetsRequest;

                        /**
                         * Verifies a MutateSharedSetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSharedSetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSharedSetsRequest;

                        /**
                         * Creates a plain object from a MutateSharedSetsRequest message. Also converts values to other types if specified.
                         * @param message MutateSharedSetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSharedSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSharedSetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SharedSetOperation. */
                    interface ISharedSetOperation {

                        /** SharedSetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** SharedSetOperation create */
                        create?: (google.ads.googleads.v23.resources.ISharedSet|null);

                        /** SharedSetOperation update */
                        update?: (google.ads.googleads.v23.resources.ISharedSet|null);

                        /** SharedSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a SharedSetOperation. */
                    class SharedSetOperation implements ISharedSetOperation {

                        /**
                         * Constructs a new SharedSetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISharedSetOperation);

                        /** SharedSetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** SharedSetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ISharedSet|null);

                        /** SharedSetOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ISharedSet|null);

                        /** SharedSetOperation remove. */
                        public remove?: (string|null);

                        /** SharedSetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new SharedSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISharedSetOperation): google.ads.googleads.v23.services.SharedSetOperation;

                        /**
                         * Encodes the specified SharedSetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.SharedSetOperation.verify|verify} messages.
                         * @param message SharedSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISharedSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SharedSetOperation.verify|verify} messages.
                         * @param message SharedSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISharedSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SharedSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SharedSetOperation;

                        /**
                         * Decodes a SharedSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SharedSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SharedSetOperation;

                        /**
                         * Verifies a SharedSetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SharedSetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SharedSetOperation;

                        /**
                         * Creates a plain object from a SharedSetOperation message. Also converts values to other types if specified.
                         * @param message SharedSetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SharedSetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SharedSetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateSharedSetsResponse. */
                    interface IMutateSharedSetsResponse {

                        /** MutateSharedSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedSetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateSharedSetResult[]|null);
                    }

                    /** Represents a MutateSharedSetsResponse. */
                    class MutateSharedSetsResponse implements IMutateSharedSetsResponse {

                        /**
                         * Constructs a new MutateSharedSetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSharedSetsResponse);

                        /** MutateSharedSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedSetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateSharedSetResult[];

                        /**
                         * Creates a new MutateSharedSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSharedSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSharedSetsResponse): google.ads.googleads.v23.services.MutateSharedSetsResponse;

                        /**
                         * Encodes the specified MutateSharedSetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedSetsResponse.verify|verify} messages.
                         * @param message MutateSharedSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSharedSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedSetsResponse.verify|verify} messages.
                         * @param message MutateSharedSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSharedSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedSetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSharedSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSharedSetsResponse;

                        /**
                         * Decodes a MutateSharedSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSharedSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSharedSetsResponse;

                        /**
                         * Verifies a MutateSharedSetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSharedSetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSharedSetsResponse;

                        /**
                         * Creates a plain object from a MutateSharedSetsResponse message. Also converts values to other types if specified.
                         * @param message MutateSharedSetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSharedSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSharedSetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateSharedSetResult. */
                    interface IMutateSharedSetResult {

                        /** MutateSharedSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateSharedSetResult shared_set */
                        shared_set?: (google.ads.googleads.v23.resources.ISharedSet|null);
                    }

                    /** Represents a MutateSharedSetResult. */
                    class MutateSharedSetResult implements IMutateSharedSetResult {

                        /**
                         * Constructs a new MutateSharedSetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSharedSetResult);

                        /** MutateSharedSetResult resource_name. */
                        public resource_name: string;

                        /** MutateSharedSetResult shared_set. */
                        public shared_set?: (google.ads.googleads.v23.resources.ISharedSet|null);

                        /**
                         * Creates a new MutateSharedSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSharedSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSharedSetResult): google.ads.googleads.v23.services.MutateSharedSetResult;

                        /**
                         * Encodes the specified MutateSharedSetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedSetResult.verify|verify} messages.
                         * @param message MutateSharedSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSharedSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSharedSetResult.verify|verify} messages.
                         * @param message MutateSharedSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSharedSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedSetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSharedSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSharedSetResult;

                        /**
                         * Decodes a MutateSharedSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSharedSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSharedSetResult;

                        /**
                         * Verifies a MutateSharedSetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSharedSetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSharedSetResult;

                        /**
                         * Creates a plain object from a MutateSharedSetResult message. Also converts values to other types if specified.
                         * @param message MutateSharedSetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSharedSetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSharedSetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a SmartCampaignSettingService */
                    class SmartCampaignSettingService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new SmartCampaignSettingService 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 SmartCampaignSettingService 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): SmartCampaignSettingService;

                        /**
                         * Calls GetSmartCampaignStatus.
                         * @param request GetSmartCampaignStatusRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetSmartCampaignStatusResponse
                         */
                        public getSmartCampaignStatus(request: google.ads.googleads.v23.services.IGetSmartCampaignStatusRequest, callback: google.ads.googleads.v23.services.SmartCampaignSettingService.GetSmartCampaignStatusCallback): void;

                        /**
                         * Calls GetSmartCampaignStatus.
                         * @param request GetSmartCampaignStatusRequest message or plain object
                         * @returns Promise
                         */
                        public getSmartCampaignStatus(request: google.ads.googleads.v23.services.IGetSmartCampaignStatusRequest): Promise<google.ads.googleads.v23.services.GetSmartCampaignStatusResponse>;

                        /**
                         * Calls MutateSmartCampaignSettings.
                         * @param request MutateSmartCampaignSettingsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateSmartCampaignSettingsResponse
                         */
                        public mutateSmartCampaignSettings(request: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsRequest, callback: google.ads.googleads.v23.services.SmartCampaignSettingService.MutateSmartCampaignSettingsCallback): void;

                        /**
                         * Calls MutateSmartCampaignSettings.
                         * @param request MutateSmartCampaignSettingsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateSmartCampaignSettings(request: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsRequest): Promise<google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse>;
                    }

                    namespace SmartCampaignSettingService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.SmartCampaignSettingService|getSmartCampaignStatus}.
                         * @param error Error, if any
                         * @param [response] GetSmartCampaignStatusResponse
                         */
                        type GetSmartCampaignStatusCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GetSmartCampaignStatusResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.SmartCampaignSettingService|mutateSmartCampaignSettings}.
                         * @param error Error, if any
                         * @param [response] MutateSmartCampaignSettingsResponse
                         */
                        type MutateSmartCampaignSettingsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse) => void;
                    }

                    /** Properties of a GetSmartCampaignStatusRequest. */
                    interface IGetSmartCampaignStatusRequest {

                        /** GetSmartCampaignStatusRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetSmartCampaignStatusRequest. */
                    class GetSmartCampaignStatusRequest implements IGetSmartCampaignStatusRequest {

                        /**
                         * Constructs a new GetSmartCampaignStatusRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGetSmartCampaignStatusRequest);

                        /** GetSmartCampaignStatusRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetSmartCampaignStatusRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetSmartCampaignStatusRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGetSmartCampaignStatusRequest): google.ads.googleads.v23.services.GetSmartCampaignStatusRequest;

                        /**
                         * Encodes the specified GetSmartCampaignStatusRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GetSmartCampaignStatusRequest.verify|verify} messages.
                         * @param message GetSmartCampaignStatusRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGetSmartCampaignStatusRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetSmartCampaignStatusRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GetSmartCampaignStatusRequest.verify|verify} messages.
                         * @param message GetSmartCampaignStatusRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGetSmartCampaignStatusRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetSmartCampaignStatusRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetSmartCampaignStatusRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GetSmartCampaignStatusRequest;

                        /**
                         * Decodes a GetSmartCampaignStatusRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetSmartCampaignStatusRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GetSmartCampaignStatusRequest;

                        /**
                         * Verifies a GetSmartCampaignStatusRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetSmartCampaignStatusRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetSmartCampaignStatusRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GetSmartCampaignStatusRequest;

                        /**
                         * Creates a plain object from a GetSmartCampaignStatusRequest message. Also converts values to other types if specified.
                         * @param message GetSmartCampaignStatusRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GetSmartCampaignStatusRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetSmartCampaignStatusRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetSmartCampaignStatusRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignNotEligibleDetails. */
                    interface ISmartCampaignNotEligibleDetails {

                        /** SmartCampaignNotEligibleDetails not_eligible_reason */
                        not_eligible_reason?: (google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum.SmartCampaignNotEligibleReason|keyof typeof google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum.SmartCampaignNotEligibleReason|null);
                    }

                    /** Represents a SmartCampaignNotEligibleDetails. */
                    class SmartCampaignNotEligibleDetails implements ISmartCampaignNotEligibleDetails {

                        /**
                         * Constructs a new SmartCampaignNotEligibleDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISmartCampaignNotEligibleDetails);

                        /** SmartCampaignNotEligibleDetails not_eligible_reason. */
                        public not_eligible_reason?: (google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum.SmartCampaignNotEligibleReason|keyof typeof google.ads.googleads.v23.enums.SmartCampaignNotEligibleReasonEnum.SmartCampaignNotEligibleReason|null);

                        /**
                         * Creates a new SmartCampaignNotEligibleDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignNotEligibleDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISmartCampaignNotEligibleDetails): google.ads.googleads.v23.services.SmartCampaignNotEligibleDetails;

                        /**
                         * Encodes the specified SmartCampaignNotEligibleDetails message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignNotEligibleDetails.verify|verify} messages.
                         * @param message SmartCampaignNotEligibleDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISmartCampaignNotEligibleDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignNotEligibleDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignNotEligibleDetails.verify|verify} messages.
                         * @param message SmartCampaignNotEligibleDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISmartCampaignNotEligibleDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignNotEligibleDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignNotEligibleDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignNotEligibleDetails;

                        /**
                         * Decodes a SmartCampaignNotEligibleDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignNotEligibleDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignNotEligibleDetails;

                        /**
                         * Verifies a SmartCampaignNotEligibleDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignNotEligibleDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignNotEligibleDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignNotEligibleDetails;

                        /**
                         * Creates a plain object from a SmartCampaignNotEligibleDetails message. Also converts values to other types if specified.
                         * @param message SmartCampaignNotEligibleDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SmartCampaignNotEligibleDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignNotEligibleDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignNotEligibleDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignEligibleDetails. */
                    interface ISmartCampaignEligibleDetails {

                        /** SmartCampaignEligibleDetails last_impression_date_time */
                        last_impression_date_time?: (string|null);

                        /** SmartCampaignEligibleDetails end_date_time */
                        end_date_time?: (string|null);
                    }

                    /** Represents a SmartCampaignEligibleDetails. */
                    class SmartCampaignEligibleDetails implements ISmartCampaignEligibleDetails {

                        /**
                         * Constructs a new SmartCampaignEligibleDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISmartCampaignEligibleDetails);

                        /** SmartCampaignEligibleDetails last_impression_date_time. */
                        public last_impression_date_time?: (string|null);

                        /** SmartCampaignEligibleDetails end_date_time. */
                        public end_date_time?: (string|null);

                        /**
                         * Creates a new SmartCampaignEligibleDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignEligibleDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISmartCampaignEligibleDetails): google.ads.googleads.v23.services.SmartCampaignEligibleDetails;

                        /**
                         * Encodes the specified SmartCampaignEligibleDetails message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignEligibleDetails.verify|verify} messages.
                         * @param message SmartCampaignEligibleDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISmartCampaignEligibleDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignEligibleDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignEligibleDetails.verify|verify} messages.
                         * @param message SmartCampaignEligibleDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISmartCampaignEligibleDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignEligibleDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignEligibleDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignEligibleDetails;

                        /**
                         * Decodes a SmartCampaignEligibleDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignEligibleDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignEligibleDetails;

                        /**
                         * Verifies a SmartCampaignEligibleDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignEligibleDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignEligibleDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignEligibleDetails;

                        /**
                         * Creates a plain object from a SmartCampaignEligibleDetails message. Also converts values to other types if specified.
                         * @param message SmartCampaignEligibleDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SmartCampaignEligibleDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignEligibleDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignEligibleDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignPausedDetails. */
                    interface ISmartCampaignPausedDetails {

                        /** SmartCampaignPausedDetails paused_date_time */
                        paused_date_time?: (string|null);
                    }

                    /** Represents a SmartCampaignPausedDetails. */
                    class SmartCampaignPausedDetails implements ISmartCampaignPausedDetails {

                        /**
                         * Constructs a new SmartCampaignPausedDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISmartCampaignPausedDetails);

                        /** SmartCampaignPausedDetails paused_date_time. */
                        public paused_date_time?: (string|null);

                        /**
                         * Creates a new SmartCampaignPausedDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignPausedDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISmartCampaignPausedDetails): google.ads.googleads.v23.services.SmartCampaignPausedDetails;

                        /**
                         * Encodes the specified SmartCampaignPausedDetails message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignPausedDetails.verify|verify} messages.
                         * @param message SmartCampaignPausedDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISmartCampaignPausedDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignPausedDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignPausedDetails.verify|verify} messages.
                         * @param message SmartCampaignPausedDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISmartCampaignPausedDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignPausedDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignPausedDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignPausedDetails;

                        /**
                         * Decodes a SmartCampaignPausedDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignPausedDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignPausedDetails;

                        /**
                         * Verifies a SmartCampaignPausedDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignPausedDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignPausedDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignPausedDetails;

                        /**
                         * Creates a plain object from a SmartCampaignPausedDetails message. Also converts values to other types if specified.
                         * @param message SmartCampaignPausedDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SmartCampaignPausedDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignPausedDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignPausedDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignRemovedDetails. */
                    interface ISmartCampaignRemovedDetails {

                        /** SmartCampaignRemovedDetails removed_date_time */
                        removed_date_time?: (string|null);
                    }

                    /** Represents a SmartCampaignRemovedDetails. */
                    class SmartCampaignRemovedDetails implements ISmartCampaignRemovedDetails {

                        /**
                         * Constructs a new SmartCampaignRemovedDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISmartCampaignRemovedDetails);

                        /** SmartCampaignRemovedDetails removed_date_time. */
                        public removed_date_time?: (string|null);

                        /**
                         * Creates a new SmartCampaignRemovedDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignRemovedDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISmartCampaignRemovedDetails): google.ads.googleads.v23.services.SmartCampaignRemovedDetails;

                        /**
                         * Encodes the specified SmartCampaignRemovedDetails message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignRemovedDetails.verify|verify} messages.
                         * @param message SmartCampaignRemovedDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISmartCampaignRemovedDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignRemovedDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignRemovedDetails.verify|verify} messages.
                         * @param message SmartCampaignRemovedDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISmartCampaignRemovedDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignRemovedDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignRemovedDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignRemovedDetails;

                        /**
                         * Decodes a SmartCampaignRemovedDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignRemovedDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignRemovedDetails;

                        /**
                         * Verifies a SmartCampaignRemovedDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignRemovedDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignRemovedDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignRemovedDetails;

                        /**
                         * Creates a plain object from a SmartCampaignRemovedDetails message. Also converts values to other types if specified.
                         * @param message SmartCampaignRemovedDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SmartCampaignRemovedDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignRemovedDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignRemovedDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignEndedDetails. */
                    interface ISmartCampaignEndedDetails {

                        /** SmartCampaignEndedDetails end_date_time */
                        end_date_time?: (string|null);
                    }

                    /** Represents a SmartCampaignEndedDetails. */
                    class SmartCampaignEndedDetails implements ISmartCampaignEndedDetails {

                        /**
                         * Constructs a new SmartCampaignEndedDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISmartCampaignEndedDetails);

                        /** SmartCampaignEndedDetails end_date_time. */
                        public end_date_time?: (string|null);

                        /**
                         * Creates a new SmartCampaignEndedDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignEndedDetails instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISmartCampaignEndedDetails): google.ads.googleads.v23.services.SmartCampaignEndedDetails;

                        /**
                         * Encodes the specified SmartCampaignEndedDetails message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignEndedDetails.verify|verify} messages.
                         * @param message SmartCampaignEndedDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISmartCampaignEndedDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignEndedDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignEndedDetails.verify|verify} messages.
                         * @param message SmartCampaignEndedDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISmartCampaignEndedDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignEndedDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignEndedDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignEndedDetails;

                        /**
                         * Decodes a SmartCampaignEndedDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignEndedDetails
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignEndedDetails;

                        /**
                         * Verifies a SmartCampaignEndedDetails message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignEndedDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignEndedDetails
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignEndedDetails;

                        /**
                         * Creates a plain object from a SmartCampaignEndedDetails message. Also converts values to other types if specified.
                         * @param message SmartCampaignEndedDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SmartCampaignEndedDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignEndedDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignEndedDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetSmartCampaignStatusResponse. */
                    interface IGetSmartCampaignStatusResponse {

                        /** GetSmartCampaignStatusResponse smart_campaign_status */
                        smart_campaign_status?: (google.ads.googleads.v23.enums.SmartCampaignStatusEnum.SmartCampaignStatus|keyof typeof google.ads.googleads.v23.enums.SmartCampaignStatusEnum.SmartCampaignStatus|null);

                        /** GetSmartCampaignStatusResponse not_eligible_details */
                        not_eligible_details?: (google.ads.googleads.v23.services.ISmartCampaignNotEligibleDetails|null);

                        /** GetSmartCampaignStatusResponse eligible_details */
                        eligible_details?: (google.ads.googleads.v23.services.ISmartCampaignEligibleDetails|null);

                        /** GetSmartCampaignStatusResponse paused_details */
                        paused_details?: (google.ads.googleads.v23.services.ISmartCampaignPausedDetails|null);

                        /** GetSmartCampaignStatusResponse removed_details */
                        removed_details?: (google.ads.googleads.v23.services.ISmartCampaignRemovedDetails|null);

                        /** GetSmartCampaignStatusResponse ended_details */
                        ended_details?: (google.ads.googleads.v23.services.ISmartCampaignEndedDetails|null);
                    }

                    /** Represents a GetSmartCampaignStatusResponse. */
                    class GetSmartCampaignStatusResponse implements IGetSmartCampaignStatusResponse {

                        /**
                         * Constructs a new GetSmartCampaignStatusResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGetSmartCampaignStatusResponse);

                        /** GetSmartCampaignStatusResponse smart_campaign_status. */
                        public smart_campaign_status: (google.ads.googleads.v23.enums.SmartCampaignStatusEnum.SmartCampaignStatus|keyof typeof google.ads.googleads.v23.enums.SmartCampaignStatusEnum.SmartCampaignStatus);

                        /** GetSmartCampaignStatusResponse not_eligible_details. */
                        public not_eligible_details?: (google.ads.googleads.v23.services.ISmartCampaignNotEligibleDetails|null);

                        /** GetSmartCampaignStatusResponse eligible_details. */
                        public eligible_details?: (google.ads.googleads.v23.services.ISmartCampaignEligibleDetails|null);

                        /** GetSmartCampaignStatusResponse paused_details. */
                        public paused_details?: (google.ads.googleads.v23.services.ISmartCampaignPausedDetails|null);

                        /** GetSmartCampaignStatusResponse removed_details. */
                        public removed_details?: (google.ads.googleads.v23.services.ISmartCampaignRemovedDetails|null);

                        /** GetSmartCampaignStatusResponse ended_details. */
                        public ended_details?: (google.ads.googleads.v23.services.ISmartCampaignEndedDetails|null);

                        /** GetSmartCampaignStatusResponse smart_campaign_status_details. */
                        public smart_campaign_status_details?: ("not_eligible_details"|"eligible_details"|"paused_details"|"removed_details"|"ended_details");

                        /**
                         * Creates a new GetSmartCampaignStatusResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetSmartCampaignStatusResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGetSmartCampaignStatusResponse): google.ads.googleads.v23.services.GetSmartCampaignStatusResponse;

                        /**
                         * Encodes the specified GetSmartCampaignStatusResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GetSmartCampaignStatusResponse.verify|verify} messages.
                         * @param message GetSmartCampaignStatusResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGetSmartCampaignStatusResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetSmartCampaignStatusResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GetSmartCampaignStatusResponse.verify|verify} messages.
                         * @param message GetSmartCampaignStatusResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGetSmartCampaignStatusResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetSmartCampaignStatusResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetSmartCampaignStatusResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GetSmartCampaignStatusResponse;

                        /**
                         * Decodes a GetSmartCampaignStatusResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetSmartCampaignStatusResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GetSmartCampaignStatusResponse;

                        /**
                         * Verifies a GetSmartCampaignStatusResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetSmartCampaignStatusResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetSmartCampaignStatusResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GetSmartCampaignStatusResponse;

                        /**
                         * Creates a plain object from a GetSmartCampaignStatusResponse message. Also converts values to other types if specified.
                         * @param message GetSmartCampaignStatusResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GetSmartCampaignStatusResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetSmartCampaignStatusResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetSmartCampaignStatusResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateSmartCampaignSettingsRequest. */
                    interface IMutateSmartCampaignSettingsRequest {

                        /** MutateSmartCampaignSettingsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateSmartCampaignSettingsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ISmartCampaignSettingOperation[]|null);

                        /** MutateSmartCampaignSettingsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateSmartCampaignSettingsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateSmartCampaignSettingsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateSmartCampaignSettingsRequest. */
                    class MutateSmartCampaignSettingsRequest implements IMutateSmartCampaignSettingsRequest {

                        /**
                         * Constructs a new MutateSmartCampaignSettingsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsRequest);

                        /** MutateSmartCampaignSettingsRequest customer_id. */
                        public customer_id: string;

                        /** MutateSmartCampaignSettingsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ISmartCampaignSettingOperation[];

                        /** MutateSmartCampaignSettingsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateSmartCampaignSettingsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateSmartCampaignSettingsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateSmartCampaignSettingsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSmartCampaignSettingsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsRequest): google.ads.googleads.v23.services.MutateSmartCampaignSettingsRequest;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSmartCampaignSettingsRequest.verify|verify} messages.
                         * @param message MutateSmartCampaignSettingsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSmartCampaignSettingsRequest.verify|verify} messages.
                         * @param message MutateSmartCampaignSettingsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSmartCampaignSettingsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSmartCampaignSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSmartCampaignSettingsRequest;

                        /**
                         * Decodes a MutateSmartCampaignSettingsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSmartCampaignSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSmartCampaignSettingsRequest;

                        /**
                         * Verifies a MutateSmartCampaignSettingsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSmartCampaignSettingsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSmartCampaignSettingsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSmartCampaignSettingsRequest;

                        /**
                         * Creates a plain object from a MutateSmartCampaignSettingsRequest message. Also converts values to other types if specified.
                         * @param message MutateSmartCampaignSettingsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSmartCampaignSettingsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSmartCampaignSettingsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSmartCampaignSettingsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignSettingOperation. */
                    interface ISmartCampaignSettingOperation {

                        /** SmartCampaignSettingOperation update */
                        update?: (google.ads.googleads.v23.resources.ISmartCampaignSetting|null);

                        /** SmartCampaignSettingOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents a SmartCampaignSettingOperation. */
                    class SmartCampaignSettingOperation implements ISmartCampaignSettingOperation {

                        /**
                         * Constructs a new SmartCampaignSettingOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISmartCampaignSettingOperation);

                        /** SmartCampaignSettingOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ISmartCampaignSetting|null);

                        /** SmartCampaignSettingOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new SmartCampaignSettingOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignSettingOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISmartCampaignSettingOperation): google.ads.googleads.v23.services.SmartCampaignSettingOperation;

                        /**
                         * Encodes the specified SmartCampaignSettingOperation message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSettingOperation.verify|verify} messages.
                         * @param message SmartCampaignSettingOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISmartCampaignSettingOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSettingOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSettingOperation.verify|verify} messages.
                         * @param message SmartCampaignSettingOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISmartCampaignSettingOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSettingOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignSettingOperation;

                        /**
                         * Decodes a SmartCampaignSettingOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignSettingOperation;

                        /**
                         * Verifies a SmartCampaignSettingOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSettingOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignSettingOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignSettingOperation;

                        /**
                         * Creates a plain object from a SmartCampaignSettingOperation message. Also converts values to other types if specified.
                         * @param message SmartCampaignSettingOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SmartCampaignSettingOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSettingOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignSettingOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateSmartCampaignSettingsResponse. */
                    interface IMutateSmartCampaignSettingsResponse {

                        /** MutateSmartCampaignSettingsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSmartCampaignSettingsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult[]|null);
                    }

                    /** Represents a MutateSmartCampaignSettingsResponse. */
                    class MutateSmartCampaignSettingsResponse implements IMutateSmartCampaignSettingsResponse {

                        /**
                         * Constructs a new MutateSmartCampaignSettingsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsResponse);

                        /** MutateSmartCampaignSettingsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSmartCampaignSettingsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult[];

                        /**
                         * Creates a new MutateSmartCampaignSettingsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSmartCampaignSettingsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsResponse): google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse.verify|verify} messages.
                         * @param message MutateSmartCampaignSettingsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse.verify|verify} messages.
                         * @param message MutateSmartCampaignSettingsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSmartCampaignSettingsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSmartCampaignSettingsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSmartCampaignSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse;

                        /**
                         * Decodes a MutateSmartCampaignSettingsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSmartCampaignSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse;

                        /**
                         * Verifies a MutateSmartCampaignSettingsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSmartCampaignSettingsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSmartCampaignSettingsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse;

                        /**
                         * Creates a plain object from a MutateSmartCampaignSettingsResponse message. Also converts values to other types if specified.
                         * @param message MutateSmartCampaignSettingsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSmartCampaignSettingsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSmartCampaignSettingsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSmartCampaignSettingsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateSmartCampaignSettingResult. */
                    interface IMutateSmartCampaignSettingResult {

                        /** MutateSmartCampaignSettingResult resource_name */
                        resource_name?: (string|null);

                        /** MutateSmartCampaignSettingResult smart_campaign_setting */
                        smart_campaign_setting?: (google.ads.googleads.v23.resources.ISmartCampaignSetting|null);
                    }

                    /** Represents a MutateSmartCampaignSettingResult. */
                    class MutateSmartCampaignSettingResult implements IMutateSmartCampaignSettingResult {

                        /**
                         * Constructs a new MutateSmartCampaignSettingResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult);

                        /** MutateSmartCampaignSettingResult resource_name. */
                        public resource_name: string;

                        /** MutateSmartCampaignSettingResult smart_campaign_setting. */
                        public smart_campaign_setting?: (google.ads.googleads.v23.resources.ISmartCampaignSetting|null);

                        /**
                         * Creates a new MutateSmartCampaignSettingResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateSmartCampaignSettingResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult): google.ads.googleads.v23.services.MutateSmartCampaignSettingResult;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateSmartCampaignSettingResult.verify|verify} messages.
                         * @param message MutateSmartCampaignSettingResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateSmartCampaignSettingResult.verify|verify} messages.
                         * @param message MutateSmartCampaignSettingResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateSmartCampaignSettingResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSmartCampaignSettingResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateSmartCampaignSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateSmartCampaignSettingResult;

                        /**
                         * Decodes a MutateSmartCampaignSettingResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateSmartCampaignSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateSmartCampaignSettingResult;

                        /**
                         * Verifies a MutateSmartCampaignSettingResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSmartCampaignSettingResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateSmartCampaignSettingResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateSmartCampaignSettingResult;

                        /**
                         * Creates a plain object from a MutateSmartCampaignSettingResult message. Also converts values to other types if specified.
                         * @param message MutateSmartCampaignSettingResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateSmartCampaignSettingResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSmartCampaignSettingResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateSmartCampaignSettingResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a UserListService */
                    class UserListService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new UserListService 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 UserListService 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): UserListService;

                        /**
                         * Calls MutateUserLists.
                         * @param request MutateUserListsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateUserListsResponse
                         */
                        public mutateUserLists(request: google.ads.googleads.v23.services.IMutateUserListsRequest, callback: google.ads.googleads.v23.services.UserListService.MutateUserListsCallback): void;

                        /**
                         * Calls MutateUserLists.
                         * @param request MutateUserListsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateUserLists(request: google.ads.googleads.v23.services.IMutateUserListsRequest): Promise<google.ads.googleads.v23.services.MutateUserListsResponse>;
                    }

                    namespace UserListService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.UserListService|mutateUserLists}.
                         * @param error Error, if any
                         * @param [response] MutateUserListsResponse
                         */
                        type MutateUserListsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateUserListsResponse) => void;
                    }

                    /** Properties of a MutateUserListsRequest. */
                    interface IMutateUserListsRequest {

                        /** MutateUserListsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateUserListsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IUserListOperation[]|null);

                        /** MutateUserListsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateUserListsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateUserListsRequest. */
                    class MutateUserListsRequest implements IMutateUserListsRequest {

                        /**
                         * Constructs a new MutateUserListsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateUserListsRequest);

                        /** MutateUserListsRequest customer_id. */
                        public customer_id: string;

                        /** MutateUserListsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IUserListOperation[];

                        /** MutateUserListsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateUserListsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateUserListsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateUserListsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateUserListsRequest): google.ads.googleads.v23.services.MutateUserListsRequest;

                        /**
                         * Encodes the specified MutateUserListsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListsRequest.verify|verify} messages.
                         * @param message MutateUserListsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateUserListsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListsRequest.verify|verify} messages.
                         * @param message MutateUserListsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateUserListsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateUserListsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateUserListsRequest;

                        /**
                         * Decodes a MutateUserListsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateUserListsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateUserListsRequest;

                        /**
                         * Verifies a MutateUserListsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateUserListsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateUserListsRequest;

                        /**
                         * Creates a plain object from a MutateUserListsRequest message. Also converts values to other types if specified.
                         * @param message MutateUserListsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateUserListsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateUserListsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListOperation. */
                    interface IUserListOperation {

                        /** UserListOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** UserListOperation create */
                        create?: (google.ads.googleads.v23.resources.IUserList|null);

                        /** UserListOperation update */
                        update?: (google.ads.googleads.v23.resources.IUserList|null);

                        /** UserListOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a UserListOperation. */
                    class UserListOperation implements IUserListOperation {

                        /**
                         * Constructs a new UserListOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUserListOperation);

                        /** UserListOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** UserListOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IUserList|null);

                        /** UserListOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IUserList|null);

                        /** UserListOperation remove. */
                        public remove?: (string|null);

                        /** UserListOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new UserListOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUserListOperation): google.ads.googleads.v23.services.UserListOperation;

                        /**
                         * Encodes the specified UserListOperation message. Does not implicitly {@link google.ads.googleads.v23.services.UserListOperation.verify|verify} messages.
                         * @param message UserListOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUserListOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UserListOperation.verify|verify} messages.
                         * @param message UserListOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUserListOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UserListOperation;

                        /**
                         * Decodes a UserListOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UserListOperation;

                        /**
                         * Verifies a UserListOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UserListOperation;

                        /**
                         * Creates a plain object from a UserListOperation message. Also converts values to other types if specified.
                         * @param message UserListOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UserListOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateUserListsResponse. */
                    interface IMutateUserListsResponse {

                        /** MutateUserListsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateUserListsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateUserListResult[]|null);
                    }

                    /** Represents a MutateUserListsResponse. */
                    class MutateUserListsResponse implements IMutateUserListsResponse {

                        /**
                         * Constructs a new MutateUserListsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateUserListsResponse);

                        /** MutateUserListsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateUserListsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateUserListResult[];

                        /**
                         * Creates a new MutateUserListsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateUserListsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateUserListsResponse): google.ads.googleads.v23.services.MutateUserListsResponse;

                        /**
                         * Encodes the specified MutateUserListsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListsResponse.verify|verify} messages.
                         * @param message MutateUserListsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateUserListsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListsResponse.verify|verify} messages.
                         * @param message MutateUserListsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateUserListsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateUserListsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateUserListsResponse;

                        /**
                         * Decodes a MutateUserListsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateUserListsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateUserListsResponse;

                        /**
                         * Verifies a MutateUserListsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateUserListsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateUserListsResponse;

                        /**
                         * Creates a plain object from a MutateUserListsResponse message. Also converts values to other types if specified.
                         * @param message MutateUserListsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateUserListsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateUserListsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateUserListResult. */
                    interface IMutateUserListResult {

                        /** MutateUserListResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateUserListResult. */
                    class MutateUserListResult implements IMutateUserListResult {

                        /**
                         * Constructs a new MutateUserListResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateUserListResult);

                        /** MutateUserListResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateUserListResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateUserListResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateUserListResult): google.ads.googleads.v23.services.MutateUserListResult;

                        /**
                         * Encodes the specified MutateUserListResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListResult.verify|verify} messages.
                         * @param message MutateUserListResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateUserListResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListResult.verify|verify} messages.
                         * @param message MutateUserListResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateUserListResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateUserListResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateUserListResult;

                        /**
                         * Decodes a MutateUserListResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateUserListResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateUserListResult;

                        /**
                         * Verifies a MutateUserListResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateUserListResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateUserListResult;

                        /**
                         * Creates a plain object from a MutateUserListResult message. Also converts values to other types if specified.
                         * @param message MutateUserListResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateUserListResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateUserListResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a BenchmarksService */
                    class BenchmarksService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BenchmarksService 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 BenchmarksService 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): BenchmarksService;

                        /**
                         * Calls ListBenchmarksAvailableDates.
                         * @param request ListBenchmarksAvailableDatesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBenchmarksAvailableDatesResponse
                         */
                        public listBenchmarksAvailableDates(request: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesRequest, callback: google.ads.googleads.v23.services.BenchmarksService.ListBenchmarksAvailableDatesCallback): void;

                        /**
                         * Calls ListBenchmarksAvailableDates.
                         * @param request ListBenchmarksAvailableDatesRequest message or plain object
                         * @returns Promise
                         */
                        public listBenchmarksAvailableDates(request: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesRequest): Promise<google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse>;

                        /**
                         * Calls ListBenchmarksLocations.
                         * @param request ListBenchmarksLocationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBenchmarksLocationsResponse
                         */
                        public listBenchmarksLocations(request: google.ads.googleads.v23.services.IListBenchmarksLocationsRequest, callback: google.ads.googleads.v23.services.BenchmarksService.ListBenchmarksLocationsCallback): void;

                        /**
                         * Calls ListBenchmarksLocations.
                         * @param request ListBenchmarksLocationsRequest message or plain object
                         * @returns Promise
                         */
                        public listBenchmarksLocations(request: google.ads.googleads.v23.services.IListBenchmarksLocationsRequest): Promise<google.ads.googleads.v23.services.ListBenchmarksLocationsResponse>;

                        /**
                         * Calls ListBenchmarksProducts.
                         * @param request ListBenchmarksProductsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBenchmarksProductsResponse
                         */
                        public listBenchmarksProducts(request: google.ads.googleads.v23.services.IListBenchmarksProductsRequest, callback: google.ads.googleads.v23.services.BenchmarksService.ListBenchmarksProductsCallback): void;

                        /**
                         * Calls ListBenchmarksProducts.
                         * @param request ListBenchmarksProductsRequest message or plain object
                         * @returns Promise
                         */
                        public listBenchmarksProducts(request: google.ads.googleads.v23.services.IListBenchmarksProductsRequest): Promise<google.ads.googleads.v23.services.ListBenchmarksProductsResponse>;

                        /**
                         * Calls ListBenchmarksSources.
                         * @param request ListBenchmarksSourcesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBenchmarksSourcesResponse
                         */
                        public listBenchmarksSources(request: google.ads.googleads.v23.services.IListBenchmarksSourcesRequest, callback: google.ads.googleads.v23.services.BenchmarksService.ListBenchmarksSourcesCallback): void;

                        /**
                         * Calls ListBenchmarksSources.
                         * @param request ListBenchmarksSourcesRequest message or plain object
                         * @returns Promise
                         */
                        public listBenchmarksSources(request: google.ads.googleads.v23.services.IListBenchmarksSourcesRequest): Promise<google.ads.googleads.v23.services.ListBenchmarksSourcesResponse>;

                        /**
                         * Calls GenerateBenchmarksMetrics.
                         * @param request GenerateBenchmarksMetricsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateBenchmarksMetricsResponse
                         */
                        public generateBenchmarksMetrics(request: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsRequest, callback: google.ads.googleads.v23.services.BenchmarksService.GenerateBenchmarksMetricsCallback): void;

                        /**
                         * Calls GenerateBenchmarksMetrics.
                         * @param request GenerateBenchmarksMetricsRequest message or plain object
                         * @returns Promise
                         */
                        public generateBenchmarksMetrics(request: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsRequest): Promise<google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse>;
                    }

                    namespace BenchmarksService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BenchmarksService|listBenchmarksAvailableDates}.
                         * @param error Error, if any
                         * @param [response] ListBenchmarksAvailableDatesResponse
                         */
                        type ListBenchmarksAvailableDatesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BenchmarksService|listBenchmarksLocations}.
                         * @param error Error, if any
                         * @param [response] ListBenchmarksLocationsResponse
                         */
                        type ListBenchmarksLocationsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListBenchmarksLocationsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BenchmarksService|listBenchmarksProducts}.
                         * @param error Error, if any
                         * @param [response] ListBenchmarksProductsResponse
                         */
                        type ListBenchmarksProductsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListBenchmarksProductsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BenchmarksService|listBenchmarksSources}.
                         * @param error Error, if any
                         * @param [response] ListBenchmarksSourcesResponse
                         */
                        type ListBenchmarksSourcesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListBenchmarksSourcesResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BenchmarksService|generateBenchmarksMetrics}.
                         * @param error Error, if any
                         * @param [response] GenerateBenchmarksMetricsResponse
                         */
                        type GenerateBenchmarksMetricsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse) => void;
                    }

                    /** Properties of a ListBenchmarksAvailableDatesRequest. */
                    interface IListBenchmarksAvailableDatesRequest {

                        /** ListBenchmarksAvailableDatesRequest application_info */
                        application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListBenchmarksAvailableDatesRequest. */
                    class ListBenchmarksAvailableDatesRequest implements IListBenchmarksAvailableDatesRequest {

                        /**
                         * Constructs a new ListBenchmarksAvailableDatesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesRequest);

                        /** ListBenchmarksAvailableDatesRequest application_info. */
                        public application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListBenchmarksAvailableDatesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksAvailableDatesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesRequest): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesRequest;

                        /**
                         * Encodes the specified ListBenchmarksAvailableDatesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksAvailableDatesRequest.verify|verify} messages.
                         * @param message ListBenchmarksAvailableDatesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksAvailableDatesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksAvailableDatesRequest.verify|verify} messages.
                         * @param message ListBenchmarksAvailableDatesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksAvailableDatesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksAvailableDatesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesRequest;

                        /**
                         * Decodes a ListBenchmarksAvailableDatesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksAvailableDatesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesRequest;

                        /**
                         * Verifies a ListBenchmarksAvailableDatesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksAvailableDatesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksAvailableDatesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesRequest;

                        /**
                         * Creates a plain object from a ListBenchmarksAvailableDatesRequest message. Also converts values to other types if specified.
                         * @param message ListBenchmarksAvailableDatesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksAvailableDatesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksAvailableDatesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksAvailableDatesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBenchmarksAvailableDatesResponse. */
                    interface IListBenchmarksAvailableDatesResponse {

                        /** ListBenchmarksAvailableDatesResponse supported_dates */
                        supported_dates?: (google.ads.googleads.v23.common.IDateRange|null);
                    }

                    /** Represents a ListBenchmarksAvailableDatesResponse. */
                    class ListBenchmarksAvailableDatesResponse implements IListBenchmarksAvailableDatesResponse {

                        /**
                         * Constructs a new ListBenchmarksAvailableDatesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesResponse);

                        /** ListBenchmarksAvailableDatesResponse supported_dates. */
                        public supported_dates?: (google.ads.googleads.v23.common.IDateRange|null);

                        /**
                         * Creates a new ListBenchmarksAvailableDatesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksAvailableDatesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesResponse): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse;

                        /**
                         * Encodes the specified ListBenchmarksAvailableDatesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse.verify|verify} messages.
                         * @param message ListBenchmarksAvailableDatesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksAvailableDatesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse.verify|verify} messages.
                         * @param message ListBenchmarksAvailableDatesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksAvailableDatesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksAvailableDatesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksAvailableDatesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse;

                        /**
                         * Decodes a ListBenchmarksAvailableDatesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksAvailableDatesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse;

                        /**
                         * Verifies a ListBenchmarksAvailableDatesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksAvailableDatesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksAvailableDatesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse;

                        /**
                         * Creates a plain object from a ListBenchmarksAvailableDatesResponse message. Also converts values to other types if specified.
                         * @param message ListBenchmarksAvailableDatesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksAvailableDatesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksAvailableDatesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksAvailableDatesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBenchmarksLocationsRequest. */
                    interface IListBenchmarksLocationsRequest {

                        /** ListBenchmarksLocationsRequest application_info */
                        application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListBenchmarksLocationsRequest. */
                    class ListBenchmarksLocationsRequest implements IListBenchmarksLocationsRequest {

                        /**
                         * Constructs a new ListBenchmarksLocationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksLocationsRequest);

                        /** ListBenchmarksLocationsRequest application_info. */
                        public application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListBenchmarksLocationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksLocationsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksLocationsRequest): google.ads.googleads.v23.services.ListBenchmarksLocationsRequest;

                        /**
                         * Encodes the specified ListBenchmarksLocationsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksLocationsRequest.verify|verify} messages.
                         * @param message ListBenchmarksLocationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksLocationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksLocationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksLocationsRequest.verify|verify} messages.
                         * @param message ListBenchmarksLocationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksLocationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksLocationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksLocationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksLocationsRequest;

                        /**
                         * Decodes a ListBenchmarksLocationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksLocationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksLocationsRequest;

                        /**
                         * Verifies a ListBenchmarksLocationsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksLocationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksLocationsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksLocationsRequest;

                        /**
                         * Creates a plain object from a ListBenchmarksLocationsRequest message. Also converts values to other types if specified.
                         * @param message ListBenchmarksLocationsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksLocationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksLocationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksLocationsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBenchmarksLocationsResponse. */
                    interface IListBenchmarksLocationsResponse {

                        /** ListBenchmarksLocationsResponse benchmarks_locations */
                        benchmarks_locations?: (google.ads.googleads.v23.services.IBenchmarksLocation[]|null);
                    }

                    /** Represents a ListBenchmarksLocationsResponse. */
                    class ListBenchmarksLocationsResponse implements IListBenchmarksLocationsResponse {

                        /**
                         * Constructs a new ListBenchmarksLocationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksLocationsResponse);

                        /** ListBenchmarksLocationsResponse benchmarks_locations. */
                        public benchmarks_locations: google.ads.googleads.v23.services.IBenchmarksLocation[];

                        /**
                         * Creates a new ListBenchmarksLocationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksLocationsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksLocationsResponse): google.ads.googleads.v23.services.ListBenchmarksLocationsResponse;

                        /**
                         * Encodes the specified ListBenchmarksLocationsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksLocationsResponse.verify|verify} messages.
                         * @param message ListBenchmarksLocationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksLocationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksLocationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksLocationsResponse.verify|verify} messages.
                         * @param message ListBenchmarksLocationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksLocationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksLocationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksLocationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksLocationsResponse;

                        /**
                         * Decodes a ListBenchmarksLocationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksLocationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksLocationsResponse;

                        /**
                         * Verifies a ListBenchmarksLocationsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksLocationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksLocationsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksLocationsResponse;

                        /**
                         * Creates a plain object from a ListBenchmarksLocationsResponse message. Also converts values to other types if specified.
                         * @param message ListBenchmarksLocationsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksLocationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksLocationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksLocationsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BenchmarksLocation. */
                    interface IBenchmarksLocation {

                        /** BenchmarksLocation location_name */
                        location_name?: (string|null);

                        /** BenchmarksLocation location_type */
                        location_type?: (string|null);

                        /** BenchmarksLocation location_info */
                        location_info?: (google.ads.googleads.v23.common.ILocationInfo|null);
                    }

                    /** Represents a BenchmarksLocation. */
                    class BenchmarksLocation implements IBenchmarksLocation {

                        /**
                         * Constructs a new BenchmarksLocation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBenchmarksLocation);

                        /** BenchmarksLocation location_name. */
                        public location_name: string;

                        /** BenchmarksLocation location_type. */
                        public location_type: string;

                        /** BenchmarksLocation location_info. */
                        public location_info?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /**
                         * Creates a new BenchmarksLocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BenchmarksLocation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBenchmarksLocation): google.ads.googleads.v23.services.BenchmarksLocation;

                        /**
                         * Encodes the specified BenchmarksLocation message. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksLocation.verify|verify} messages.
                         * @param message BenchmarksLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBenchmarksLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BenchmarksLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksLocation.verify|verify} messages.
                         * @param message BenchmarksLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBenchmarksLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BenchmarksLocation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BenchmarksLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BenchmarksLocation;

                        /**
                         * Decodes a BenchmarksLocation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BenchmarksLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BenchmarksLocation;

                        /**
                         * Verifies a BenchmarksLocation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BenchmarksLocation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BenchmarksLocation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BenchmarksLocation;

                        /**
                         * Creates a plain object from a BenchmarksLocation message. Also converts values to other types if specified.
                         * @param message BenchmarksLocation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BenchmarksLocation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BenchmarksLocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BenchmarksLocation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBenchmarksProductsRequest. */
                    interface IListBenchmarksProductsRequest {

                        /** ListBenchmarksProductsRequest application_info */
                        application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListBenchmarksProductsRequest. */
                    class ListBenchmarksProductsRequest implements IListBenchmarksProductsRequest {

                        /**
                         * Constructs a new ListBenchmarksProductsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksProductsRequest);

                        /** ListBenchmarksProductsRequest application_info. */
                        public application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListBenchmarksProductsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksProductsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksProductsRequest): google.ads.googleads.v23.services.ListBenchmarksProductsRequest;

                        /**
                         * Encodes the specified ListBenchmarksProductsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksProductsRequest.verify|verify} messages.
                         * @param message ListBenchmarksProductsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksProductsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksProductsRequest.verify|verify} messages.
                         * @param message ListBenchmarksProductsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksProductsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksProductsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksProductsRequest;

                        /**
                         * Decodes a ListBenchmarksProductsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksProductsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksProductsRequest;

                        /**
                         * Verifies a ListBenchmarksProductsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksProductsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksProductsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksProductsRequest;

                        /**
                         * Creates a plain object from a ListBenchmarksProductsRequest message. Also converts values to other types if specified.
                         * @param message ListBenchmarksProductsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksProductsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksProductsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBenchmarksProductsResponse. */
                    interface IListBenchmarksProductsResponse {

                        /** ListBenchmarksProductsResponse benchmarks_products */
                        benchmarks_products?: (google.ads.googleads.v23.services.IBenchmarksProductMetadata[]|null);
                    }

                    /** Represents a ListBenchmarksProductsResponse. */
                    class ListBenchmarksProductsResponse implements IListBenchmarksProductsResponse {

                        /**
                         * Constructs a new ListBenchmarksProductsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksProductsResponse);

                        /** ListBenchmarksProductsResponse benchmarks_products. */
                        public benchmarks_products: google.ads.googleads.v23.services.IBenchmarksProductMetadata[];

                        /**
                         * Creates a new ListBenchmarksProductsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksProductsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksProductsResponse): google.ads.googleads.v23.services.ListBenchmarksProductsResponse;

                        /**
                         * Encodes the specified ListBenchmarksProductsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksProductsResponse.verify|verify} messages.
                         * @param message ListBenchmarksProductsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksProductsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksProductsResponse.verify|verify} messages.
                         * @param message ListBenchmarksProductsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksProductsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksProductsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksProductsResponse;

                        /**
                         * Decodes a ListBenchmarksProductsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksProductsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksProductsResponse;

                        /**
                         * Verifies a ListBenchmarksProductsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksProductsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksProductsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksProductsResponse;

                        /**
                         * Creates a plain object from a ListBenchmarksProductsResponse message. Also converts values to other types if specified.
                         * @param message ListBenchmarksProductsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksProductsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksProductsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BenchmarksProductMetadata. */
                    interface IBenchmarksProductMetadata {

                        /** BenchmarksProductMetadata product_name */
                        product_name?: (string|null);

                        /** BenchmarksProductMetadata product_code */
                        product_code?: (string|null);

                        /** BenchmarksProductMetadata marketing_objective */
                        marketing_objective?: (google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.BenchmarksMarketingObjective|keyof typeof google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.BenchmarksMarketingObjective|null);
                    }

                    /** Represents a BenchmarksProductMetadata. */
                    class BenchmarksProductMetadata implements IBenchmarksProductMetadata {

                        /**
                         * Constructs a new BenchmarksProductMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBenchmarksProductMetadata);

                        /** BenchmarksProductMetadata product_name. */
                        public product_name: string;

                        /** BenchmarksProductMetadata product_code. */
                        public product_code: string;

                        /** BenchmarksProductMetadata marketing_objective. */
                        public marketing_objective: (google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.BenchmarksMarketingObjective|keyof typeof google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.BenchmarksMarketingObjective);

                        /**
                         * Creates a new BenchmarksProductMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BenchmarksProductMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBenchmarksProductMetadata): google.ads.googleads.v23.services.BenchmarksProductMetadata;

                        /**
                         * Encodes the specified BenchmarksProductMetadata message. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksProductMetadata.verify|verify} messages.
                         * @param message BenchmarksProductMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBenchmarksProductMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BenchmarksProductMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksProductMetadata.verify|verify} messages.
                         * @param message BenchmarksProductMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBenchmarksProductMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BenchmarksProductMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BenchmarksProductMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BenchmarksProductMetadata;

                        /**
                         * Decodes a BenchmarksProductMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BenchmarksProductMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BenchmarksProductMetadata;

                        /**
                         * Verifies a BenchmarksProductMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BenchmarksProductMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BenchmarksProductMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BenchmarksProductMetadata;

                        /**
                         * Creates a plain object from a BenchmarksProductMetadata message. Also converts values to other types if specified.
                         * @param message BenchmarksProductMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BenchmarksProductMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BenchmarksProductMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BenchmarksProductMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBenchmarksSourcesRequest. */
                    interface IListBenchmarksSourcesRequest {

                        /** ListBenchmarksSourcesRequest benchmarks_sources */
                        benchmarks_sources?: (google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.BenchmarksSourceType[]|null);

                        /** ListBenchmarksSourcesRequest application_info */
                        application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListBenchmarksSourcesRequest. */
                    class ListBenchmarksSourcesRequest implements IListBenchmarksSourcesRequest {

                        /**
                         * Constructs a new ListBenchmarksSourcesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksSourcesRequest);

                        /** ListBenchmarksSourcesRequest benchmarks_sources. */
                        public benchmarks_sources: google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.BenchmarksSourceType[];

                        /** ListBenchmarksSourcesRequest application_info. */
                        public application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListBenchmarksSourcesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksSourcesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksSourcesRequest): google.ads.googleads.v23.services.ListBenchmarksSourcesRequest;

                        /**
                         * Encodes the specified ListBenchmarksSourcesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksSourcesRequest.verify|verify} messages.
                         * @param message ListBenchmarksSourcesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksSourcesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksSourcesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksSourcesRequest.verify|verify} messages.
                         * @param message ListBenchmarksSourcesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksSourcesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksSourcesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksSourcesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksSourcesRequest;

                        /**
                         * Decodes a ListBenchmarksSourcesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksSourcesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksSourcesRequest;

                        /**
                         * Verifies a ListBenchmarksSourcesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksSourcesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksSourcesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksSourcesRequest;

                        /**
                         * Creates a plain object from a ListBenchmarksSourcesRequest message. Also converts values to other types if specified.
                         * @param message ListBenchmarksSourcesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksSourcesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksSourcesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksSourcesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListBenchmarksSourcesResponse. */
                    interface IListBenchmarksSourcesResponse {

                        /** ListBenchmarksSourcesResponse benchmarks_sources */
                        benchmarks_sources?: (google.ads.googleads.v23.services.IBenchmarksSourceMetadata[]|null);
                    }

                    /** Represents a ListBenchmarksSourcesResponse. */
                    class ListBenchmarksSourcesResponse implements IListBenchmarksSourcesResponse {

                        /**
                         * Constructs a new ListBenchmarksSourcesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListBenchmarksSourcesResponse);

                        /** ListBenchmarksSourcesResponse benchmarks_sources. */
                        public benchmarks_sources: google.ads.googleads.v23.services.IBenchmarksSourceMetadata[];

                        /**
                         * Creates a new ListBenchmarksSourcesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBenchmarksSourcesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListBenchmarksSourcesResponse): google.ads.googleads.v23.services.ListBenchmarksSourcesResponse;

                        /**
                         * Encodes the specified ListBenchmarksSourcesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksSourcesResponse.verify|verify} messages.
                         * @param message ListBenchmarksSourcesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListBenchmarksSourcesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBenchmarksSourcesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListBenchmarksSourcesResponse.verify|verify} messages.
                         * @param message ListBenchmarksSourcesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListBenchmarksSourcesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBenchmarksSourcesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBenchmarksSourcesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListBenchmarksSourcesResponse;

                        /**
                         * Decodes a ListBenchmarksSourcesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBenchmarksSourcesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListBenchmarksSourcesResponse;

                        /**
                         * Verifies a ListBenchmarksSourcesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBenchmarksSourcesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListBenchmarksSourcesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListBenchmarksSourcesResponse;

                        /**
                         * Creates a plain object from a ListBenchmarksSourcesResponse message. Also converts values to other types if specified.
                         * @param message ListBenchmarksSourcesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListBenchmarksSourcesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBenchmarksSourcesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListBenchmarksSourcesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BenchmarksSourceMetadata. */
                    interface IBenchmarksSourceMetadata {

                        /** BenchmarksSourceMetadata benchmarks_source_type */
                        benchmarks_source_type?: (google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.BenchmarksSourceType|keyof typeof google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.BenchmarksSourceType|null);

                        /** BenchmarksSourceMetadata industry_vertical_info */
                        industry_vertical_info?: (google.ads.googleads.v23.services.IIndustryVerticalInfo|null);
                    }

                    /** Represents a BenchmarksSourceMetadata. */
                    class BenchmarksSourceMetadata implements IBenchmarksSourceMetadata {

                        /**
                         * Constructs a new BenchmarksSourceMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBenchmarksSourceMetadata);

                        /** BenchmarksSourceMetadata benchmarks_source_type. */
                        public benchmarks_source_type: (google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.BenchmarksSourceType|keyof typeof google.ads.googleads.v23.enums.BenchmarksSourceTypeEnum.BenchmarksSourceType);

                        /** BenchmarksSourceMetadata industry_vertical_info. */
                        public industry_vertical_info?: (google.ads.googleads.v23.services.IIndustryVerticalInfo|null);

                        /** BenchmarksSourceMetadata benchmarks_source_info. */
                        public benchmarks_source_info?: "industry_vertical_info";

                        /**
                         * Creates a new BenchmarksSourceMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BenchmarksSourceMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBenchmarksSourceMetadata): google.ads.googleads.v23.services.BenchmarksSourceMetadata;

                        /**
                         * Encodes the specified BenchmarksSourceMetadata message. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksSourceMetadata.verify|verify} messages.
                         * @param message BenchmarksSourceMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBenchmarksSourceMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BenchmarksSourceMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksSourceMetadata.verify|verify} messages.
                         * @param message BenchmarksSourceMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBenchmarksSourceMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BenchmarksSourceMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BenchmarksSourceMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BenchmarksSourceMetadata;

                        /**
                         * Decodes a BenchmarksSourceMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BenchmarksSourceMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BenchmarksSourceMetadata;

                        /**
                         * Verifies a BenchmarksSourceMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BenchmarksSourceMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BenchmarksSourceMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BenchmarksSourceMetadata;

                        /**
                         * Creates a plain object from a BenchmarksSourceMetadata message. Also converts values to other types if specified.
                         * @param message BenchmarksSourceMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BenchmarksSourceMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BenchmarksSourceMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BenchmarksSourceMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IndustryVerticalInfo. */
                    interface IIndustryVerticalInfo {

                        /** IndustryVerticalInfo industry_vertical_name */
                        industry_vertical_name?: (string|null);

                        /** IndustryVerticalInfo industry_vertical_id */
                        industry_vertical_id?: (number|null);

                        /** IndustryVerticalInfo parent_industry_vertical_id */
                        parent_industry_vertical_id?: (number|null);
                    }

                    /** Represents an IndustryVerticalInfo. */
                    class IndustryVerticalInfo implements IIndustryVerticalInfo {

                        /**
                         * Constructs a new IndustryVerticalInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IIndustryVerticalInfo);

                        /** IndustryVerticalInfo industry_vertical_name. */
                        public industry_vertical_name: string;

                        /** IndustryVerticalInfo industry_vertical_id. */
                        public industry_vertical_id: number;

                        /** IndustryVerticalInfo parent_industry_vertical_id. */
                        public parent_industry_vertical_id: number;

                        /**
                         * Creates a new IndustryVerticalInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IndustryVerticalInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IIndustryVerticalInfo): google.ads.googleads.v23.services.IndustryVerticalInfo;

                        /**
                         * Encodes the specified IndustryVerticalInfo message. Does not implicitly {@link google.ads.googleads.v23.services.IndustryVerticalInfo.verify|verify} messages.
                         * @param message IndustryVerticalInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IIndustryVerticalInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IndustryVerticalInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.IndustryVerticalInfo.verify|verify} messages.
                         * @param message IndustryVerticalInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IIndustryVerticalInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IndustryVerticalInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IndustryVerticalInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.IndustryVerticalInfo;

                        /**
                         * Decodes an IndustryVerticalInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IndustryVerticalInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.IndustryVerticalInfo;

                        /**
                         * Verifies an IndustryVerticalInfo message.
                         * @param message Plain 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 IndustryVerticalInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IndustryVerticalInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.IndustryVerticalInfo;

                        /**
                         * Creates a plain object from an IndustryVerticalInfo message. Also converts values to other types if specified.
                         * @param message IndustryVerticalInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.IndustryVerticalInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IndustryVerticalInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IndustryVerticalInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateBenchmarksMetricsRequest. */
                    interface IGenerateBenchmarksMetricsRequest {

                        /** GenerateBenchmarksMetricsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateBenchmarksMetricsRequest date_range */
                        date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                        /** GenerateBenchmarksMetricsRequest location */
                        location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** GenerateBenchmarksMetricsRequest benchmarks_source */
                        benchmarks_source?: (google.ads.googleads.v23.services.IBenchmarksSource|null);

                        /** GenerateBenchmarksMetricsRequest product_filter */
                        product_filter?: (google.ads.googleads.v23.services.IProductFilter|null);

                        /** GenerateBenchmarksMetricsRequest currency_code */
                        currency_code?: (string|null);

                        /** GenerateBenchmarksMetricsRequest customer_benchmarks_group */
                        customer_benchmarks_group?: (string|null);

                        /** GenerateBenchmarksMetricsRequest application_info */
                        application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateBenchmarksMetricsRequest. */
                    class GenerateBenchmarksMetricsRequest implements IGenerateBenchmarksMetricsRequest {

                        /**
                         * Constructs a new GenerateBenchmarksMetricsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsRequest);

                        /** GenerateBenchmarksMetricsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateBenchmarksMetricsRequest date_range. */
                        public date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                        /** GenerateBenchmarksMetricsRequest location. */
                        public location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** GenerateBenchmarksMetricsRequest benchmarks_source. */
                        public benchmarks_source?: (google.ads.googleads.v23.services.IBenchmarksSource|null);

                        /** GenerateBenchmarksMetricsRequest product_filter. */
                        public product_filter?: (google.ads.googleads.v23.services.IProductFilter|null);

                        /** GenerateBenchmarksMetricsRequest currency_code. */
                        public currency_code: string;

                        /** GenerateBenchmarksMetricsRequest customer_benchmarks_group. */
                        public customer_benchmarks_group: string;

                        /** GenerateBenchmarksMetricsRequest application_info. */
                        public application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateBenchmarksMetricsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateBenchmarksMetricsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsRequest): google.ads.googleads.v23.services.GenerateBenchmarksMetricsRequest;

                        /**
                         * Encodes the specified GenerateBenchmarksMetricsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateBenchmarksMetricsRequest.verify|verify} messages.
                         * @param message GenerateBenchmarksMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateBenchmarksMetricsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateBenchmarksMetricsRequest.verify|verify} messages.
                         * @param message GenerateBenchmarksMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateBenchmarksMetricsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateBenchmarksMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateBenchmarksMetricsRequest;

                        /**
                         * Decodes a GenerateBenchmarksMetricsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateBenchmarksMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateBenchmarksMetricsRequest;

                        /**
                         * Verifies a GenerateBenchmarksMetricsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateBenchmarksMetricsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateBenchmarksMetricsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateBenchmarksMetricsRequest;

                        /**
                         * Creates a plain object from a GenerateBenchmarksMetricsRequest message. Also converts values to other types if specified.
                         * @param message GenerateBenchmarksMetricsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateBenchmarksMetricsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateBenchmarksMetricsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateBenchmarksMetricsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BenchmarksSource. */
                    interface IBenchmarksSource {

                        /** BenchmarksSource industry_vertical_id */
                        industry_vertical_id?: (number|null);
                    }

                    /** Represents a BenchmarksSource. */
                    class BenchmarksSource implements IBenchmarksSource {

                        /**
                         * Constructs a new BenchmarksSource.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBenchmarksSource);

                        /** BenchmarksSource industry_vertical_id. */
                        public industry_vertical_id?: (number|null);

                        /** BenchmarksSource benchmarks_source_id. */
                        public benchmarks_source_id?: "industry_vertical_id";

                        /**
                         * Creates a new BenchmarksSource instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BenchmarksSource instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBenchmarksSource): google.ads.googleads.v23.services.BenchmarksSource;

                        /**
                         * Encodes the specified BenchmarksSource message. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksSource.verify|verify} messages.
                         * @param message BenchmarksSource message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBenchmarksSource, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BenchmarksSource message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BenchmarksSource.verify|verify} messages.
                         * @param message BenchmarksSource message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBenchmarksSource, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BenchmarksSource message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BenchmarksSource
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BenchmarksSource;

                        /**
                         * Decodes a BenchmarksSource message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BenchmarksSource
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BenchmarksSource;

                        /**
                         * Verifies a BenchmarksSource message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BenchmarksSource message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BenchmarksSource
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BenchmarksSource;

                        /**
                         * Creates a plain object from a BenchmarksSource message. Also converts values to other types if specified.
                         * @param message BenchmarksSource
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BenchmarksSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BenchmarksSource to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BenchmarksSource
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductFilter. */
                    interface IProductFilter {

                        /** ProductFilter product_list */
                        product_list?: (google.ads.googleads.v23.services.ProductFilter.IProductList|null);

                        /** ProductFilter marketing_objective_list */
                        marketing_objective_list?: (google.ads.googleads.v23.services.ProductFilter.IMarketingObjectiveList|null);
                    }

                    /** Represents a ProductFilter. */
                    class ProductFilter implements IProductFilter {

                        /**
                         * Constructs a new ProductFilter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IProductFilter);

                        /** ProductFilter product_list. */
                        public product_list?: (google.ads.googleads.v23.services.ProductFilter.IProductList|null);

                        /** ProductFilter marketing_objective_list. */
                        public marketing_objective_list?: (google.ads.googleads.v23.services.ProductFilter.IMarketingObjectiveList|null);

                        /** ProductFilter filter_settings. */
                        public filter_settings?: ("product_list"|"marketing_objective_list");

                        /**
                         * Creates a new ProductFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IProductFilter): google.ads.googleads.v23.services.ProductFilter;

                        /**
                         * Encodes the specified ProductFilter message. Does not implicitly {@link google.ads.googleads.v23.services.ProductFilter.verify|verify} messages.
                         * @param message ProductFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IProductFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ProductFilter.verify|verify} messages.
                         * @param message ProductFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IProductFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductFilter message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ProductFilter;

                        /**
                         * Decodes a ProductFilter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ProductFilter;

                        /**
                         * Verifies a ProductFilter message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductFilter message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductFilter
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ProductFilter;

                        /**
                         * Creates a plain object from a ProductFilter message. Also converts values to other types if specified.
                         * @param message ProductFilter
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ProductFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductFilter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductFilter
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductFilter {

                        /** Properties of a ProductList. */
                        interface IProductList {

                            /** ProductList product_codes */
                            product_codes?: (string[]|null);
                        }

                        /** Represents a ProductList. */
                        class ProductList implements IProductList {

                            /**
                             * Constructs a new ProductList.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ProductFilter.IProductList);

                            /** ProductList product_codes. */
                            public product_codes: string[];

                            /**
                             * Creates a new ProductList instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ProductList instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ProductFilter.IProductList): google.ads.googleads.v23.services.ProductFilter.ProductList;

                            /**
                             * Encodes the specified ProductList message. Does not implicitly {@link google.ads.googleads.v23.services.ProductFilter.ProductList.verify|verify} messages.
                             * @param message ProductList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ProductFilter.IProductList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ProductList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ProductFilter.ProductList.verify|verify} messages.
                             * @param message ProductList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ProductFilter.IProductList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ProductList message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ProductList
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ProductFilter.ProductList;

                            /**
                             * Decodes a ProductList message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ProductList
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ProductFilter.ProductList;

                            /**
                             * Verifies a ProductList message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ProductList message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ProductList
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ProductFilter.ProductList;

                            /**
                             * Creates a plain object from a ProductList message. Also converts values to other types if specified.
                             * @param message ProductList
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ProductFilter.ProductList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ProductList to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ProductList
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MarketingObjectiveList. */
                        interface IMarketingObjectiveList {

                            /** MarketingObjectiveList marketing_objectives */
                            marketing_objectives?: (google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.BenchmarksMarketingObjective[]|null);
                        }

                        /** Represents a MarketingObjectiveList. */
                        class MarketingObjectiveList implements IMarketingObjectiveList {

                            /**
                             * Constructs a new MarketingObjectiveList.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ProductFilter.IMarketingObjectiveList);

                            /** MarketingObjectiveList marketing_objectives. */
                            public marketing_objectives: google.ads.googleads.v23.enums.BenchmarksMarketingObjectiveEnum.BenchmarksMarketingObjective[];

                            /**
                             * Creates a new MarketingObjectiveList instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MarketingObjectiveList instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ProductFilter.IMarketingObjectiveList): google.ads.googleads.v23.services.ProductFilter.MarketingObjectiveList;

                            /**
                             * Encodes the specified MarketingObjectiveList message. Does not implicitly {@link google.ads.googleads.v23.services.ProductFilter.MarketingObjectiveList.verify|verify} messages.
                             * @param message MarketingObjectiveList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ProductFilter.IMarketingObjectiveList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MarketingObjectiveList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ProductFilter.MarketingObjectiveList.verify|verify} messages.
                             * @param message MarketingObjectiveList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ProductFilter.IMarketingObjectiveList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MarketingObjectiveList message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MarketingObjectiveList
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ProductFilter.MarketingObjectiveList;

                            /**
                             * Decodes a MarketingObjectiveList message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MarketingObjectiveList
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ProductFilter.MarketingObjectiveList;

                            /**
                             * Verifies a MarketingObjectiveList message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MarketingObjectiveList message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MarketingObjectiveList
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ProductFilter.MarketingObjectiveList;

                            /**
                             * Creates a plain object from a MarketingObjectiveList message. Also converts values to other types if specified.
                             * @param message MarketingObjectiveList
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ProductFilter.MarketingObjectiveList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MarketingObjectiveList to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MarketingObjectiveList
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a GenerateBenchmarksMetricsResponse. */
                    interface IGenerateBenchmarksMetricsResponse {

                        /** GenerateBenchmarksMetricsResponse customer_metrics */
                        customer_metrics?: (google.ads.googleads.v23.services.IMetrics|null);

                        /** GenerateBenchmarksMetricsResponse average_benchmarks_metrics */
                        average_benchmarks_metrics?: (google.ads.googleads.v23.services.IMetrics|null);
                    }

                    /** Represents a GenerateBenchmarksMetricsResponse. */
                    class GenerateBenchmarksMetricsResponse implements IGenerateBenchmarksMetricsResponse {

                        /**
                         * Constructs a new GenerateBenchmarksMetricsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsResponse);

                        /** GenerateBenchmarksMetricsResponse customer_metrics. */
                        public customer_metrics?: (google.ads.googleads.v23.services.IMetrics|null);

                        /** GenerateBenchmarksMetricsResponse average_benchmarks_metrics. */
                        public average_benchmarks_metrics?: (google.ads.googleads.v23.services.IMetrics|null);

                        /**
                         * Creates a new GenerateBenchmarksMetricsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateBenchmarksMetricsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsResponse): google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse;

                        /**
                         * Encodes the specified GenerateBenchmarksMetricsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse.verify|verify} messages.
                         * @param message GenerateBenchmarksMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateBenchmarksMetricsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse.verify|verify} messages.
                         * @param message GenerateBenchmarksMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateBenchmarksMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateBenchmarksMetricsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateBenchmarksMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse;

                        /**
                         * Decodes a GenerateBenchmarksMetricsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateBenchmarksMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse;

                        /**
                         * Verifies a GenerateBenchmarksMetricsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateBenchmarksMetricsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateBenchmarksMetricsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse;

                        /**
                         * Creates a plain object from a GenerateBenchmarksMetricsResponse message. Also converts values to other types if specified.
                         * @param message GenerateBenchmarksMetricsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateBenchmarksMetricsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateBenchmarksMetricsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateBenchmarksMetricsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Metrics. */
                    interface IMetrics {

                        /** Metrics average_rate_metrics */
                        average_rate_metrics?: (google.ads.googleads.v23.services.IRateMetrics|null);
                    }

                    /** Represents a Metrics. */
                    class Metrics implements IMetrics {

                        /**
                         * Constructs a new Metrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMetrics);

                        /** Metrics average_rate_metrics. */
                        public average_rate_metrics?: (google.ads.googleads.v23.services.IRateMetrics|null);

                        /**
                         * Creates a new Metrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Metrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMetrics): google.ads.googleads.v23.services.Metrics;

                        /**
                         * Encodes the specified Metrics message. Does not implicitly {@link google.ads.googleads.v23.services.Metrics.verify|verify} messages.
                         * @param message Metrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Metrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.Metrics.verify|verify} messages.
                         * @param message Metrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Metrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Metrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.Metrics;

                        /**
                         * Decodes a Metrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Metrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.Metrics;

                        /**
                         * Verifies a Metrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Metrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.Metrics;

                        /**
                         * Creates a plain object from a Metrics message. Also converts values to other types if specified.
                         * @param message Metrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.Metrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Metrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Metrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RateMetrics. */
                    interface IRateMetrics {

                        /** RateMetrics average_cpm */
                        average_cpm?: (number|null);

                        /** RateMetrics average_active_view_cpm */
                        average_active_view_cpm?: (number|null);

                        /** RateMetrics trueview_average_cpv */
                        trueview_average_cpv?: (number|null);

                        /** RateMetrics average_cpc */
                        average_cpc?: (number|null);

                        /** RateMetrics average_cpi */
                        average_cpi?: (number|null);

                        /** RateMetrics average_cpe */
                        average_cpe?: (number|null);

                        /** RateMetrics interaction_rate */
                        interaction_rate?: (number|null);

                        /** RateMetrics engagement_rate */
                        engagement_rate?: (number|null);

                        /** RateMetrics active_view_viewability */
                        active_view_viewability?: (number|null);

                        /** RateMetrics trueview_view_rate */
                        trueview_view_rate?: (number|null);

                        /** RateMetrics click_through_rate */
                        click_through_rate?: (number|null);

                        /** RateMetrics video_completion_p25_rate */
                        video_completion_p25_rate?: (number|null);

                        /** RateMetrics video_completion_p50_rate */
                        video_completion_p50_rate?: (number|null);

                        /** RateMetrics video_completion_p75_rate */
                        video_completion_p75_rate?: (number|null);

                        /** RateMetrics video_completion_p100_rate */
                        video_completion_p100_rate?: (number|null);
                    }

                    /** Represents a RateMetrics. */
                    class RateMetrics implements IRateMetrics {

                        /**
                         * Constructs a new RateMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRateMetrics);

                        /** RateMetrics average_cpm. */
                        public average_cpm: number;

                        /** RateMetrics average_active_view_cpm. */
                        public average_active_view_cpm: number;

                        /** RateMetrics trueview_average_cpv. */
                        public trueview_average_cpv: number;

                        /** RateMetrics average_cpc. */
                        public average_cpc: number;

                        /** RateMetrics average_cpi. */
                        public average_cpi: number;

                        /** RateMetrics average_cpe. */
                        public average_cpe: number;

                        /** RateMetrics interaction_rate. */
                        public interaction_rate: number;

                        /** RateMetrics engagement_rate. */
                        public engagement_rate: number;

                        /** RateMetrics active_view_viewability. */
                        public active_view_viewability: number;

                        /** RateMetrics trueview_view_rate. */
                        public trueview_view_rate: number;

                        /** RateMetrics click_through_rate. */
                        public click_through_rate: number;

                        /** RateMetrics video_completion_p25_rate. */
                        public video_completion_p25_rate: number;

                        /** RateMetrics video_completion_p50_rate. */
                        public video_completion_p50_rate: number;

                        /** RateMetrics video_completion_p75_rate. */
                        public video_completion_p75_rate: number;

                        /** RateMetrics video_completion_p100_rate. */
                        public video_completion_p100_rate: number;

                        /**
                         * Creates a new RateMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RateMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRateMetrics): google.ads.googleads.v23.services.RateMetrics;

                        /**
                         * Encodes the specified RateMetrics message. Does not implicitly {@link google.ads.googleads.v23.services.RateMetrics.verify|verify} messages.
                         * @param message RateMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRateMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RateMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RateMetrics.verify|verify} messages.
                         * @param message RateMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRateMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RateMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RateMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RateMetrics;

                        /**
                         * Decodes a RateMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RateMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RateMetrics;

                        /**
                         * Verifies a RateMetrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RateMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RateMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RateMetrics;

                        /**
                         * Creates a plain object from a RateMetrics message. Also converts values to other types if specified.
                         * @param message RateMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RateMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RateMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RateMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a BillingSetupService */
                    class BillingSetupService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BillingSetupService 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 BillingSetupService 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): BillingSetupService;

                        /**
                         * Calls MutateBillingSetup.
                         * @param request MutateBillingSetupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateBillingSetupResponse
                         */
                        public mutateBillingSetup(request: google.ads.googleads.v23.services.IMutateBillingSetupRequest, callback: google.ads.googleads.v23.services.BillingSetupService.MutateBillingSetupCallback): void;

                        /**
                         * Calls MutateBillingSetup.
                         * @param request MutateBillingSetupRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBillingSetup(request: google.ads.googleads.v23.services.IMutateBillingSetupRequest): Promise<google.ads.googleads.v23.services.MutateBillingSetupResponse>;
                    }

                    namespace BillingSetupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BillingSetupService|mutateBillingSetup}.
                         * @param error Error, if any
                         * @param [response] MutateBillingSetupResponse
                         */
                        type MutateBillingSetupCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateBillingSetupResponse) => void;
                    }

                    /** Properties of a MutateBillingSetupRequest. */
                    interface IMutateBillingSetupRequest {

                        /** MutateBillingSetupRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBillingSetupRequest operation */
                        operation?: (google.ads.googleads.v23.services.IBillingSetupOperation|null);
                    }

                    /** Represents a MutateBillingSetupRequest. */
                    class MutateBillingSetupRequest implements IMutateBillingSetupRequest {

                        /**
                         * Constructs a new MutateBillingSetupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBillingSetupRequest);

                        /** MutateBillingSetupRequest customer_id. */
                        public customer_id: string;

                        /** MutateBillingSetupRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.IBillingSetupOperation|null);

                        /**
                         * Creates a new MutateBillingSetupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBillingSetupRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBillingSetupRequest): google.ads.googleads.v23.services.MutateBillingSetupRequest;

                        /**
                         * Encodes the specified MutateBillingSetupRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBillingSetupRequest.verify|verify} messages.
                         * @param message MutateBillingSetupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBillingSetupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBillingSetupRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBillingSetupRequest.verify|verify} messages.
                         * @param message MutateBillingSetupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBillingSetupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBillingSetupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBillingSetupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBillingSetupRequest;

                        /**
                         * Decodes a MutateBillingSetupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBillingSetupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBillingSetupRequest;

                        /**
                         * Verifies a MutateBillingSetupRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBillingSetupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBillingSetupRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBillingSetupRequest;

                        /**
                         * Creates a plain object from a MutateBillingSetupRequest message. Also converts values to other types if specified.
                         * @param message MutateBillingSetupRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBillingSetupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBillingSetupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBillingSetupRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BillingSetupOperation. */
                    interface IBillingSetupOperation {

                        /** BillingSetupOperation create */
                        create?: (google.ads.googleads.v23.resources.IBillingSetup|null);

                        /** BillingSetupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BillingSetupOperation. */
                    class BillingSetupOperation implements IBillingSetupOperation {

                        /**
                         * Constructs a new BillingSetupOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBillingSetupOperation);

                        /** BillingSetupOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IBillingSetup|null);

                        /** BillingSetupOperation remove. */
                        public remove?: (string|null);

                        /** BillingSetupOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new BillingSetupOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BillingSetupOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBillingSetupOperation): google.ads.googleads.v23.services.BillingSetupOperation;

                        /**
                         * Encodes the specified BillingSetupOperation message. Does not implicitly {@link google.ads.googleads.v23.services.BillingSetupOperation.verify|verify} messages.
                         * @param message BillingSetupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBillingSetupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BillingSetupOperation.verify|verify} messages.
                         * @param message BillingSetupOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBillingSetupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetupOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BillingSetupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BillingSetupOperation;

                        /**
                         * Decodes a BillingSetupOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BillingSetupOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BillingSetupOperation;

                        /**
                         * Verifies a BillingSetupOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BillingSetupOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BillingSetupOperation;

                        /**
                         * Creates a plain object from a BillingSetupOperation message. Also converts values to other types if specified.
                         * @param message BillingSetupOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BillingSetupOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BillingSetupOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBillingSetupResponse. */
                    interface IMutateBillingSetupResponse {

                        /** MutateBillingSetupResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateBillingSetupResult|null);
                    }

                    /** Represents a MutateBillingSetupResponse. */
                    class MutateBillingSetupResponse implements IMutateBillingSetupResponse {

                        /**
                         * Constructs a new MutateBillingSetupResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBillingSetupResponse);

                        /** MutateBillingSetupResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateBillingSetupResult|null);

                        /**
                         * Creates a new MutateBillingSetupResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBillingSetupResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBillingSetupResponse): google.ads.googleads.v23.services.MutateBillingSetupResponse;

                        /**
                         * Encodes the specified MutateBillingSetupResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBillingSetupResponse.verify|verify} messages.
                         * @param message MutateBillingSetupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBillingSetupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBillingSetupResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBillingSetupResponse.verify|verify} messages.
                         * @param message MutateBillingSetupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBillingSetupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBillingSetupResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBillingSetupResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBillingSetupResponse;

                        /**
                         * Decodes a MutateBillingSetupResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBillingSetupResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBillingSetupResponse;

                        /**
                         * Verifies a MutateBillingSetupResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBillingSetupResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBillingSetupResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBillingSetupResponse;

                        /**
                         * Creates a plain object from a MutateBillingSetupResponse message. Also converts values to other types if specified.
                         * @param message MutateBillingSetupResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBillingSetupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBillingSetupResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBillingSetupResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateBillingSetupResult. */
                    interface IMutateBillingSetupResult {

                        /** MutateBillingSetupResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateBillingSetupResult. */
                    class MutateBillingSetupResult implements IMutateBillingSetupResult {

                        /**
                         * Constructs a new MutateBillingSetupResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateBillingSetupResult);

                        /** MutateBillingSetupResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateBillingSetupResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateBillingSetupResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateBillingSetupResult): google.ads.googleads.v23.services.MutateBillingSetupResult;

                        /**
                         * Encodes the specified MutateBillingSetupResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateBillingSetupResult.verify|verify} messages.
                         * @param message MutateBillingSetupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateBillingSetupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBillingSetupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateBillingSetupResult.verify|verify} messages.
                         * @param message MutateBillingSetupResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateBillingSetupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBillingSetupResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateBillingSetupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateBillingSetupResult;

                        /**
                         * Decodes a MutateBillingSetupResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateBillingSetupResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateBillingSetupResult;

                        /**
                         * Verifies a MutateBillingSetupResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBillingSetupResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateBillingSetupResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateBillingSetupResult;

                        /**
                         * Creates a plain object from a MutateBillingSetupResult message. Also converts values to other types if specified.
                         * @param message MutateBillingSetupResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateBillingSetupResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBillingSetupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateBillingSetupResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a BrandSuggestionService */
                    class BrandSuggestionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BrandSuggestionService 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 BrandSuggestionService 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): BrandSuggestionService;

                        /**
                         * Calls SuggestBrands.
                         * @param request SuggestBrandsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SuggestBrandsResponse
                         */
                        public suggestBrands(request: google.ads.googleads.v23.services.ISuggestBrandsRequest, callback: google.ads.googleads.v23.services.BrandSuggestionService.SuggestBrandsCallback): void;

                        /**
                         * Calls SuggestBrands.
                         * @param request SuggestBrandsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestBrands(request: google.ads.googleads.v23.services.ISuggestBrandsRequest): Promise<google.ads.googleads.v23.services.SuggestBrandsResponse>;
                    }

                    namespace BrandSuggestionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.BrandSuggestionService|suggestBrands}.
                         * @param error Error, if any
                         * @param [response] SuggestBrandsResponse
                         */
                        type SuggestBrandsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SuggestBrandsResponse) => void;
                    }

                    /** Properties of a SuggestBrandsRequest. */
                    interface ISuggestBrandsRequest {

                        /** SuggestBrandsRequest customer_id */
                        customer_id?: (string|null);

                        /** SuggestBrandsRequest brand_prefix */
                        brand_prefix?: (string|null);

                        /** SuggestBrandsRequest selected_brands */
                        selected_brands?: (string[]|null);
                    }

                    /** Represents a SuggestBrandsRequest. */
                    class SuggestBrandsRequest implements ISuggestBrandsRequest {

                        /**
                         * Constructs a new SuggestBrandsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestBrandsRequest);

                        /** SuggestBrandsRequest customer_id. */
                        public customer_id: string;

                        /** SuggestBrandsRequest brand_prefix. */
                        public brand_prefix?: (string|null);

                        /** SuggestBrandsRequest selected_brands. */
                        public selected_brands: string[];

                        /**
                         * Creates a new SuggestBrandsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestBrandsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestBrandsRequest): google.ads.googleads.v23.services.SuggestBrandsRequest;

                        /**
                         * Encodes the specified SuggestBrandsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestBrandsRequest.verify|verify} messages.
                         * @param message SuggestBrandsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestBrandsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestBrandsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestBrandsRequest.verify|verify} messages.
                         * @param message SuggestBrandsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestBrandsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestBrandsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestBrandsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestBrandsRequest;

                        /**
                         * Decodes a SuggestBrandsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestBrandsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestBrandsRequest;

                        /**
                         * Verifies a SuggestBrandsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestBrandsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestBrandsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestBrandsRequest;

                        /**
                         * Creates a plain object from a SuggestBrandsRequest message. Also converts values to other types if specified.
                         * @param message SuggestBrandsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestBrandsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestBrandsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestBrandsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SuggestBrandsResponse. */
                    interface ISuggestBrandsResponse {

                        /** SuggestBrandsResponse brands */
                        brands?: (google.ads.googleads.v23.services.IBrandSuggestion[]|null);
                    }

                    /** Represents a SuggestBrandsResponse. */
                    class SuggestBrandsResponse implements ISuggestBrandsResponse {

                        /**
                         * Constructs a new SuggestBrandsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestBrandsResponse);

                        /** SuggestBrandsResponse brands. */
                        public brands: google.ads.googleads.v23.services.IBrandSuggestion[];

                        /**
                         * Creates a new SuggestBrandsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestBrandsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestBrandsResponse): google.ads.googleads.v23.services.SuggestBrandsResponse;

                        /**
                         * Encodes the specified SuggestBrandsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestBrandsResponse.verify|verify} messages.
                         * @param message SuggestBrandsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestBrandsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestBrandsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestBrandsResponse.verify|verify} messages.
                         * @param message SuggestBrandsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestBrandsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestBrandsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestBrandsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestBrandsResponse;

                        /**
                         * Decodes a SuggestBrandsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestBrandsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestBrandsResponse;

                        /**
                         * Verifies a SuggestBrandsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestBrandsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestBrandsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestBrandsResponse;

                        /**
                         * Creates a plain object from a SuggestBrandsResponse message. Also converts values to other types if specified.
                         * @param message SuggestBrandsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestBrandsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestBrandsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestBrandsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BrandSuggestion. */
                    interface IBrandSuggestion {

                        /** BrandSuggestion id */
                        id?: (string|null);

                        /** BrandSuggestion name */
                        name?: (string|null);

                        /** BrandSuggestion urls */
                        urls?: (string[]|null);

                        /** BrandSuggestion state */
                        state?: (google.ads.googleads.v23.enums.BrandStateEnum.BrandState|keyof typeof google.ads.googleads.v23.enums.BrandStateEnum.BrandState|null);
                    }

                    /** Represents a BrandSuggestion. */
                    class BrandSuggestion implements IBrandSuggestion {

                        /**
                         * Constructs a new BrandSuggestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBrandSuggestion);

                        /** BrandSuggestion id. */
                        public id: string;

                        /** BrandSuggestion name. */
                        public name: string;

                        /** BrandSuggestion urls. */
                        public urls: string[];

                        /** BrandSuggestion state. */
                        public state: (google.ads.googleads.v23.enums.BrandStateEnum.BrandState|keyof typeof google.ads.googleads.v23.enums.BrandStateEnum.BrandState);

                        /**
                         * Creates a new BrandSuggestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BrandSuggestion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBrandSuggestion): google.ads.googleads.v23.services.BrandSuggestion;

                        /**
                         * Encodes the specified BrandSuggestion message. Does not implicitly {@link google.ads.googleads.v23.services.BrandSuggestion.verify|verify} messages.
                         * @param message BrandSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBrandSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandSuggestion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BrandSuggestion.verify|verify} messages.
                         * @param message BrandSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBrandSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandSuggestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BrandSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BrandSuggestion;

                        /**
                         * Decodes a BrandSuggestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BrandSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BrandSuggestion;

                        /**
                         * Verifies a BrandSuggestion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandSuggestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BrandSuggestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BrandSuggestion;

                        /**
                         * Creates a plain object from a BrandSuggestion message. Also converts values to other types if specified.
                         * @param message BrandSuggestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BrandSuggestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandSuggestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BrandSuggestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignGoalConfigService */
                    class CampaignGoalConfigService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignGoalConfigService 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 CampaignGoalConfigService 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): CampaignGoalConfigService;

                        /**
                         * Calls MutateCampaignGoalConfigs.
                         * @param request MutateCampaignGoalConfigsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignGoalConfigsResponse
                         */
                        public mutateCampaignGoalConfigs(request: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsRequest, callback: google.ads.googleads.v23.services.CampaignGoalConfigService.MutateCampaignGoalConfigsCallback): void;

                        /**
                         * Calls MutateCampaignGoalConfigs.
                         * @param request MutateCampaignGoalConfigsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignGoalConfigs(request: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsRequest): Promise<google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse>;
                    }

                    namespace CampaignGoalConfigService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignGoalConfigService|mutateCampaignGoalConfigs}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignGoalConfigsResponse
                         */
                        type MutateCampaignGoalConfigsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse) => void;
                    }

                    /** Properties of a MutateCampaignGoalConfigsRequest. */
                    interface IMutateCampaignGoalConfigsRequest {

                        /** MutateCampaignGoalConfigsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignGoalConfigsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICampaignGoalConfigOperation[]|null);

                        /** MutateCampaignGoalConfigsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignGoalConfigsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCampaignGoalConfigsRequest. */
                    class MutateCampaignGoalConfigsRequest implements IMutateCampaignGoalConfigsRequest {

                        /**
                         * Constructs a new MutateCampaignGoalConfigsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsRequest);

                        /** MutateCampaignGoalConfigsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignGoalConfigsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICampaignGoalConfigOperation[];

                        /** MutateCampaignGoalConfigsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignGoalConfigsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCampaignGoalConfigsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignGoalConfigsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsRequest): google.ads.googleads.v23.services.MutateCampaignGoalConfigsRequest;

                        /**
                         * Encodes the specified MutateCampaignGoalConfigsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGoalConfigsRequest.verify|verify} messages.
                         * @param message MutateCampaignGoalConfigsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignGoalConfigsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGoalConfigsRequest.verify|verify} messages.
                         * @param message MutateCampaignGoalConfigsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignGoalConfigsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignGoalConfigsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignGoalConfigsRequest;

                        /**
                         * Decodes a MutateCampaignGoalConfigsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignGoalConfigsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignGoalConfigsRequest;

                        /**
                         * Verifies a MutateCampaignGoalConfigsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignGoalConfigsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignGoalConfigsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignGoalConfigsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignGoalConfigsRequest message. Also converts values to other types if specified.
                         * @param message MutateCampaignGoalConfigsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignGoalConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignGoalConfigsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignGoalConfigsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignGoalConfigOperation. */
                    interface ICampaignGoalConfigOperation {

                        /** CampaignGoalConfigOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignGoalConfigOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignGoalConfig|null);

                        /** CampaignGoalConfigOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignGoalConfig|null);

                        /** CampaignGoalConfigOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignGoalConfigOperation. */
                    class CampaignGoalConfigOperation implements ICampaignGoalConfigOperation {

                        /**
                         * Constructs a new CampaignGoalConfigOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignGoalConfigOperation);

                        /** CampaignGoalConfigOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignGoalConfigOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignGoalConfig|null);

                        /** CampaignGoalConfigOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignGoalConfig|null);

                        /** CampaignGoalConfigOperation remove. */
                        public remove?: (string|null);

                        /** CampaignGoalConfigOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignGoalConfigOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignGoalConfigOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignGoalConfigOperation): google.ads.googleads.v23.services.CampaignGoalConfigOperation;

                        /**
                         * Encodes the specified CampaignGoalConfigOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignGoalConfigOperation.verify|verify} messages.
                         * @param message CampaignGoalConfigOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignGoalConfigOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignGoalConfigOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignGoalConfigOperation.verify|verify} messages.
                         * @param message CampaignGoalConfigOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignGoalConfigOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignGoalConfigOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignGoalConfigOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignGoalConfigOperation;

                        /**
                         * Decodes a CampaignGoalConfigOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignGoalConfigOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignGoalConfigOperation;

                        /**
                         * Verifies a CampaignGoalConfigOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignGoalConfigOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignGoalConfigOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignGoalConfigOperation;

                        /**
                         * Creates a plain object from a CampaignGoalConfigOperation message. Also converts values to other types if specified.
                         * @param message CampaignGoalConfigOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignGoalConfigOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignGoalConfigOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignGoalConfigOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignGoalConfigsResponse. */
                    interface IMutateCampaignGoalConfigsResponse {

                        /** MutateCampaignGoalConfigsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignGoalConfigsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCampaignGoalConfigResult[]|null);
                    }

                    /** Represents a MutateCampaignGoalConfigsResponse. */
                    class MutateCampaignGoalConfigsResponse implements IMutateCampaignGoalConfigsResponse {

                        /**
                         * Constructs a new MutateCampaignGoalConfigsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsResponse);

                        /** MutateCampaignGoalConfigsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignGoalConfigsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCampaignGoalConfigResult[];

                        /**
                         * Creates a new MutateCampaignGoalConfigsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignGoalConfigsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsResponse): google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse;

                        /**
                         * Encodes the specified MutateCampaignGoalConfigsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse.verify|verify} messages.
                         * @param message MutateCampaignGoalConfigsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignGoalConfigsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse.verify|verify} messages.
                         * @param message MutateCampaignGoalConfigsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignGoalConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignGoalConfigsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignGoalConfigsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse;

                        /**
                         * Decodes a MutateCampaignGoalConfigsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignGoalConfigsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse;

                        /**
                         * Verifies a MutateCampaignGoalConfigsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignGoalConfigsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignGoalConfigsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignGoalConfigsResponse message. Also converts values to other types if specified.
                         * @param message MutateCampaignGoalConfigsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignGoalConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignGoalConfigsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignGoalConfigsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCampaignGoalConfigResult. */
                    interface IMutateCampaignGoalConfigResult {

                        /** MutateCampaignGoalConfigResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCampaignGoalConfigResult. */
                    class MutateCampaignGoalConfigResult implements IMutateCampaignGoalConfigResult {

                        /**
                         * Constructs a new MutateCampaignGoalConfigResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCampaignGoalConfigResult);

                        /** MutateCampaignGoalConfigResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCampaignGoalConfigResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignGoalConfigResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCampaignGoalConfigResult): google.ads.googleads.v23.services.MutateCampaignGoalConfigResult;

                        /**
                         * Encodes the specified MutateCampaignGoalConfigResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGoalConfigResult.verify|verify} messages.
                         * @param message MutateCampaignGoalConfigResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCampaignGoalConfigResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignGoalConfigResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCampaignGoalConfigResult.verify|verify} messages.
                         * @param message MutateCampaignGoalConfigResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCampaignGoalConfigResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignGoalConfigResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCampaignGoalConfigResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCampaignGoalConfigResult;

                        /**
                         * Decodes a MutateCampaignGoalConfigResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignGoalConfigResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCampaignGoalConfigResult;

                        /**
                         * Verifies a MutateCampaignGoalConfigResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignGoalConfigResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCampaignGoalConfigResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCampaignGoalConfigResult;

                        /**
                         * Creates a plain object from a MutateCampaignGoalConfigResult message. Also converts values to other types if specified.
                         * @param message MutateCampaignGoalConfigResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCampaignGoalConfigResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignGoalConfigResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCampaignGoalConfigResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CampaignLifecycleGoalService */
                    class CampaignLifecycleGoalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignLifecycleGoalService 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 CampaignLifecycleGoalService 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): CampaignLifecycleGoalService;

                        /**
                         * Calls ConfigureCampaignLifecycleGoals.
                         * @param request ConfigureCampaignLifecycleGoalsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ConfigureCampaignLifecycleGoalsResponse
                         */
                        public configureCampaignLifecycleGoals(request: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsRequest, callback: google.ads.googleads.v23.services.CampaignLifecycleGoalService.ConfigureCampaignLifecycleGoalsCallback): void;

                        /**
                         * Calls ConfigureCampaignLifecycleGoals.
                         * @param request ConfigureCampaignLifecycleGoalsRequest message or plain object
                         * @returns Promise
                         */
                        public configureCampaignLifecycleGoals(request: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsRequest): Promise<google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse>;
                    }

                    namespace CampaignLifecycleGoalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CampaignLifecycleGoalService|configureCampaignLifecycleGoals}.
                         * @param error Error, if any
                         * @param [response] ConfigureCampaignLifecycleGoalsResponse
                         */
                        type ConfigureCampaignLifecycleGoalsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse) => void;
                    }

                    /** Properties of a ConfigureCampaignLifecycleGoalsRequest. */
                    interface IConfigureCampaignLifecycleGoalsRequest {

                        /** ConfigureCampaignLifecycleGoalsRequest customer_id */
                        customer_id?: (string|null);

                        /** ConfigureCampaignLifecycleGoalsRequest operation */
                        operation?: (google.ads.googleads.v23.services.ICampaignLifecycleGoalOperation|null);

                        /** ConfigureCampaignLifecycleGoalsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a ConfigureCampaignLifecycleGoalsRequest. */
                    class ConfigureCampaignLifecycleGoalsRequest implements IConfigureCampaignLifecycleGoalsRequest {

                        /**
                         * Constructs a new ConfigureCampaignLifecycleGoalsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsRequest);

                        /** ConfigureCampaignLifecycleGoalsRequest customer_id. */
                        public customer_id: string;

                        /** ConfigureCampaignLifecycleGoalsRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.ICampaignLifecycleGoalOperation|null);

                        /** ConfigureCampaignLifecycleGoalsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new ConfigureCampaignLifecycleGoalsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConfigureCampaignLifecycleGoalsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsRequest): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsRequest;

                        /**
                         * Encodes the specified ConfigureCampaignLifecycleGoalsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsRequest.verify|verify} messages.
                         * @param message ConfigureCampaignLifecycleGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConfigureCampaignLifecycleGoalsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsRequest.verify|verify} messages.
                         * @param message ConfigureCampaignLifecycleGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConfigureCampaignLifecycleGoalsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConfigureCampaignLifecycleGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsRequest;

                        /**
                         * Decodes a ConfigureCampaignLifecycleGoalsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConfigureCampaignLifecycleGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsRequest;

                        /**
                         * Verifies a ConfigureCampaignLifecycleGoalsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConfigureCampaignLifecycleGoalsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConfigureCampaignLifecycleGoalsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsRequest;

                        /**
                         * Creates a plain object from a ConfigureCampaignLifecycleGoalsRequest message. Also converts values to other types if specified.
                         * @param message ConfigureCampaignLifecycleGoalsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConfigureCampaignLifecycleGoalsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConfigureCampaignLifecycleGoalsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignLifecycleGoalOperation. */
                    interface ICampaignLifecycleGoalOperation {

                        /** CampaignLifecycleGoalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignLifecycleGoalOperation create */
                        create?: (google.ads.googleads.v23.resources.ICampaignLifecycleGoal|null);

                        /** CampaignLifecycleGoalOperation update */
                        update?: (google.ads.googleads.v23.resources.ICampaignLifecycleGoal|null);
                    }

                    /** Represents a CampaignLifecycleGoalOperation. */
                    class CampaignLifecycleGoalOperation implements ICampaignLifecycleGoalOperation {

                        /**
                         * Constructs a new CampaignLifecycleGoalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignLifecycleGoalOperation);

                        /** CampaignLifecycleGoalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignLifecycleGoalOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICampaignLifecycleGoal|null);

                        /** CampaignLifecycleGoalOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICampaignLifecycleGoal|null);

                        /** CampaignLifecycleGoalOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new CampaignLifecycleGoalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignLifecycleGoalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignLifecycleGoalOperation): google.ads.googleads.v23.services.CampaignLifecycleGoalOperation;

                        /**
                         * Encodes the specified CampaignLifecycleGoalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignLifecycleGoalOperation.verify|verify} messages.
                         * @param message CampaignLifecycleGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignLifecycleGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignLifecycleGoalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignLifecycleGoalOperation.verify|verify} messages.
                         * @param message CampaignLifecycleGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignLifecycleGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignLifecycleGoalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignLifecycleGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignLifecycleGoalOperation;

                        /**
                         * Decodes a CampaignLifecycleGoalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignLifecycleGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignLifecycleGoalOperation;

                        /**
                         * Verifies a CampaignLifecycleGoalOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignLifecycleGoalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignLifecycleGoalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignLifecycleGoalOperation;

                        /**
                         * Creates a plain object from a CampaignLifecycleGoalOperation message. Also converts values to other types if specified.
                         * @param message CampaignLifecycleGoalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignLifecycleGoalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignLifecycleGoalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignLifecycleGoalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConfigureCampaignLifecycleGoalsResponse. */
                    interface IConfigureCampaignLifecycleGoalsResponse {

                        /** ConfigureCampaignLifecycleGoalsResponse result */
                        result?: (google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResult|null);
                    }

                    /** Represents a ConfigureCampaignLifecycleGoalsResponse. */
                    class ConfigureCampaignLifecycleGoalsResponse implements IConfigureCampaignLifecycleGoalsResponse {

                        /**
                         * Constructs a new ConfigureCampaignLifecycleGoalsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResponse);

                        /** ConfigureCampaignLifecycleGoalsResponse result. */
                        public result?: (google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResult|null);

                        /**
                         * Creates a new ConfigureCampaignLifecycleGoalsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConfigureCampaignLifecycleGoalsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResponse): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse;

                        /**
                         * Encodes the specified ConfigureCampaignLifecycleGoalsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse.verify|verify} messages.
                         * @param message ConfigureCampaignLifecycleGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConfigureCampaignLifecycleGoalsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse.verify|verify} messages.
                         * @param message ConfigureCampaignLifecycleGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConfigureCampaignLifecycleGoalsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConfigureCampaignLifecycleGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse;

                        /**
                         * Decodes a ConfigureCampaignLifecycleGoalsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConfigureCampaignLifecycleGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse;

                        /**
                         * Verifies a ConfigureCampaignLifecycleGoalsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConfigureCampaignLifecycleGoalsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConfigureCampaignLifecycleGoalsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse;

                        /**
                         * Creates a plain object from a ConfigureCampaignLifecycleGoalsResponse message. Also converts values to other types if specified.
                         * @param message ConfigureCampaignLifecycleGoalsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConfigureCampaignLifecycleGoalsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConfigureCampaignLifecycleGoalsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConfigureCampaignLifecycleGoalsResult. */
                    interface IConfigureCampaignLifecycleGoalsResult {

                        /** ConfigureCampaignLifecycleGoalsResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a ConfigureCampaignLifecycleGoalsResult. */
                    class ConfigureCampaignLifecycleGoalsResult implements IConfigureCampaignLifecycleGoalsResult {

                        /**
                         * Constructs a new ConfigureCampaignLifecycleGoalsResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResult);

                        /** ConfigureCampaignLifecycleGoalsResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ConfigureCampaignLifecycleGoalsResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConfigureCampaignLifecycleGoalsResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResult): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResult;

                        /**
                         * Encodes the specified ConfigureCampaignLifecycleGoalsResult message. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResult.verify|verify} messages.
                         * @param message ConfigureCampaignLifecycleGoalsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConfigureCampaignLifecycleGoalsResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResult.verify|verify} messages.
                         * @param message ConfigureCampaignLifecycleGoalsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConfigureCampaignLifecycleGoalsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConfigureCampaignLifecycleGoalsResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConfigureCampaignLifecycleGoalsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResult;

                        /**
                         * Decodes a ConfigureCampaignLifecycleGoalsResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConfigureCampaignLifecycleGoalsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResult;

                        /**
                         * Verifies a ConfigureCampaignLifecycleGoalsResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConfigureCampaignLifecycleGoalsResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConfigureCampaignLifecycleGoalsResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResult;

                        /**
                         * Creates a plain object from a ConfigureCampaignLifecycleGoalsResult message. Also converts values to other types if specified.
                         * @param message ConfigureCampaignLifecycleGoalsResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConfigureCampaignLifecycleGoalsResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConfigureCampaignLifecycleGoalsResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConfigureCampaignLifecycleGoalsResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ContentCreatorInsightsService */
                    class ContentCreatorInsightsService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ContentCreatorInsightsService 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 ContentCreatorInsightsService 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): ContentCreatorInsightsService;

                        /**
                         * Calls GenerateCreatorInsights.
                         * @param request GenerateCreatorInsightsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateCreatorInsightsResponse
                         */
                        public generateCreatorInsights(request: google.ads.googleads.v23.services.IGenerateCreatorInsightsRequest, callback: google.ads.googleads.v23.services.ContentCreatorInsightsService.GenerateCreatorInsightsCallback): void;

                        /**
                         * Calls GenerateCreatorInsights.
                         * @param request GenerateCreatorInsightsRequest message or plain object
                         * @returns Promise
                         */
                        public generateCreatorInsights(request: google.ads.googleads.v23.services.IGenerateCreatorInsightsRequest): Promise<google.ads.googleads.v23.services.GenerateCreatorInsightsResponse>;

                        /**
                         * Calls GenerateTrendingInsights.
                         * @param request GenerateTrendingInsightsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateTrendingInsightsResponse
                         */
                        public generateTrendingInsights(request: google.ads.googleads.v23.services.IGenerateTrendingInsightsRequest, callback: google.ads.googleads.v23.services.ContentCreatorInsightsService.GenerateTrendingInsightsCallback): void;

                        /**
                         * Calls GenerateTrendingInsights.
                         * @param request GenerateTrendingInsightsRequest message or plain object
                         * @returns Promise
                         */
                        public generateTrendingInsights(request: google.ads.googleads.v23.services.IGenerateTrendingInsightsRequest): Promise<google.ads.googleads.v23.services.GenerateTrendingInsightsResponse>;
                    }

                    namespace ContentCreatorInsightsService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ContentCreatorInsightsService|generateCreatorInsights}.
                         * @param error Error, if any
                         * @param [response] GenerateCreatorInsightsResponse
                         */
                        type GenerateCreatorInsightsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateCreatorInsightsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ContentCreatorInsightsService|generateTrendingInsights}.
                         * @param error Error, if any
                         * @param [response] GenerateTrendingInsightsResponse
                         */
                        type GenerateTrendingInsightsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateTrendingInsightsResponse) => void;
                    }

                    /** Properties of a GenerateCreatorInsightsRequest. */
                    interface IGenerateCreatorInsightsRequest {

                        /** GenerateCreatorInsightsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateCreatorInsightsRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateCreatorInsightsRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** GenerateCreatorInsightsRequest country_locations */
                        country_locations?: (google.ads.googleads.v23.common.ILocationInfo[]|null);

                        /** GenerateCreatorInsightsRequest sub_country_locations */
                        sub_country_locations?: (google.ads.googleads.v23.common.ILocationInfo[]|null);

                        /** GenerateCreatorInsightsRequest search_attributes */
                        search_attributes?: (google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchAttributes|null);

                        /** GenerateCreatorInsightsRequest search_brand */
                        search_brand?: (google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchBrand|null);

                        /** GenerateCreatorInsightsRequest search_channels */
                        search_channels?: (google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.IYouTubeChannels|null);
                    }

                    /** Represents a GenerateCreatorInsightsRequest. */
                    class GenerateCreatorInsightsRequest implements IGenerateCreatorInsightsRequest {

                        /**
                         * Constructs a new GenerateCreatorInsightsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateCreatorInsightsRequest);

                        /** GenerateCreatorInsightsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateCreatorInsightsRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateCreatorInsightsRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** GenerateCreatorInsightsRequest country_locations. */
                        public country_locations: google.ads.googleads.v23.common.ILocationInfo[];

                        /** GenerateCreatorInsightsRequest sub_country_locations. */
                        public sub_country_locations: google.ads.googleads.v23.common.ILocationInfo[];

                        /** GenerateCreatorInsightsRequest search_attributes. */
                        public search_attributes?: (google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchAttributes|null);

                        /** GenerateCreatorInsightsRequest search_brand. */
                        public search_brand?: (google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchBrand|null);

                        /** GenerateCreatorInsightsRequest search_channels. */
                        public search_channels?: (google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.IYouTubeChannels|null);

                        /** GenerateCreatorInsightsRequest criteria. */
                        public criteria?: ("search_attributes"|"search_brand"|"search_channels");

                        /**
                         * Creates a new GenerateCreatorInsightsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateCreatorInsightsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateCreatorInsightsRequest): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest;

                        /**
                         * Encodes the specified GenerateCreatorInsightsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.verify|verify} messages.
                         * @param message GenerateCreatorInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateCreatorInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateCreatorInsightsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.verify|verify} messages.
                         * @param message GenerateCreatorInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateCreatorInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateCreatorInsightsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateCreatorInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest;

                        /**
                         * Decodes a GenerateCreatorInsightsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateCreatorInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest;

                        /**
                         * Verifies a GenerateCreatorInsightsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateCreatorInsightsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateCreatorInsightsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest;

                        /**
                         * Creates a plain object from a GenerateCreatorInsightsRequest message. Also converts values to other types if specified.
                         * @param message GenerateCreatorInsightsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateCreatorInsightsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateCreatorInsightsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GenerateCreatorInsightsRequest {

                        /** Properties of a SearchAttributes. */
                        interface ISearchAttributes {

                            /** SearchAttributes audience_attributes */
                            audience_attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute[]|null);

                            /** SearchAttributes creator_attributes */
                            creator_attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute[]|null);
                        }

                        /** Represents a SearchAttributes. */
                        class SearchAttributes implements ISearchAttributes {

                            /**
                             * Constructs a new SearchAttributes.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchAttributes);

                            /** SearchAttributes audience_attributes. */
                            public audience_attributes: google.ads.googleads.v23.common.IAudienceInsightsAttribute[];

                            /** SearchAttributes creator_attributes. */
                            public creator_attributes: google.ads.googleads.v23.common.IAudienceInsightsAttribute[];

                            /**
                             * Creates a new SearchAttributes instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SearchAttributes instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchAttributes): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchAttributes;

                            /**
                             * Encodes the specified SearchAttributes message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchAttributes.verify|verify} messages.
                             * @param message SearchAttributes message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SearchAttributes message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchAttributes.verify|verify} messages.
                             * @param message SearchAttributes message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SearchAttributes message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SearchAttributes
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchAttributes;

                            /**
                             * Decodes a SearchAttributes message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SearchAttributes
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchAttributes;

                            /**
                             * Verifies a SearchAttributes message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SearchAttributes message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SearchAttributes
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchAttributes;

                            /**
                             * Creates a plain object from a SearchAttributes message. Also converts values to other types if specified.
                             * @param message SearchAttributes
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SearchAttributes to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SearchAttributes
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SearchBrand. */
                        interface ISearchBrand {

                            /** SearchBrand brand_entities */
                            brand_entities?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute[]|null);

                            /** SearchBrand include_related_topics */
                            include_related_topics?: (boolean|null);
                        }

                        /** Represents a SearchBrand. */
                        class SearchBrand implements ISearchBrand {

                            /**
                             * Constructs a new SearchBrand.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchBrand);

                            /** SearchBrand brand_entities. */
                            public brand_entities: google.ads.googleads.v23.common.IAudienceInsightsAttribute[];

                            /** SearchBrand include_related_topics. */
                            public include_related_topics: boolean;

                            /**
                             * Creates a new SearchBrand instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SearchBrand instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchBrand): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchBrand;

                            /**
                             * Encodes the specified SearchBrand message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchBrand.verify|verify} messages.
                             * @param message SearchBrand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchBrand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SearchBrand message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchBrand.verify|verify} messages.
                             * @param message SearchBrand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.ISearchBrand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SearchBrand message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SearchBrand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchBrand;

                            /**
                             * Decodes a SearchBrand message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SearchBrand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchBrand;

                            /**
                             * Verifies a SearchBrand message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SearchBrand message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SearchBrand
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchBrand;

                            /**
                             * Creates a plain object from a SearchBrand message. Also converts values to other types if specified.
                             * @param message SearchBrand
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.SearchBrand, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SearchBrand to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SearchBrand
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a YouTubeChannels. */
                        interface IYouTubeChannels {

                            /** YouTubeChannels youtube_channels */
                            youtube_channels?: (google.ads.googleads.v23.common.IYouTubeChannelInfo[]|null);
                        }

                        /** Represents a YouTubeChannels. */
                        class YouTubeChannels implements IYouTubeChannels {

                            /**
                             * Constructs a new YouTubeChannels.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.IYouTubeChannels);

                            /** YouTubeChannels youtube_channels. */
                            public youtube_channels: google.ads.googleads.v23.common.IYouTubeChannelInfo[];

                            /**
                             * Creates a new YouTubeChannels instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns YouTubeChannels instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.IYouTubeChannels): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.YouTubeChannels;

                            /**
                             * Encodes the specified YouTubeChannels message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.YouTubeChannels.verify|verify} messages.
                             * @param message YouTubeChannels message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.IYouTubeChannels, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified YouTubeChannels message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.YouTubeChannels.verify|verify} messages.
                             * @param message YouTubeChannels message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.IYouTubeChannels, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a YouTubeChannels message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns YouTubeChannels
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.YouTubeChannels;

                            /**
                             * Decodes a YouTubeChannels message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns YouTubeChannels
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.YouTubeChannels;

                            /**
                             * Verifies a YouTubeChannels message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a YouTubeChannels message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns YouTubeChannels
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.YouTubeChannels;

                            /**
                             * Creates a plain object from a YouTubeChannels message. Also converts values to other types if specified.
                             * @param message YouTubeChannels
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateCreatorInsightsRequest.YouTubeChannels, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this YouTubeChannels to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for YouTubeChannels
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a GenerateCreatorInsightsResponse. */
                    interface IGenerateCreatorInsightsResponse {

                        /** GenerateCreatorInsightsResponse creator_insights */
                        creator_insights?: (google.ads.googleads.v23.services.IYouTubeCreatorInsights[]|null);
                    }

                    /** Represents a GenerateCreatorInsightsResponse. */
                    class GenerateCreatorInsightsResponse implements IGenerateCreatorInsightsResponse {

                        /**
                         * Constructs a new GenerateCreatorInsightsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateCreatorInsightsResponse);

                        /** GenerateCreatorInsightsResponse creator_insights. */
                        public creator_insights: google.ads.googleads.v23.services.IYouTubeCreatorInsights[];

                        /**
                         * Creates a new GenerateCreatorInsightsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateCreatorInsightsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateCreatorInsightsResponse): google.ads.googleads.v23.services.GenerateCreatorInsightsResponse;

                        /**
                         * Encodes the specified GenerateCreatorInsightsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsResponse.verify|verify} messages.
                         * @param message GenerateCreatorInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateCreatorInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateCreatorInsightsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateCreatorInsightsResponse.verify|verify} messages.
                         * @param message GenerateCreatorInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateCreatorInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateCreatorInsightsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateCreatorInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateCreatorInsightsResponse;

                        /**
                         * Decodes a GenerateCreatorInsightsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateCreatorInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateCreatorInsightsResponse;

                        /**
                         * Verifies a GenerateCreatorInsightsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateCreatorInsightsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateCreatorInsightsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateCreatorInsightsResponse;

                        /**
                         * Creates a plain object from a GenerateCreatorInsightsResponse message. Also converts values to other types if specified.
                         * @param message GenerateCreatorInsightsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateCreatorInsightsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateCreatorInsightsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateCreatorInsightsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateTrendingInsightsRequest. */
                    interface IGenerateTrendingInsightsRequest {

                        /** GenerateTrendingInsightsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateTrendingInsightsRequest customer_insights_group */
                        customer_insights_group?: (string|null);

                        /** GenerateTrendingInsightsRequest insights_application_info */
                        insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** GenerateTrendingInsightsRequest country_location */
                        country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** GenerateTrendingInsightsRequest search_audience */
                        search_audience?: (google.ads.googleads.v23.services.ISearchAudience|null);

                        /** GenerateTrendingInsightsRequest search_topics */
                        search_topics?: (google.ads.googleads.v23.services.ISearchTopics|null);
                    }

                    /** Represents a GenerateTrendingInsightsRequest. */
                    class GenerateTrendingInsightsRequest implements IGenerateTrendingInsightsRequest {

                        /**
                         * Constructs a new GenerateTrendingInsightsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateTrendingInsightsRequest);

                        /** GenerateTrendingInsightsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateTrendingInsightsRequest customer_insights_group. */
                        public customer_insights_group: string;

                        /** GenerateTrendingInsightsRequest insights_application_info. */
                        public insights_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /** GenerateTrendingInsightsRequest country_location. */
                        public country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** GenerateTrendingInsightsRequest search_audience. */
                        public search_audience?: (google.ads.googleads.v23.services.ISearchAudience|null);

                        /** GenerateTrendingInsightsRequest search_topics. */
                        public search_topics?: (google.ads.googleads.v23.services.ISearchTopics|null);

                        /** GenerateTrendingInsightsRequest criteria. */
                        public criteria?: ("search_audience"|"search_topics");

                        /**
                         * Creates a new GenerateTrendingInsightsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateTrendingInsightsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateTrendingInsightsRequest): google.ads.googleads.v23.services.GenerateTrendingInsightsRequest;

                        /**
                         * Encodes the specified GenerateTrendingInsightsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTrendingInsightsRequest.verify|verify} messages.
                         * @param message GenerateTrendingInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateTrendingInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateTrendingInsightsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTrendingInsightsRequest.verify|verify} messages.
                         * @param message GenerateTrendingInsightsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateTrendingInsightsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateTrendingInsightsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateTrendingInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateTrendingInsightsRequest;

                        /**
                         * Decodes a GenerateTrendingInsightsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateTrendingInsightsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateTrendingInsightsRequest;

                        /**
                         * Verifies a GenerateTrendingInsightsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateTrendingInsightsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateTrendingInsightsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateTrendingInsightsRequest;

                        /**
                         * Creates a plain object from a GenerateTrendingInsightsRequest message. Also converts values to other types if specified.
                         * @param message GenerateTrendingInsightsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateTrendingInsightsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateTrendingInsightsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateTrendingInsightsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateTrendingInsightsResponse. */
                    interface IGenerateTrendingInsightsResponse {

                        /** GenerateTrendingInsightsResponse trend_insights */
                        trend_insights?: (google.ads.googleads.v23.services.ITrendInsight[]|null);
                    }

                    /** Represents a GenerateTrendingInsightsResponse. */
                    class GenerateTrendingInsightsResponse implements IGenerateTrendingInsightsResponse {

                        /**
                         * Constructs a new GenerateTrendingInsightsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateTrendingInsightsResponse);

                        /** GenerateTrendingInsightsResponse trend_insights. */
                        public trend_insights: google.ads.googleads.v23.services.ITrendInsight[];

                        /**
                         * Creates a new GenerateTrendingInsightsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateTrendingInsightsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateTrendingInsightsResponse): google.ads.googleads.v23.services.GenerateTrendingInsightsResponse;

                        /**
                         * Encodes the specified GenerateTrendingInsightsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTrendingInsightsResponse.verify|verify} messages.
                         * @param message GenerateTrendingInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateTrendingInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateTrendingInsightsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateTrendingInsightsResponse.verify|verify} messages.
                         * @param message GenerateTrendingInsightsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateTrendingInsightsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateTrendingInsightsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateTrendingInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateTrendingInsightsResponse;

                        /**
                         * Decodes a GenerateTrendingInsightsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateTrendingInsightsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateTrendingInsightsResponse;

                        /**
                         * Verifies a GenerateTrendingInsightsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateTrendingInsightsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateTrendingInsightsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateTrendingInsightsResponse;

                        /**
                         * Creates a plain object from a GenerateTrendingInsightsResponse message. Also converts values to other types if specified.
                         * @param message GenerateTrendingInsightsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateTrendingInsightsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateTrendingInsightsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateTrendingInsightsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeCreatorInsights. */
                    interface IYouTubeCreatorInsights {

                        /** YouTubeCreatorInsights creator_name */
                        creator_name?: (string|null);

                        /** YouTubeCreatorInsights creator_channels */
                        creator_channels?: (google.ads.googleads.v23.services.IYouTubeChannelInsights[]|null);
                    }

                    /** Represents a YouTubeCreatorInsights. */
                    class YouTubeCreatorInsights implements IYouTubeCreatorInsights {

                        /**
                         * Constructs a new YouTubeCreatorInsights.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IYouTubeCreatorInsights);

                        /** YouTubeCreatorInsights creator_name. */
                        public creator_name: string;

                        /** YouTubeCreatorInsights creator_channels. */
                        public creator_channels: google.ads.googleads.v23.services.IYouTubeChannelInsights[];

                        /**
                         * Creates a new YouTubeCreatorInsights instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeCreatorInsights instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IYouTubeCreatorInsights): google.ads.googleads.v23.services.YouTubeCreatorInsights;

                        /**
                         * Encodes the specified YouTubeCreatorInsights message. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeCreatorInsights.verify|verify} messages.
                         * @param message YouTubeCreatorInsights message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IYouTubeCreatorInsights, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeCreatorInsights message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeCreatorInsights.verify|verify} messages.
                         * @param message YouTubeCreatorInsights message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IYouTubeCreatorInsights, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeCreatorInsights message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeCreatorInsights
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.YouTubeCreatorInsights;

                        /**
                         * Decodes a YouTubeCreatorInsights message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeCreatorInsights
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.YouTubeCreatorInsights;

                        /**
                         * Verifies a YouTubeCreatorInsights message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeCreatorInsights message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeCreatorInsights
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.YouTubeCreatorInsights;

                        /**
                         * Creates a plain object from a YouTubeCreatorInsights message. Also converts values to other types if specified.
                         * @param message YouTubeCreatorInsights
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.YouTubeCreatorInsights, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeCreatorInsights to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeCreatorInsights
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeMetrics. */
                    interface IYouTubeMetrics {

                        /** YouTubeMetrics subscriber_count */
                        subscriber_count?: (number|null);

                        /** YouTubeMetrics views_count */
                        views_count?: (number|null);

                        /** YouTubeMetrics video_count */
                        video_count?: (number|null);

                        /** YouTubeMetrics likes_count */
                        likes_count?: (number|null);

                        /** YouTubeMetrics shares_count */
                        shares_count?: (number|null);

                        /** YouTubeMetrics comments_count */
                        comments_count?: (number|null);

                        /** YouTubeMetrics engagement_rate */
                        engagement_rate?: (number|null);

                        /** YouTubeMetrics average_views_per_video */
                        average_views_per_video?: (number|null);

                        /** YouTubeMetrics average_likes_per_video */
                        average_likes_per_video?: (number|null);

                        /** YouTubeMetrics average_shares_per_video */
                        average_shares_per_video?: (number|null);

                        /** YouTubeMetrics average_comments_per_video */
                        average_comments_per_video?: (number|null);

                        /** YouTubeMetrics shorts_views_count */
                        shorts_views_count?: (number|null);

                        /** YouTubeMetrics shorts_video_count */
                        shorts_video_count?: (number|null);

                        /** YouTubeMetrics is_active_shorts_creator */
                        is_active_shorts_creator?: (boolean|null);

                        /** YouTubeMetrics is_active_live_stream_creator */
                        is_active_live_stream_creator?: (boolean|null);

                        /** YouTubeMetrics is_brand_connect_creator */
                        is_brand_connect_creator?: (boolean|null);
                    }

                    /** Represents a YouTubeMetrics. */
                    class YouTubeMetrics implements IYouTubeMetrics {

                        /**
                         * Constructs a new YouTubeMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IYouTubeMetrics);

                        /** YouTubeMetrics subscriber_count. */
                        public subscriber_count: number;

                        /** YouTubeMetrics views_count. */
                        public views_count: number;

                        /** YouTubeMetrics video_count. */
                        public video_count: number;

                        /** YouTubeMetrics likes_count. */
                        public likes_count: number;

                        /** YouTubeMetrics shares_count. */
                        public shares_count: number;

                        /** YouTubeMetrics comments_count. */
                        public comments_count: number;

                        /** YouTubeMetrics engagement_rate. */
                        public engagement_rate: number;

                        /** YouTubeMetrics average_views_per_video. */
                        public average_views_per_video: number;

                        /** YouTubeMetrics average_likes_per_video. */
                        public average_likes_per_video: number;

                        /** YouTubeMetrics average_shares_per_video. */
                        public average_shares_per_video: number;

                        /** YouTubeMetrics average_comments_per_video. */
                        public average_comments_per_video: number;

                        /** YouTubeMetrics shorts_views_count. */
                        public shorts_views_count: number;

                        /** YouTubeMetrics shorts_video_count. */
                        public shorts_video_count: number;

                        /** YouTubeMetrics is_active_shorts_creator. */
                        public is_active_shorts_creator: boolean;

                        /** YouTubeMetrics is_active_live_stream_creator. */
                        public is_active_live_stream_creator: boolean;

                        /** YouTubeMetrics is_brand_connect_creator. */
                        public is_brand_connect_creator: boolean;

                        /**
                         * Creates a new YouTubeMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IYouTubeMetrics): google.ads.googleads.v23.services.YouTubeMetrics;

                        /**
                         * Encodes the specified YouTubeMetrics message. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeMetrics.verify|verify} messages.
                         * @param message YouTubeMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IYouTubeMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeMetrics.verify|verify} messages.
                         * @param message YouTubeMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IYouTubeMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.YouTubeMetrics;

                        /**
                         * Decodes a YouTubeMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.YouTubeMetrics;

                        /**
                         * Verifies a YouTubeMetrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.YouTubeMetrics;

                        /**
                         * Creates a plain object from a YouTubeMetrics message. Also converts values to other types if specified.
                         * @param message YouTubeMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.YouTubeMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeChannelInsights. */
                    interface IYouTubeChannelInsights {

                        /** YouTubeChannelInsights display_name */
                        display_name?: (string|null);

                        /** YouTubeChannelInsights youtube_channel */
                        youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** YouTubeChannelInsights channel_url */
                        channel_url?: (string|null);

                        /** YouTubeChannelInsights channel_description */
                        channel_description?: (string|null);

                        /** YouTubeChannelInsights handle */
                        handle?: (string|null);

                        /** YouTubeChannelInsights thumbnail_url */
                        thumbnail_url?: (string|null);

                        /** YouTubeChannelInsights publish_date */
                        publish_date?: (string|null);

                        /** YouTubeChannelInsights country_location */
                        country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** YouTubeChannelInsights channel_metrics */
                        channel_metrics?: (google.ads.googleads.v23.services.IYouTubeMetrics|null);

                        /** YouTubeChannelInsights channel_audience_attributes */
                        channel_audience_attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);

                        /** YouTubeChannelInsights channel_attributes */
                        channel_attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);

                        /** YouTubeChannelInsights top_videos */
                        top_videos?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);

                        /** YouTubeChannelInsights language_distributions */
                        language_distributions?: (google.ads.googleads.v23.services.ILanguageDistribution[]|null);

                        /** YouTubeChannelInsights channel_type */
                        channel_type?: (string|null);

                        /** YouTubeChannelInsights relevance_score */
                        relevance_score?: (number|null);
                    }

                    /** Represents a YouTubeChannelInsights. */
                    class YouTubeChannelInsights implements IYouTubeChannelInsights {

                        /**
                         * Constructs a new YouTubeChannelInsights.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IYouTubeChannelInsights);

                        /** YouTubeChannelInsights display_name. */
                        public display_name: string;

                        /** YouTubeChannelInsights youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v23.common.IYouTubeChannelInfo|null);

                        /** YouTubeChannelInsights channel_url. */
                        public channel_url: string;

                        /** YouTubeChannelInsights channel_description. */
                        public channel_description: string;

                        /** YouTubeChannelInsights handle. */
                        public handle: string;

                        /** YouTubeChannelInsights thumbnail_url. */
                        public thumbnail_url: string;

                        /** YouTubeChannelInsights publish_date. */
                        public publish_date: string;

                        /** YouTubeChannelInsights country_location. */
                        public country_location?: (google.ads.googleads.v23.common.ILocationInfo|null);

                        /** YouTubeChannelInsights channel_metrics. */
                        public channel_metrics?: (google.ads.googleads.v23.services.IYouTubeMetrics|null);

                        /** YouTubeChannelInsights channel_audience_attributes. */
                        public channel_audience_attributes: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /** YouTubeChannelInsights channel_attributes. */
                        public channel_attributes: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /** YouTubeChannelInsights top_videos. */
                        public top_videos: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /** YouTubeChannelInsights language_distributions. */
                        public language_distributions: google.ads.googleads.v23.services.ILanguageDistribution[];

                        /** YouTubeChannelInsights channel_type. */
                        public channel_type: string;

                        /** YouTubeChannelInsights relevance_score. */
                        public relevance_score: number;

                        /**
                         * Creates a new YouTubeChannelInsights instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeChannelInsights instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IYouTubeChannelInsights): google.ads.googleads.v23.services.YouTubeChannelInsights;

                        /**
                         * Encodes the specified YouTubeChannelInsights message. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeChannelInsights.verify|verify} messages.
                         * @param message YouTubeChannelInsights message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IYouTubeChannelInsights, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeChannelInsights message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeChannelInsights.verify|verify} messages.
                         * @param message YouTubeChannelInsights message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IYouTubeChannelInsights, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeChannelInsights message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeChannelInsights
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.YouTubeChannelInsights;

                        /**
                         * Decodes a YouTubeChannelInsights message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeChannelInsights
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.YouTubeChannelInsights;

                        /**
                         * Verifies a YouTubeChannelInsights message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeChannelInsights message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeChannelInsights
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.YouTubeChannelInsights;

                        /**
                         * Creates a plain object from a YouTubeChannelInsights message. Also converts values to other types if specified.
                         * @param message YouTubeChannelInsights
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.YouTubeChannelInsights, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeChannelInsights to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeChannelInsights
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchAudience. */
                    interface ISearchAudience {

                        /** SearchAudience audience_attributes */
                        audience_attributes?: (google.ads.googleads.v23.common.IAudienceInsightsAttribute[]|null);
                    }

                    /** Represents a SearchAudience. */
                    class SearchAudience implements ISearchAudience {

                        /**
                         * Constructs a new SearchAudience.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchAudience);

                        /** SearchAudience audience_attributes. */
                        public audience_attributes: google.ads.googleads.v23.common.IAudienceInsightsAttribute[];

                        /**
                         * Creates a new SearchAudience instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchAudience instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchAudience): google.ads.googleads.v23.services.SearchAudience;

                        /**
                         * Encodes the specified SearchAudience message. Does not implicitly {@link google.ads.googleads.v23.services.SearchAudience.verify|verify} messages.
                         * @param message SearchAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchAudience message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchAudience.verify|verify} messages.
                         * @param message SearchAudience message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchAudience message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchAudience;

                        /**
                         * Decodes a SearchAudience message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchAudience
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchAudience;

                        /**
                         * Verifies a SearchAudience message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchAudience message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchAudience
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchAudience;

                        /**
                         * Creates a plain object from a SearchAudience message. Also converts values to other types if specified.
                         * @param message SearchAudience
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchAudience, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchAudience to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchAudience
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchTopics. */
                    interface ISearchTopics {

                        /** SearchTopics entities */
                        entities?: (google.ads.googleads.v23.common.IAudienceInsightsEntity[]|null);
                    }

                    /** Represents a SearchTopics. */
                    class SearchTopics implements ISearchTopics {

                        /**
                         * Constructs a new SearchTopics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchTopics);

                        /** SearchTopics entities. */
                        public entities: google.ads.googleads.v23.common.IAudienceInsightsEntity[];

                        /**
                         * Creates a new SearchTopics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchTopics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchTopics): google.ads.googleads.v23.services.SearchTopics;

                        /**
                         * Encodes the specified SearchTopics message. Does not implicitly {@link google.ads.googleads.v23.services.SearchTopics.verify|verify} messages.
                         * @param message SearchTopics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchTopics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTopics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchTopics.verify|verify} messages.
                         * @param message SearchTopics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchTopics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTopics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchTopics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchTopics;

                        /**
                         * Decodes a SearchTopics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchTopics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchTopics;

                        /**
                         * Verifies a SearchTopics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTopics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchTopics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchTopics;

                        /**
                         * Creates a plain object from a SearchTopics message. Also converts values to other types if specified.
                         * @param message SearchTopics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchTopics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTopics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchTopics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TrendInsight. */
                    interface ITrendInsight {

                        /** TrendInsight trend_attribute */
                        trend_attribute?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** TrendInsight trend_metrics */
                        trend_metrics?: (google.ads.googleads.v23.services.ITrendInsightMetrics|null);

                        /** TrendInsight trend */
                        trend?: (google.ads.googleads.v23.enums.InsightsTrendEnum.InsightsTrend|keyof typeof google.ads.googleads.v23.enums.InsightsTrendEnum.InsightsTrend|null);

                        /** TrendInsight related_videos */
                        related_videos?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[]|null);

                        /** TrendInsight related_creators */
                        related_creators?: (google.ads.googleads.v23.services.IYouTubeCreatorInsights[]|null);
                    }

                    /** Represents a TrendInsight. */
                    class TrendInsight implements ITrendInsight {

                        /**
                         * Constructs a new TrendInsight.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ITrendInsight);

                        /** TrendInsight trend_attribute. */
                        public trend_attribute?: (google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata|null);

                        /** TrendInsight trend_metrics. */
                        public trend_metrics?: (google.ads.googleads.v23.services.ITrendInsightMetrics|null);

                        /** TrendInsight trend. */
                        public trend: (google.ads.googleads.v23.enums.InsightsTrendEnum.InsightsTrend|keyof typeof google.ads.googleads.v23.enums.InsightsTrendEnum.InsightsTrend);

                        /** TrendInsight related_videos. */
                        public related_videos: google.ads.googleads.v23.common.IAudienceInsightsAttributeMetadata[];

                        /** TrendInsight related_creators. */
                        public related_creators: google.ads.googleads.v23.services.IYouTubeCreatorInsights[];

                        /**
                         * Creates a new TrendInsight instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TrendInsight instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ITrendInsight): google.ads.googleads.v23.services.TrendInsight;

                        /**
                         * Encodes the specified TrendInsight message. Does not implicitly {@link google.ads.googleads.v23.services.TrendInsight.verify|verify} messages.
                         * @param message TrendInsight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ITrendInsight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TrendInsight message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.TrendInsight.verify|verify} messages.
                         * @param message TrendInsight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ITrendInsight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TrendInsight message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TrendInsight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.TrendInsight;

                        /**
                         * Decodes a TrendInsight message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TrendInsight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.TrendInsight;

                        /**
                         * Verifies a TrendInsight message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TrendInsight message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TrendInsight
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.TrendInsight;

                        /**
                         * Creates a plain object from a TrendInsight message. Also converts values to other types if specified.
                         * @param message TrendInsight
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.TrendInsight, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TrendInsight to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TrendInsight
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TrendInsightMetrics. */
                    interface ITrendInsightMetrics {

                        /** TrendInsightMetrics views_count */
                        views_count?: (number|null);

                        /** TrendInsightMetrics audience_share */
                        audience_share?: (number|null);

                        /** TrendInsightMetrics trend_change_percent */
                        trend_change_percent?: (number|null);
                    }

                    /** Represents a TrendInsightMetrics. */
                    class TrendInsightMetrics implements ITrendInsightMetrics {

                        /**
                         * Constructs a new TrendInsightMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ITrendInsightMetrics);

                        /** TrendInsightMetrics views_count. */
                        public views_count: number;

                        /** TrendInsightMetrics audience_share. */
                        public audience_share: number;

                        /** TrendInsightMetrics trend_change_percent. */
                        public trend_change_percent: number;

                        /**
                         * Creates a new TrendInsightMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TrendInsightMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ITrendInsightMetrics): google.ads.googleads.v23.services.TrendInsightMetrics;

                        /**
                         * Encodes the specified TrendInsightMetrics message. Does not implicitly {@link google.ads.googleads.v23.services.TrendInsightMetrics.verify|verify} messages.
                         * @param message TrendInsightMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ITrendInsightMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TrendInsightMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.TrendInsightMetrics.verify|verify} messages.
                         * @param message TrendInsightMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ITrendInsightMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TrendInsightMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TrendInsightMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.TrendInsightMetrics;

                        /**
                         * Decodes a TrendInsightMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TrendInsightMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.TrendInsightMetrics;

                        /**
                         * Verifies a TrendInsightMetrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TrendInsightMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TrendInsightMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.TrendInsightMetrics;

                        /**
                         * Creates a plain object from a TrendInsightMetrics message. Also converts values to other types if specified.
                         * @param message TrendInsightMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.TrendInsightMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TrendInsightMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TrendInsightMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a LanguageDistribution. */
                    interface ILanguageDistribution {

                        /** LanguageDistribution language_code */
                        language_code?: (string|null);

                        /** LanguageDistribution proportion */
                        proportion?: (number|null);
                    }

                    /** Represents a LanguageDistribution. */
                    class LanguageDistribution implements ILanguageDistribution {

                        /**
                         * Constructs a new LanguageDistribution.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ILanguageDistribution);

                        /** LanguageDistribution language_code. */
                        public language_code: string;

                        /** LanguageDistribution proportion. */
                        public proportion: number;

                        /**
                         * Creates a new LanguageDistribution instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LanguageDistribution instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ILanguageDistribution): google.ads.googleads.v23.services.LanguageDistribution;

                        /**
                         * Encodes the specified LanguageDistribution message. Does not implicitly {@link google.ads.googleads.v23.services.LanguageDistribution.verify|verify} messages.
                         * @param message LanguageDistribution message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ILanguageDistribution, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LanguageDistribution message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.LanguageDistribution.verify|verify} messages.
                         * @param message LanguageDistribution message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ILanguageDistribution, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LanguageDistribution message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LanguageDistribution
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.LanguageDistribution;

                        /**
                         * Decodes a LanguageDistribution message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LanguageDistribution
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.LanguageDistribution;

                        /**
                         * Verifies a LanguageDistribution message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LanguageDistribution message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LanguageDistribution
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.LanguageDistribution;

                        /**
                         * Creates a plain object from a LanguageDistribution message. Also converts values to other types if specified.
                         * @param message LanguageDistribution
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.LanguageDistribution, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LanguageDistribution to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LanguageDistribution
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ConversionAdjustmentUploadService */
                    class ConversionAdjustmentUploadService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ConversionAdjustmentUploadService 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 ConversionAdjustmentUploadService 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): ConversionAdjustmentUploadService;

                        /**
                         * Calls UploadConversionAdjustments.
                         * @param request UploadConversionAdjustmentsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UploadConversionAdjustmentsResponse
                         */
                        public uploadConversionAdjustments(request: google.ads.googleads.v23.services.IUploadConversionAdjustmentsRequest, callback: google.ads.googleads.v23.services.ConversionAdjustmentUploadService.UploadConversionAdjustmentsCallback): void;

                        /**
                         * Calls UploadConversionAdjustments.
                         * @param request UploadConversionAdjustmentsRequest message or plain object
                         * @returns Promise
                         */
                        public uploadConversionAdjustments(request: google.ads.googleads.v23.services.IUploadConversionAdjustmentsRequest): Promise<google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse>;
                    }

                    namespace ConversionAdjustmentUploadService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionAdjustmentUploadService|uploadConversionAdjustments}.
                         * @param error Error, if any
                         * @param [response] UploadConversionAdjustmentsResponse
                         */
                        type UploadConversionAdjustmentsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse) => void;
                    }

                    /** Properties of an UploadConversionAdjustmentsRequest. */
                    interface IUploadConversionAdjustmentsRequest {

                        /** UploadConversionAdjustmentsRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadConversionAdjustmentsRequest conversion_adjustments */
                        conversion_adjustments?: (google.ads.googleads.v23.services.IConversionAdjustment[]|null);

                        /** UploadConversionAdjustmentsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** UploadConversionAdjustmentsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** UploadConversionAdjustmentsRequest job_id */
                        job_id?: (number|null);
                    }

                    /** Represents an UploadConversionAdjustmentsRequest. */
                    class UploadConversionAdjustmentsRequest implements IUploadConversionAdjustmentsRequest {

                        /**
                         * Constructs a new UploadConversionAdjustmentsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadConversionAdjustmentsRequest);

                        /** UploadConversionAdjustmentsRequest customer_id. */
                        public customer_id: string;

                        /** UploadConversionAdjustmentsRequest conversion_adjustments. */
                        public conversion_adjustments: google.ads.googleads.v23.services.IConversionAdjustment[];

                        /** UploadConversionAdjustmentsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** UploadConversionAdjustmentsRequest validate_only. */
                        public validate_only: boolean;

                        /** UploadConversionAdjustmentsRequest job_id. */
                        public job_id?: (number|null);

                        /**
                         * Creates a new UploadConversionAdjustmentsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadConversionAdjustmentsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadConversionAdjustmentsRequest): google.ads.googleads.v23.services.UploadConversionAdjustmentsRequest;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.UploadConversionAdjustmentsRequest.verify|verify} messages.
                         * @param message UploadConversionAdjustmentsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadConversionAdjustmentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadConversionAdjustmentsRequest.verify|verify} messages.
                         * @param message UploadConversionAdjustmentsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadConversionAdjustmentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadConversionAdjustmentsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadConversionAdjustmentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadConversionAdjustmentsRequest;

                        /**
                         * Decodes an UploadConversionAdjustmentsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadConversionAdjustmentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadConversionAdjustmentsRequest;

                        /**
                         * Verifies an UploadConversionAdjustmentsRequest message.
                         * @param message Plain 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 UploadConversionAdjustmentsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadConversionAdjustmentsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadConversionAdjustmentsRequest;

                        /**
                         * Creates a plain object from an UploadConversionAdjustmentsRequest message. Also converts values to other types if specified.
                         * @param message UploadConversionAdjustmentsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadConversionAdjustmentsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadConversionAdjustmentsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadConversionAdjustmentsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UploadConversionAdjustmentsResponse. */
                    interface IUploadConversionAdjustmentsResponse {

                        /** UploadConversionAdjustmentsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadConversionAdjustmentsResponse results */
                        results?: (google.ads.googleads.v23.services.IConversionAdjustmentResult[]|null);

                        /** UploadConversionAdjustmentsResponse job_id */
                        job_id?: (number|null);
                    }

                    /** Represents an UploadConversionAdjustmentsResponse. */
                    class UploadConversionAdjustmentsResponse implements IUploadConversionAdjustmentsResponse {

                        /**
                         * Constructs a new UploadConversionAdjustmentsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadConversionAdjustmentsResponse);

                        /** UploadConversionAdjustmentsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadConversionAdjustmentsResponse results. */
                        public results: google.ads.googleads.v23.services.IConversionAdjustmentResult[];

                        /** UploadConversionAdjustmentsResponse job_id. */
                        public job_id: number;

                        /**
                         * Creates a new UploadConversionAdjustmentsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadConversionAdjustmentsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadConversionAdjustmentsResponse): google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse.verify|verify} messages.
                         * @param message UploadConversionAdjustmentsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadConversionAdjustmentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse.verify|verify} messages.
                         * @param message UploadConversionAdjustmentsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadConversionAdjustmentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadConversionAdjustmentsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadConversionAdjustmentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse;

                        /**
                         * Decodes an UploadConversionAdjustmentsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadConversionAdjustmentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse;

                        /**
                         * Verifies an UploadConversionAdjustmentsResponse message.
                         * @param message Plain 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 UploadConversionAdjustmentsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadConversionAdjustmentsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse;

                        /**
                         * Creates a plain object from an UploadConversionAdjustmentsResponse message. Also converts values to other types if specified.
                         * @param message UploadConversionAdjustmentsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadConversionAdjustmentsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadConversionAdjustmentsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadConversionAdjustmentsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionAdjustment. */
                    interface IConversionAdjustment {

                        /** ConversionAdjustment gclid_date_time_pair */
                        gclid_date_time_pair?: (google.ads.googleads.v23.services.IGclidDateTimePair|null);

                        /** ConversionAdjustment order_id */
                        order_id?: (string|null);

                        /** ConversionAdjustment conversion_action */
                        conversion_action?: (string|null);

                        /** ConversionAdjustment adjustment_date_time */
                        adjustment_date_time?: (string|null);

                        /** ConversionAdjustment adjustment_type */
                        adjustment_type?: (google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|null);

                        /** ConversionAdjustment restatement_value */
                        restatement_value?: (google.ads.googleads.v23.services.IRestatementValue|null);

                        /** ConversionAdjustment user_identifiers */
                        user_identifiers?: (google.ads.googleads.v23.common.IUserIdentifier[]|null);

                        /** ConversionAdjustment user_agent */
                        user_agent?: (string|null);
                    }

                    /** Represents a ConversionAdjustment. */
                    class ConversionAdjustment implements IConversionAdjustment {

                        /**
                         * Constructs a new ConversionAdjustment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionAdjustment);

                        /** ConversionAdjustment gclid_date_time_pair. */
                        public gclid_date_time_pair?: (google.ads.googleads.v23.services.IGclidDateTimePair|null);

                        /** ConversionAdjustment order_id. */
                        public order_id?: (string|null);

                        /** ConversionAdjustment conversion_action. */
                        public conversion_action?: (string|null);

                        /** ConversionAdjustment adjustment_date_time. */
                        public adjustment_date_time?: (string|null);

                        /** ConversionAdjustment adjustment_type. */
                        public adjustment_type: (google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType);

                        /** ConversionAdjustment restatement_value. */
                        public restatement_value?: (google.ads.googleads.v23.services.IRestatementValue|null);

                        /** ConversionAdjustment user_identifiers. */
                        public user_identifiers: google.ads.googleads.v23.common.IUserIdentifier[];

                        /** ConversionAdjustment user_agent. */
                        public user_agent?: (string|null);

                        /**
                         * Creates a new ConversionAdjustment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAdjustment instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionAdjustment): google.ads.googleads.v23.services.ConversionAdjustment;

                        /**
                         * Encodes the specified ConversionAdjustment message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionAdjustment.verify|verify} messages.
                         * @param message ConversionAdjustment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustment message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionAdjustment.verify|verify} messages.
                         * @param message ConversionAdjustment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionAdjustment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionAdjustment;

                        /**
                         * Decodes a ConversionAdjustment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionAdjustment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionAdjustment;

                        /**
                         * Verifies a ConversionAdjustment message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionAdjustment
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionAdjustment;

                        /**
                         * Creates a plain object from a ConversionAdjustment message. Also converts values to other types if specified.
                         * @param message ConversionAdjustment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionAdjustment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionAdjustment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RestatementValue. */
                    interface IRestatementValue {

                        /** RestatementValue adjusted_value */
                        adjusted_value?: (number|null);

                        /** RestatementValue currency_code */
                        currency_code?: (string|null);
                    }

                    /** Represents a RestatementValue. */
                    class RestatementValue implements IRestatementValue {

                        /**
                         * Constructs a new RestatementValue.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRestatementValue);

                        /** RestatementValue adjusted_value. */
                        public adjusted_value?: (number|null);

                        /** RestatementValue currency_code. */
                        public currency_code?: (string|null);

                        /**
                         * Creates a new RestatementValue instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RestatementValue instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRestatementValue): google.ads.googleads.v23.services.RestatementValue;

                        /**
                         * Encodes the specified RestatementValue message. Does not implicitly {@link google.ads.googleads.v23.services.RestatementValue.verify|verify} messages.
                         * @param message RestatementValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRestatementValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RestatementValue message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RestatementValue.verify|verify} messages.
                         * @param message RestatementValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRestatementValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RestatementValue message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RestatementValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RestatementValue;

                        /**
                         * Decodes a RestatementValue message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RestatementValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RestatementValue;

                        /**
                         * Verifies a RestatementValue message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RestatementValue message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RestatementValue
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RestatementValue;

                        /**
                         * Creates a plain object from a RestatementValue message. Also converts values to other types if specified.
                         * @param message RestatementValue
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RestatementValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RestatementValue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RestatementValue
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GclidDateTimePair. */
                    interface IGclidDateTimePair {

                        /** GclidDateTimePair gclid */
                        gclid?: (string|null);

                        /** GclidDateTimePair conversion_date_time */
                        conversion_date_time?: (string|null);
                    }

                    /** Represents a GclidDateTimePair. */
                    class GclidDateTimePair implements IGclidDateTimePair {

                        /**
                         * Constructs a new GclidDateTimePair.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGclidDateTimePair);

                        /** GclidDateTimePair gclid. */
                        public gclid?: (string|null);

                        /** GclidDateTimePair conversion_date_time. */
                        public conversion_date_time?: (string|null);

                        /**
                         * Creates a new GclidDateTimePair instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GclidDateTimePair instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGclidDateTimePair): google.ads.googleads.v23.services.GclidDateTimePair;

                        /**
                         * Encodes the specified GclidDateTimePair message. Does not implicitly {@link google.ads.googleads.v23.services.GclidDateTimePair.verify|verify} messages.
                         * @param message GclidDateTimePair message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGclidDateTimePair, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GclidDateTimePair message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GclidDateTimePair.verify|verify} messages.
                         * @param message GclidDateTimePair message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGclidDateTimePair, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GclidDateTimePair message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GclidDateTimePair
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GclidDateTimePair;

                        /**
                         * Decodes a GclidDateTimePair message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GclidDateTimePair
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GclidDateTimePair;

                        /**
                         * Verifies a GclidDateTimePair message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GclidDateTimePair message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GclidDateTimePair
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GclidDateTimePair;

                        /**
                         * Creates a plain object from a GclidDateTimePair message. Also converts values to other types if specified.
                         * @param message GclidDateTimePair
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GclidDateTimePair, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GclidDateTimePair to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GclidDateTimePair
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionAdjustmentResult. */
                    interface IConversionAdjustmentResult {

                        /** ConversionAdjustmentResult gclid_date_time_pair */
                        gclid_date_time_pair?: (google.ads.googleads.v23.services.IGclidDateTimePair|null);

                        /** ConversionAdjustmentResult order_id */
                        order_id?: (string|null);

                        /** ConversionAdjustmentResult conversion_action */
                        conversion_action?: (string|null);

                        /** ConversionAdjustmentResult adjustment_date_time */
                        adjustment_date_time?: (string|null);

                        /** ConversionAdjustmentResult adjustment_type */
                        adjustment_type?: (google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|null);
                    }

                    /** Represents a ConversionAdjustmentResult. */
                    class ConversionAdjustmentResult implements IConversionAdjustmentResult {

                        /**
                         * Constructs a new ConversionAdjustmentResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionAdjustmentResult);

                        /** ConversionAdjustmentResult gclid_date_time_pair. */
                        public gclid_date_time_pair?: (google.ads.googleads.v23.services.IGclidDateTimePair|null);

                        /** ConversionAdjustmentResult order_id. */
                        public order_id: string;

                        /** ConversionAdjustmentResult conversion_action. */
                        public conversion_action?: (string|null);

                        /** ConversionAdjustmentResult adjustment_date_time. */
                        public adjustment_date_time?: (string|null);

                        /** ConversionAdjustmentResult adjustment_type. */
                        public adjustment_type: (google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v23.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType);

                        /**
                         * Creates a new ConversionAdjustmentResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAdjustmentResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionAdjustmentResult): google.ads.googleads.v23.services.ConversionAdjustmentResult;

                        /**
                         * Encodes the specified ConversionAdjustmentResult message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionAdjustmentResult.verify|verify} messages.
                         * @param message ConversionAdjustmentResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionAdjustmentResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustmentResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionAdjustmentResult.verify|verify} messages.
                         * @param message ConversionAdjustmentResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionAdjustmentResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustmentResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionAdjustmentResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionAdjustmentResult;

                        /**
                         * Decodes a ConversionAdjustmentResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionAdjustmentResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionAdjustmentResult;

                        /**
                         * Verifies a ConversionAdjustmentResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustmentResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionAdjustmentResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionAdjustmentResult;

                        /**
                         * Creates a plain object from a ConversionAdjustmentResult message. Also converts values to other types if specified.
                         * @param message ConversionAdjustmentResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionAdjustmentResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustmentResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionAdjustmentResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ConversionUploadService */
                    class ConversionUploadService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ConversionUploadService 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 ConversionUploadService 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): ConversionUploadService;

                        /**
                         * Calls UploadClickConversions.
                         * @param request UploadClickConversionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UploadClickConversionsResponse
                         */
                        public uploadClickConversions(request: google.ads.googleads.v23.services.IUploadClickConversionsRequest, callback: google.ads.googleads.v23.services.ConversionUploadService.UploadClickConversionsCallback): void;

                        /**
                         * Calls UploadClickConversions.
                         * @param request UploadClickConversionsRequest message or plain object
                         * @returns Promise
                         */
                        public uploadClickConversions(request: google.ads.googleads.v23.services.IUploadClickConversionsRequest): Promise<google.ads.googleads.v23.services.UploadClickConversionsResponse>;

                        /**
                         * Calls UploadCallConversions.
                         * @param request UploadCallConversionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UploadCallConversionsResponse
                         */
                        public uploadCallConversions(request: google.ads.googleads.v23.services.IUploadCallConversionsRequest, callback: google.ads.googleads.v23.services.ConversionUploadService.UploadCallConversionsCallback): void;

                        /**
                         * Calls UploadCallConversions.
                         * @param request UploadCallConversionsRequest message or plain object
                         * @returns Promise
                         */
                        public uploadCallConversions(request: google.ads.googleads.v23.services.IUploadCallConversionsRequest): Promise<google.ads.googleads.v23.services.UploadCallConversionsResponse>;
                    }

                    namespace ConversionUploadService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionUploadService|uploadClickConversions}.
                         * @param error Error, if any
                         * @param [response] UploadClickConversionsResponse
                         */
                        type UploadClickConversionsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.UploadClickConversionsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ConversionUploadService|uploadCallConversions}.
                         * @param error Error, if any
                         * @param [response] UploadCallConversionsResponse
                         */
                        type UploadCallConversionsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.UploadCallConversionsResponse) => void;
                    }

                    /** Properties of an UploadClickConversionsRequest. */
                    interface IUploadClickConversionsRequest {

                        /** UploadClickConversionsRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadClickConversionsRequest conversions */
                        conversions?: (google.ads.googleads.v23.services.IClickConversion[]|null);

                        /** UploadClickConversionsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** UploadClickConversionsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** UploadClickConversionsRequest job_id */
                        job_id?: (number|null);
                    }

                    /** Represents an UploadClickConversionsRequest. */
                    class UploadClickConversionsRequest implements IUploadClickConversionsRequest {

                        /**
                         * Constructs a new UploadClickConversionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadClickConversionsRequest);

                        /** UploadClickConversionsRequest customer_id. */
                        public customer_id: string;

                        /** UploadClickConversionsRequest conversions. */
                        public conversions: google.ads.googleads.v23.services.IClickConversion[];

                        /** UploadClickConversionsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** UploadClickConversionsRequest validate_only. */
                        public validate_only: boolean;

                        /** UploadClickConversionsRequest job_id. */
                        public job_id?: (number|null);

                        /**
                         * Creates a new UploadClickConversionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadClickConversionsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadClickConversionsRequest): google.ads.googleads.v23.services.UploadClickConversionsRequest;

                        /**
                         * Encodes the specified UploadClickConversionsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.UploadClickConversionsRequest.verify|verify} messages.
                         * @param message UploadClickConversionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadClickConversionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadClickConversionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadClickConversionsRequest.verify|verify} messages.
                         * @param message UploadClickConversionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadClickConversionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadClickConversionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadClickConversionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadClickConversionsRequest;

                        /**
                         * Decodes an UploadClickConversionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadClickConversionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadClickConversionsRequest;

                        /**
                         * Verifies an UploadClickConversionsRequest message.
                         * @param message Plain 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 UploadClickConversionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadClickConversionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadClickConversionsRequest;

                        /**
                         * Creates a plain object from an UploadClickConversionsRequest message. Also converts values to other types if specified.
                         * @param message UploadClickConversionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadClickConversionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadClickConversionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadClickConversionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UploadClickConversionsResponse. */
                    interface IUploadClickConversionsResponse {

                        /** UploadClickConversionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadClickConversionsResponse results */
                        results?: (google.ads.googleads.v23.services.IClickConversionResult[]|null);

                        /** UploadClickConversionsResponse job_id */
                        job_id?: (number|null);
                    }

                    /** Represents an UploadClickConversionsResponse. */
                    class UploadClickConversionsResponse implements IUploadClickConversionsResponse {

                        /**
                         * Constructs a new UploadClickConversionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadClickConversionsResponse);

                        /** UploadClickConversionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadClickConversionsResponse results. */
                        public results: google.ads.googleads.v23.services.IClickConversionResult[];

                        /** UploadClickConversionsResponse job_id. */
                        public job_id: number;

                        /**
                         * Creates a new UploadClickConversionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadClickConversionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadClickConversionsResponse): google.ads.googleads.v23.services.UploadClickConversionsResponse;

                        /**
                         * Encodes the specified UploadClickConversionsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.UploadClickConversionsResponse.verify|verify} messages.
                         * @param message UploadClickConversionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadClickConversionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadClickConversionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadClickConversionsResponse.verify|verify} messages.
                         * @param message UploadClickConversionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadClickConversionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadClickConversionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadClickConversionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadClickConversionsResponse;

                        /**
                         * Decodes an UploadClickConversionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadClickConversionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadClickConversionsResponse;

                        /**
                         * Verifies an UploadClickConversionsResponse message.
                         * @param message Plain 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 UploadClickConversionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadClickConversionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadClickConversionsResponse;

                        /**
                         * Creates a plain object from an UploadClickConversionsResponse message. Also converts values to other types if specified.
                         * @param message UploadClickConversionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadClickConversionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadClickConversionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadClickConversionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UploadCallConversionsRequest. */
                    interface IUploadCallConversionsRequest {

                        /** UploadCallConversionsRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadCallConversionsRequest conversions */
                        conversions?: (google.ads.googleads.v23.services.ICallConversion[]|null);

                        /** UploadCallConversionsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** UploadCallConversionsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents an UploadCallConversionsRequest. */
                    class UploadCallConversionsRequest implements IUploadCallConversionsRequest {

                        /**
                         * Constructs a new UploadCallConversionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadCallConversionsRequest);

                        /** UploadCallConversionsRequest customer_id. */
                        public customer_id: string;

                        /** UploadCallConversionsRequest conversions. */
                        public conversions: google.ads.googleads.v23.services.ICallConversion[];

                        /** UploadCallConversionsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** UploadCallConversionsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new UploadCallConversionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadCallConversionsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadCallConversionsRequest): google.ads.googleads.v23.services.UploadCallConversionsRequest;

                        /**
                         * Encodes the specified UploadCallConversionsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.UploadCallConversionsRequest.verify|verify} messages.
                         * @param message UploadCallConversionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadCallConversionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadCallConversionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadCallConversionsRequest.verify|verify} messages.
                         * @param message UploadCallConversionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadCallConversionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadCallConversionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadCallConversionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadCallConversionsRequest;

                        /**
                         * Decodes an UploadCallConversionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadCallConversionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadCallConversionsRequest;

                        /**
                         * Verifies an UploadCallConversionsRequest message.
                         * @param message Plain 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 UploadCallConversionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadCallConversionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadCallConversionsRequest;

                        /**
                         * Creates a plain object from an UploadCallConversionsRequest message. Also converts values to other types if specified.
                         * @param message UploadCallConversionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadCallConversionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadCallConversionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadCallConversionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UploadCallConversionsResponse. */
                    interface IUploadCallConversionsResponse {

                        /** UploadCallConversionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadCallConversionsResponse results */
                        results?: (google.ads.googleads.v23.services.ICallConversionResult[]|null);
                    }

                    /** Represents an UploadCallConversionsResponse. */
                    class UploadCallConversionsResponse implements IUploadCallConversionsResponse {

                        /**
                         * Constructs a new UploadCallConversionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadCallConversionsResponse);

                        /** UploadCallConversionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadCallConversionsResponse results. */
                        public results: google.ads.googleads.v23.services.ICallConversionResult[];

                        /**
                         * Creates a new UploadCallConversionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadCallConversionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadCallConversionsResponse): google.ads.googleads.v23.services.UploadCallConversionsResponse;

                        /**
                         * Encodes the specified UploadCallConversionsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.UploadCallConversionsResponse.verify|verify} messages.
                         * @param message UploadCallConversionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadCallConversionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadCallConversionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadCallConversionsResponse.verify|verify} messages.
                         * @param message UploadCallConversionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadCallConversionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadCallConversionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadCallConversionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadCallConversionsResponse;

                        /**
                         * Decodes an UploadCallConversionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadCallConversionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadCallConversionsResponse;

                        /**
                         * Verifies an UploadCallConversionsResponse message.
                         * @param message Plain 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 UploadCallConversionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadCallConversionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadCallConversionsResponse;

                        /**
                         * Creates a plain object from an UploadCallConversionsResponse message. Also converts values to other types if specified.
                         * @param message UploadCallConversionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadCallConversionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadCallConversionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadCallConversionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ClickConversion. */
                    interface IClickConversion {

                        /** ClickConversion gclid */
                        gclid?: (string|null);

                        /** ClickConversion gbraid */
                        gbraid?: (string|null);

                        /** ClickConversion wbraid */
                        wbraid?: (string|null);

                        /** ClickConversion conversion_action */
                        conversion_action?: (string|null);

                        /** ClickConversion conversion_date_time */
                        conversion_date_time?: (string|null);

                        /** ClickConversion conversion_value */
                        conversion_value?: (number|null);

                        /** ClickConversion currency_code */
                        currency_code?: (string|null);

                        /** ClickConversion order_id */
                        order_id?: (string|null);

                        /** ClickConversion external_attribution_data */
                        external_attribution_data?: (google.ads.googleads.v23.services.IExternalAttributionData|null);

                        /** ClickConversion custom_variables */
                        custom_variables?: (google.ads.googleads.v23.services.ICustomVariable[]|null);

                        /** ClickConversion cart_data */
                        cart_data?: (google.ads.googleads.v23.services.ICartData|null);

                        /** ClickConversion user_identifiers */
                        user_identifiers?: (google.ads.googleads.v23.common.IUserIdentifier[]|null);

                        /** ClickConversion conversion_environment */
                        conversion_environment?: (google.ads.googleads.v23.enums.ConversionEnvironmentEnum.ConversionEnvironment|keyof typeof google.ads.googleads.v23.enums.ConversionEnvironmentEnum.ConversionEnvironment|null);

                        /** ClickConversion consent */
                        consent?: (google.ads.googleads.v23.common.IConsent|null);

                        /** ClickConversion customer_type */
                        customer_type?: (google.ads.googleads.v23.enums.ConversionCustomerTypeEnum.ConversionCustomerType|keyof typeof google.ads.googleads.v23.enums.ConversionCustomerTypeEnum.ConversionCustomerType|null);

                        /** ClickConversion user_ip_address */
                        user_ip_address?: (string|null);

                        /** ClickConversion session_attributes_encoded */
                        session_attributes_encoded?: (Uint8Array|Buffer|string|null);

                        /** ClickConversion session_attributes_key_value_pairs */
                        session_attributes_key_value_pairs?: (google.ads.googleads.v23.services.ISessionAttributesKeyValuePairs|null);
                    }

                    /** Represents a ClickConversion. */
                    class ClickConversion implements IClickConversion {

                        /**
                         * Constructs a new ClickConversion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IClickConversion);

                        /** ClickConversion gclid. */
                        public gclid?: (string|null);

                        /** ClickConversion gbraid. */
                        public gbraid: string;

                        /** ClickConversion wbraid. */
                        public wbraid: string;

                        /** ClickConversion conversion_action. */
                        public conversion_action?: (string|null);

                        /** ClickConversion conversion_date_time. */
                        public conversion_date_time?: (string|null);

                        /** ClickConversion conversion_value. */
                        public conversion_value?: (number|null);

                        /** ClickConversion currency_code. */
                        public currency_code?: (string|null);

                        /** ClickConversion order_id. */
                        public order_id?: (string|null);

                        /** ClickConversion external_attribution_data. */
                        public external_attribution_data?: (google.ads.googleads.v23.services.IExternalAttributionData|null);

                        /** ClickConversion custom_variables. */
                        public custom_variables: google.ads.googleads.v23.services.ICustomVariable[];

                        /** ClickConversion cart_data. */
                        public cart_data?: (google.ads.googleads.v23.services.ICartData|null);

                        /** ClickConversion user_identifiers. */
                        public user_identifiers: google.ads.googleads.v23.common.IUserIdentifier[];

                        /** ClickConversion conversion_environment. */
                        public conversion_environment: (google.ads.googleads.v23.enums.ConversionEnvironmentEnum.ConversionEnvironment|keyof typeof google.ads.googleads.v23.enums.ConversionEnvironmentEnum.ConversionEnvironment);

                        /** ClickConversion consent. */
                        public consent?: (google.ads.googleads.v23.common.IConsent|null);

                        /** ClickConversion customer_type. */
                        public customer_type: (google.ads.googleads.v23.enums.ConversionCustomerTypeEnum.ConversionCustomerType|keyof typeof google.ads.googleads.v23.enums.ConversionCustomerTypeEnum.ConversionCustomerType);

                        /** ClickConversion user_ip_address. */
                        public user_ip_address?: (string|null);

                        /** ClickConversion session_attributes_encoded. */
                        public session_attributes_encoded?: (Uint8Array|Buffer|string|null);

                        /** ClickConversion session_attributes_key_value_pairs. */
                        public session_attributes_key_value_pairs?: (google.ads.googleads.v23.services.ISessionAttributesKeyValuePairs|null);

                        /** ClickConversion session_attributes. */
                        public session_attributes?: ("session_attributes_encoded"|"session_attributes_key_value_pairs");

                        /**
                         * Creates a new ClickConversion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickConversion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IClickConversion): google.ads.googleads.v23.services.ClickConversion;

                        /**
                         * Encodes the specified ClickConversion message. Does not implicitly {@link google.ads.googleads.v23.services.ClickConversion.verify|verify} messages.
                         * @param message ClickConversion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IClickConversion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickConversion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ClickConversion.verify|verify} messages.
                         * @param message ClickConversion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IClickConversion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickConversion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ClickConversion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ClickConversion;

                        /**
                         * Decodes a ClickConversion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ClickConversion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ClickConversion;

                        /**
                         * Verifies a ClickConversion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickConversion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ClickConversion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ClickConversion;

                        /**
                         * Creates a plain object from a ClickConversion message. Also converts values to other types if specified.
                         * @param message ClickConversion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ClickConversion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickConversion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ClickConversion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CallConversion. */
                    interface ICallConversion {

                        /** CallConversion caller_id */
                        caller_id?: (string|null);

                        /** CallConversion call_start_date_time */
                        call_start_date_time?: (string|null);

                        /** CallConversion conversion_action */
                        conversion_action?: (string|null);

                        /** CallConversion conversion_date_time */
                        conversion_date_time?: (string|null);

                        /** CallConversion conversion_value */
                        conversion_value?: (number|null);

                        /** CallConversion currency_code */
                        currency_code?: (string|null);

                        /** CallConversion custom_variables */
                        custom_variables?: (google.ads.googleads.v23.services.ICustomVariable[]|null);

                        /** CallConversion consent */
                        consent?: (google.ads.googleads.v23.common.IConsent|null);
                    }

                    /** Represents a CallConversion. */
                    class CallConversion implements ICallConversion {

                        /**
                         * Constructs a new CallConversion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICallConversion);

                        /** CallConversion caller_id. */
                        public caller_id?: (string|null);

                        /** CallConversion call_start_date_time. */
                        public call_start_date_time?: (string|null);

                        /** CallConversion conversion_action. */
                        public conversion_action?: (string|null);

                        /** CallConversion conversion_date_time. */
                        public conversion_date_time?: (string|null);

                        /** CallConversion conversion_value. */
                        public conversion_value?: (number|null);

                        /** CallConversion currency_code. */
                        public currency_code?: (string|null);

                        /** CallConversion custom_variables. */
                        public custom_variables: google.ads.googleads.v23.services.ICustomVariable[];

                        /** CallConversion consent. */
                        public consent?: (google.ads.googleads.v23.common.IConsent|null);

                        /**
                         * Creates a new CallConversion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallConversion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICallConversion): google.ads.googleads.v23.services.CallConversion;

                        /**
                         * Encodes the specified CallConversion message. Does not implicitly {@link google.ads.googleads.v23.services.CallConversion.verify|verify} messages.
                         * @param message CallConversion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICallConversion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallConversion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CallConversion.verify|verify} messages.
                         * @param message CallConversion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICallConversion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallConversion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallConversion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CallConversion;

                        /**
                         * Decodes a CallConversion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallConversion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CallConversion;

                        /**
                         * Verifies a CallConversion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallConversion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallConversion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CallConversion;

                        /**
                         * Creates a plain object from a CallConversion message. Also converts values to other types if specified.
                         * @param message CallConversion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CallConversion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallConversion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallConversion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExternalAttributionData. */
                    interface IExternalAttributionData {

                        /** ExternalAttributionData external_attribution_credit */
                        external_attribution_credit?: (number|null);

                        /** ExternalAttributionData external_attribution_model */
                        external_attribution_model?: (string|null);
                    }

                    /** Represents an ExternalAttributionData. */
                    class ExternalAttributionData implements IExternalAttributionData {

                        /**
                         * Constructs a new ExternalAttributionData.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IExternalAttributionData);

                        /** ExternalAttributionData external_attribution_credit. */
                        public external_attribution_credit?: (number|null);

                        /** ExternalAttributionData external_attribution_model. */
                        public external_attribution_model?: (string|null);

                        /**
                         * Creates a new ExternalAttributionData instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExternalAttributionData instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IExternalAttributionData): google.ads.googleads.v23.services.ExternalAttributionData;

                        /**
                         * Encodes the specified ExternalAttributionData message. Does not implicitly {@link google.ads.googleads.v23.services.ExternalAttributionData.verify|verify} messages.
                         * @param message ExternalAttributionData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IExternalAttributionData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExternalAttributionData message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ExternalAttributionData.verify|verify} messages.
                         * @param message ExternalAttributionData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IExternalAttributionData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExternalAttributionData message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExternalAttributionData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ExternalAttributionData;

                        /**
                         * Decodes an ExternalAttributionData message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExternalAttributionData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ExternalAttributionData;

                        /**
                         * Verifies an ExternalAttributionData message.
                         * @param message Plain 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 ExternalAttributionData message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExternalAttributionData
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ExternalAttributionData;

                        /**
                         * Creates a plain object from an ExternalAttributionData message. Also converts values to other types if specified.
                         * @param message ExternalAttributionData
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ExternalAttributionData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExternalAttributionData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExternalAttributionData
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ClickConversionResult. */
                    interface IClickConversionResult {

                        /** ClickConversionResult gclid */
                        gclid?: (string|null);

                        /** ClickConversionResult gbraid */
                        gbraid?: (string|null);

                        /** ClickConversionResult wbraid */
                        wbraid?: (string|null);

                        /** ClickConversionResult conversion_action */
                        conversion_action?: (string|null);

                        /** ClickConversionResult conversion_date_time */
                        conversion_date_time?: (string|null);

                        /** ClickConversionResult user_identifiers */
                        user_identifiers?: (google.ads.googleads.v23.common.IUserIdentifier[]|null);
                    }

                    /** Represents a ClickConversionResult. */
                    class ClickConversionResult implements IClickConversionResult {

                        /**
                         * Constructs a new ClickConversionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IClickConversionResult);

                        /** ClickConversionResult gclid. */
                        public gclid?: (string|null);

                        /** ClickConversionResult gbraid. */
                        public gbraid: string;

                        /** ClickConversionResult wbraid. */
                        public wbraid: string;

                        /** ClickConversionResult conversion_action. */
                        public conversion_action?: (string|null);

                        /** ClickConversionResult conversion_date_time. */
                        public conversion_date_time?: (string|null);

                        /** ClickConversionResult user_identifiers. */
                        public user_identifiers: google.ads.googleads.v23.common.IUserIdentifier[];

                        /**
                         * Creates a new ClickConversionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickConversionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IClickConversionResult): google.ads.googleads.v23.services.ClickConversionResult;

                        /**
                         * Encodes the specified ClickConversionResult message. Does not implicitly {@link google.ads.googleads.v23.services.ClickConversionResult.verify|verify} messages.
                         * @param message ClickConversionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IClickConversionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickConversionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ClickConversionResult.verify|verify} messages.
                         * @param message ClickConversionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IClickConversionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickConversionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ClickConversionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ClickConversionResult;

                        /**
                         * Decodes a ClickConversionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ClickConversionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ClickConversionResult;

                        /**
                         * Verifies a ClickConversionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickConversionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ClickConversionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ClickConversionResult;

                        /**
                         * Creates a plain object from a ClickConversionResult message. Also converts values to other types if specified.
                         * @param message ClickConversionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ClickConversionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickConversionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ClickConversionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CallConversionResult. */
                    interface ICallConversionResult {

                        /** CallConversionResult caller_id */
                        caller_id?: (string|null);

                        /** CallConversionResult call_start_date_time */
                        call_start_date_time?: (string|null);

                        /** CallConversionResult conversion_action */
                        conversion_action?: (string|null);

                        /** CallConversionResult conversion_date_time */
                        conversion_date_time?: (string|null);
                    }

                    /** Represents a CallConversionResult. */
                    class CallConversionResult implements ICallConversionResult {

                        /**
                         * Constructs a new CallConversionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICallConversionResult);

                        /** CallConversionResult caller_id. */
                        public caller_id?: (string|null);

                        /** CallConversionResult call_start_date_time. */
                        public call_start_date_time?: (string|null);

                        /** CallConversionResult conversion_action. */
                        public conversion_action?: (string|null);

                        /** CallConversionResult conversion_date_time. */
                        public conversion_date_time?: (string|null);

                        /**
                         * Creates a new CallConversionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallConversionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICallConversionResult): google.ads.googleads.v23.services.CallConversionResult;

                        /**
                         * Encodes the specified CallConversionResult message. Does not implicitly {@link google.ads.googleads.v23.services.CallConversionResult.verify|verify} messages.
                         * @param message CallConversionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICallConversionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallConversionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CallConversionResult.verify|verify} messages.
                         * @param message CallConversionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICallConversionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallConversionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CallConversionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CallConversionResult;

                        /**
                         * Decodes a CallConversionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallConversionResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CallConversionResult;

                        /**
                         * Verifies a CallConversionResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallConversionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CallConversionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CallConversionResult;

                        /**
                         * Creates a plain object from a CallConversionResult message. Also converts values to other types if specified.
                         * @param message CallConversionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CallConversionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallConversionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CallConversionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomVariable. */
                    interface ICustomVariable {

                        /** CustomVariable conversion_custom_variable */
                        conversion_custom_variable?: (string|null);

                        /** CustomVariable value */
                        value?: (string|null);
                    }

                    /** Represents a CustomVariable. */
                    class CustomVariable implements ICustomVariable {

                        /**
                         * Constructs a new CustomVariable.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomVariable);

                        /** CustomVariable conversion_custom_variable. */
                        public conversion_custom_variable: string;

                        /** CustomVariable value. */
                        public value: string;

                        /**
                         * Creates a new CustomVariable instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomVariable instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomVariable): google.ads.googleads.v23.services.CustomVariable;

                        /**
                         * Encodes the specified CustomVariable message. Does not implicitly {@link google.ads.googleads.v23.services.CustomVariable.verify|verify} messages.
                         * @param message CustomVariable message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomVariable, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomVariable message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomVariable.verify|verify} messages.
                         * @param message CustomVariable message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomVariable, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomVariable message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomVariable
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomVariable;

                        /**
                         * Decodes a CustomVariable message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomVariable
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomVariable;

                        /**
                         * Verifies a CustomVariable message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomVariable message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomVariable
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomVariable;

                        /**
                         * Creates a plain object from a CustomVariable message. Also converts values to other types if specified.
                         * @param message CustomVariable
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomVariable, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomVariable to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomVariable
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CartData. */
                    interface ICartData {

                        /** CartData merchant_id */
                        merchant_id?: (number|null);

                        /** CartData feed_country_code */
                        feed_country_code?: (string|null);

                        /** CartData feed_language_code */
                        feed_language_code?: (string|null);

                        /** CartData local_transaction_cost */
                        local_transaction_cost?: (number|null);

                        /** CartData items */
                        items?: (google.ads.googleads.v23.services.CartData.IItem[]|null);
                    }

                    /** Represents a CartData. */
                    class CartData implements ICartData {

                        /**
                         * Constructs a new CartData.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICartData);

                        /** CartData merchant_id. */
                        public merchant_id: number;

                        /** CartData feed_country_code. */
                        public feed_country_code: string;

                        /** CartData feed_language_code. */
                        public feed_language_code: string;

                        /** CartData local_transaction_cost. */
                        public local_transaction_cost: number;

                        /** CartData items. */
                        public items: google.ads.googleads.v23.services.CartData.IItem[];

                        /**
                         * Creates a new CartData instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CartData instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICartData): google.ads.googleads.v23.services.CartData;

                        /**
                         * Encodes the specified CartData message. Does not implicitly {@link google.ads.googleads.v23.services.CartData.verify|verify} messages.
                         * @param message CartData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICartData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CartData message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CartData.verify|verify} messages.
                         * @param message CartData message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICartData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CartData message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CartData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CartData;

                        /**
                         * Decodes a CartData message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CartData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CartData;

                        /**
                         * Verifies a CartData message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CartData message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CartData
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CartData;

                        /**
                         * Creates a plain object from a CartData message. Also converts values to other types if specified.
                         * @param message CartData
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CartData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CartData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CartData
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CartData {

                        /** Properties of an Item. */
                        interface IItem {

                            /** Item product_id */
                            product_id?: (string|null);

                            /** Item quantity */
                            quantity?: (number|null);

                            /** Item unit_price */
                            unit_price?: (number|null);
                        }

                        /** Represents an Item. */
                        class Item implements IItem {

                            /**
                             * Constructs a new Item.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.CartData.IItem);

                            /** Item product_id. */
                            public product_id: string;

                            /** Item quantity. */
                            public quantity: number;

                            /** Item unit_price. */
                            public unit_price: number;

                            /**
                             * Creates a new Item instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Item instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.CartData.IItem): google.ads.googleads.v23.services.CartData.Item;

                            /**
                             * Encodes the specified Item message. Does not implicitly {@link google.ads.googleads.v23.services.CartData.Item.verify|verify} messages.
                             * @param message Item message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.CartData.IItem, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Item message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CartData.Item.verify|verify} messages.
                             * @param message Item message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.CartData.IItem, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an Item message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Item
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CartData.Item;

                            /**
                             * Decodes an Item message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Item
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CartData.Item;

                            /**
                             * Verifies an Item message.
                             * @param message Plain 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 Item message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Item
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CartData.Item;

                            /**
                             * Creates a plain object from an Item message. Also converts values to other types if specified.
                             * @param message Item
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.CartData.Item, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Item to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Item
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a SessionAttributeKeyValuePair. */
                    interface ISessionAttributeKeyValuePair {

                        /** SessionAttributeKeyValuePair session_attribute_key */
                        session_attribute_key?: (string|null);

                        /** SessionAttributeKeyValuePair session_attribute_value */
                        session_attribute_value?: (string|null);
                    }

                    /** Represents a SessionAttributeKeyValuePair. */
                    class SessionAttributeKeyValuePair implements ISessionAttributeKeyValuePair {

                        /**
                         * Constructs a new SessionAttributeKeyValuePair.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISessionAttributeKeyValuePair);

                        /** SessionAttributeKeyValuePair session_attribute_key. */
                        public session_attribute_key: string;

                        /** SessionAttributeKeyValuePair session_attribute_value. */
                        public session_attribute_value: string;

                        /**
                         * Creates a new SessionAttributeKeyValuePair instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SessionAttributeKeyValuePair instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISessionAttributeKeyValuePair): google.ads.googleads.v23.services.SessionAttributeKeyValuePair;

                        /**
                         * Encodes the specified SessionAttributeKeyValuePair message. Does not implicitly {@link google.ads.googleads.v23.services.SessionAttributeKeyValuePair.verify|verify} messages.
                         * @param message SessionAttributeKeyValuePair message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISessionAttributeKeyValuePair, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SessionAttributeKeyValuePair message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SessionAttributeKeyValuePair.verify|verify} messages.
                         * @param message SessionAttributeKeyValuePair message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISessionAttributeKeyValuePair, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SessionAttributeKeyValuePair message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SessionAttributeKeyValuePair
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SessionAttributeKeyValuePair;

                        /**
                         * Decodes a SessionAttributeKeyValuePair message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SessionAttributeKeyValuePair
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SessionAttributeKeyValuePair;

                        /**
                         * Verifies a SessionAttributeKeyValuePair message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SessionAttributeKeyValuePair message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SessionAttributeKeyValuePair
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SessionAttributeKeyValuePair;

                        /**
                         * Creates a plain object from a SessionAttributeKeyValuePair message. Also converts values to other types if specified.
                         * @param message SessionAttributeKeyValuePair
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SessionAttributeKeyValuePair, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SessionAttributeKeyValuePair to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SessionAttributeKeyValuePair
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SessionAttributesKeyValuePairs. */
                    interface ISessionAttributesKeyValuePairs {

                        /** SessionAttributesKeyValuePairs key_value_pairs */
                        key_value_pairs?: (google.ads.googleads.v23.services.ISessionAttributeKeyValuePair[]|null);
                    }

                    /** Represents a SessionAttributesKeyValuePairs. */
                    class SessionAttributesKeyValuePairs implements ISessionAttributesKeyValuePairs {

                        /**
                         * Constructs a new SessionAttributesKeyValuePairs.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISessionAttributesKeyValuePairs);

                        /** SessionAttributesKeyValuePairs key_value_pairs. */
                        public key_value_pairs: google.ads.googleads.v23.services.ISessionAttributeKeyValuePair[];

                        /**
                         * Creates a new SessionAttributesKeyValuePairs instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SessionAttributesKeyValuePairs instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISessionAttributesKeyValuePairs): google.ads.googleads.v23.services.SessionAttributesKeyValuePairs;

                        /**
                         * Encodes the specified SessionAttributesKeyValuePairs message. Does not implicitly {@link google.ads.googleads.v23.services.SessionAttributesKeyValuePairs.verify|verify} messages.
                         * @param message SessionAttributesKeyValuePairs message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISessionAttributesKeyValuePairs, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SessionAttributesKeyValuePairs message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SessionAttributesKeyValuePairs.verify|verify} messages.
                         * @param message SessionAttributesKeyValuePairs message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISessionAttributesKeyValuePairs, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SessionAttributesKeyValuePairs message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SessionAttributesKeyValuePairs
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SessionAttributesKeyValuePairs;

                        /**
                         * Decodes a SessionAttributesKeyValuePairs message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SessionAttributesKeyValuePairs
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SessionAttributesKeyValuePairs;

                        /**
                         * Verifies a SessionAttributesKeyValuePairs message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SessionAttributesKeyValuePairs message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SessionAttributesKeyValuePairs
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SessionAttributesKeyValuePairs;

                        /**
                         * Creates a plain object from a SessionAttributesKeyValuePairs message. Also converts values to other types if specified.
                         * @param message SessionAttributesKeyValuePairs
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SessionAttributesKeyValuePairs, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SessionAttributesKeyValuePairs to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SessionAttributesKeyValuePairs
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomAudienceService */
                    class CustomAudienceService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomAudienceService 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 CustomAudienceService 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): CustomAudienceService;

                        /**
                         * Calls MutateCustomAudiences.
                         * @param request MutateCustomAudiencesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomAudiencesResponse
                         */
                        public mutateCustomAudiences(request: google.ads.googleads.v23.services.IMutateCustomAudiencesRequest, callback: google.ads.googleads.v23.services.CustomAudienceService.MutateCustomAudiencesCallback): void;

                        /**
                         * Calls MutateCustomAudiences.
                         * @param request MutateCustomAudiencesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomAudiences(request: google.ads.googleads.v23.services.IMutateCustomAudiencesRequest): Promise<google.ads.googleads.v23.services.MutateCustomAudiencesResponse>;
                    }

                    namespace CustomAudienceService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomAudienceService|mutateCustomAudiences}.
                         * @param error Error, if any
                         * @param [response] MutateCustomAudiencesResponse
                         */
                        type MutateCustomAudiencesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomAudiencesResponse) => void;
                    }

                    /** Properties of a MutateCustomAudiencesRequest. */
                    interface IMutateCustomAudiencesRequest {

                        /** MutateCustomAudiencesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomAudiencesRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomAudienceOperation[]|null);

                        /** MutateCustomAudiencesRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomAudiencesRequest. */
                    class MutateCustomAudiencesRequest implements IMutateCustomAudiencesRequest {

                        /**
                         * Constructs a new MutateCustomAudiencesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomAudiencesRequest);

                        /** MutateCustomAudiencesRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomAudiencesRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomAudienceOperation[];

                        /** MutateCustomAudiencesRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCustomAudiencesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomAudiencesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomAudiencesRequest): google.ads.googleads.v23.services.MutateCustomAudiencesRequest;

                        /**
                         * Encodes the specified MutateCustomAudiencesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomAudiencesRequest.verify|verify} messages.
                         * @param message MutateCustomAudiencesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomAudiencesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomAudiencesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomAudiencesRequest.verify|verify} messages.
                         * @param message MutateCustomAudiencesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomAudiencesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomAudiencesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomAudiencesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomAudiencesRequest;

                        /**
                         * Decodes a MutateCustomAudiencesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomAudiencesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomAudiencesRequest;

                        /**
                         * Verifies a MutateCustomAudiencesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomAudiencesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomAudiencesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomAudiencesRequest;

                        /**
                         * Creates a plain object from a MutateCustomAudiencesRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomAudiencesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomAudiencesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomAudiencesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomAudiencesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomAudienceOperation. */
                    interface ICustomAudienceOperation {

                        /** CustomAudienceOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomAudienceOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomAudience|null);

                        /** CustomAudienceOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomAudience|null);

                        /** CustomAudienceOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomAudienceOperation. */
                    class CustomAudienceOperation implements ICustomAudienceOperation {

                        /**
                         * Constructs a new CustomAudienceOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomAudienceOperation);

                        /** CustomAudienceOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomAudienceOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomAudience|null);

                        /** CustomAudienceOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomAudience|null);

                        /** CustomAudienceOperation remove. */
                        public remove?: (string|null);

                        /** CustomAudienceOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CustomAudienceOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAudienceOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomAudienceOperation): google.ads.googleads.v23.services.CustomAudienceOperation;

                        /**
                         * Encodes the specified CustomAudienceOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomAudienceOperation.verify|verify} messages.
                         * @param message CustomAudienceOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomAudienceOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomAudienceOperation.verify|verify} messages.
                         * @param message CustomAudienceOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomAudienceOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomAudienceOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomAudienceOperation;

                        /**
                         * Decodes a CustomAudienceOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomAudienceOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomAudienceOperation;

                        /**
                         * Verifies a CustomAudienceOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomAudienceOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomAudienceOperation;

                        /**
                         * Creates a plain object from a CustomAudienceOperation message. Also converts values to other types if specified.
                         * @param message CustomAudienceOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomAudienceOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomAudienceOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomAudiencesResponse. */
                    interface IMutateCustomAudiencesResponse {

                        /** MutateCustomAudiencesResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomAudienceResult[]|null);
                    }

                    /** Represents a MutateCustomAudiencesResponse. */
                    class MutateCustomAudiencesResponse implements IMutateCustomAudiencesResponse {

                        /**
                         * Constructs a new MutateCustomAudiencesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomAudiencesResponse);

                        /** MutateCustomAudiencesResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomAudienceResult[];

                        /**
                         * Creates a new MutateCustomAudiencesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomAudiencesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomAudiencesResponse): google.ads.googleads.v23.services.MutateCustomAudiencesResponse;

                        /**
                         * Encodes the specified MutateCustomAudiencesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomAudiencesResponse.verify|verify} messages.
                         * @param message MutateCustomAudiencesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomAudiencesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomAudiencesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomAudiencesResponse.verify|verify} messages.
                         * @param message MutateCustomAudiencesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomAudiencesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomAudiencesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomAudiencesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomAudiencesResponse;

                        /**
                         * Decodes a MutateCustomAudiencesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomAudiencesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomAudiencesResponse;

                        /**
                         * Verifies a MutateCustomAudiencesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomAudiencesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomAudiencesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomAudiencesResponse;

                        /**
                         * Creates a plain object from a MutateCustomAudiencesResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomAudiencesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomAudiencesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomAudiencesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomAudiencesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomAudienceResult. */
                    interface IMutateCustomAudienceResult {

                        /** MutateCustomAudienceResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomAudienceResult. */
                    class MutateCustomAudienceResult implements IMutateCustomAudienceResult {

                        /**
                         * Constructs a new MutateCustomAudienceResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomAudienceResult);

                        /** MutateCustomAudienceResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomAudienceResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomAudienceResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomAudienceResult): google.ads.googleads.v23.services.MutateCustomAudienceResult;

                        /**
                         * Encodes the specified MutateCustomAudienceResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomAudienceResult.verify|verify} messages.
                         * @param message MutateCustomAudienceResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomAudienceResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomAudienceResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomAudienceResult.verify|verify} messages.
                         * @param message MutateCustomAudienceResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomAudienceResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomAudienceResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomAudienceResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomAudienceResult;

                        /**
                         * Decodes a MutateCustomAudienceResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomAudienceResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomAudienceResult;

                        /**
                         * Verifies a MutateCustomAudienceResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomAudienceResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomAudienceResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomAudienceResult;

                        /**
                         * Creates a plain object from a MutateCustomAudienceResult message. Also converts values to other types if specified.
                         * @param message MutateCustomAudienceResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomAudienceResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomAudienceResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomAudienceResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomInterestService */
                    class CustomInterestService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomInterestService 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 CustomInterestService 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): CustomInterestService;

                        /**
                         * Calls MutateCustomInterests.
                         * @param request MutateCustomInterestsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomInterestsResponse
                         */
                        public mutateCustomInterests(request: google.ads.googleads.v23.services.IMutateCustomInterestsRequest, callback: google.ads.googleads.v23.services.CustomInterestService.MutateCustomInterestsCallback): void;

                        /**
                         * Calls MutateCustomInterests.
                         * @param request MutateCustomInterestsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomInterests(request: google.ads.googleads.v23.services.IMutateCustomInterestsRequest): Promise<google.ads.googleads.v23.services.MutateCustomInterestsResponse>;
                    }

                    namespace CustomInterestService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomInterestService|mutateCustomInterests}.
                         * @param error Error, if any
                         * @param [response] MutateCustomInterestsResponse
                         */
                        type MutateCustomInterestsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomInterestsResponse) => void;
                    }

                    /** Properties of a MutateCustomInterestsRequest. */
                    interface IMutateCustomInterestsRequest {

                        /** MutateCustomInterestsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomInterestsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomInterestOperation[]|null);

                        /** MutateCustomInterestsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomInterestsRequest. */
                    class MutateCustomInterestsRequest implements IMutateCustomInterestsRequest {

                        /**
                         * Constructs a new MutateCustomInterestsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomInterestsRequest);

                        /** MutateCustomInterestsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomInterestsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomInterestOperation[];

                        /** MutateCustomInterestsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCustomInterestsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomInterestsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomInterestsRequest): google.ads.googleads.v23.services.MutateCustomInterestsRequest;

                        /**
                         * Encodes the specified MutateCustomInterestsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomInterestsRequest.verify|verify} messages.
                         * @param message MutateCustomInterestsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomInterestsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomInterestsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomInterestsRequest.verify|verify} messages.
                         * @param message MutateCustomInterestsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomInterestsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomInterestsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomInterestsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomInterestsRequest;

                        /**
                         * Decodes a MutateCustomInterestsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomInterestsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomInterestsRequest;

                        /**
                         * Verifies a MutateCustomInterestsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomInterestsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomInterestsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomInterestsRequest;

                        /**
                         * Creates a plain object from a MutateCustomInterestsRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomInterestsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomInterestsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomInterestsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomInterestsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomInterestOperation. */
                    interface ICustomInterestOperation {

                        /** CustomInterestOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomInterestOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomInterest|null);

                        /** CustomInterestOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomInterest|null);
                    }

                    /** Represents a CustomInterestOperation. */
                    class CustomInterestOperation implements ICustomInterestOperation {

                        /**
                         * Constructs a new CustomInterestOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomInterestOperation);

                        /** CustomInterestOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomInterestOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomInterest|null);

                        /** CustomInterestOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomInterest|null);

                        /** CustomInterestOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new CustomInterestOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterestOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomInterestOperation): google.ads.googleads.v23.services.CustomInterestOperation;

                        /**
                         * Encodes the specified CustomInterestOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomInterestOperation.verify|verify} messages.
                         * @param message CustomInterestOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomInterestOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomInterestOperation.verify|verify} messages.
                         * @param message CustomInterestOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomInterestOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomInterestOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomInterestOperation;

                        /**
                         * Decodes a CustomInterestOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomInterestOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomInterestOperation;

                        /**
                         * Verifies a CustomInterestOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomInterestOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomInterestOperation;

                        /**
                         * Creates a plain object from a CustomInterestOperation message. Also converts values to other types if specified.
                         * @param message CustomInterestOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomInterestOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomInterestOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomInterestsResponse. */
                    interface IMutateCustomInterestsResponse {

                        /** MutateCustomInterestsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomInterestResult[]|null);
                    }

                    /** Represents a MutateCustomInterestsResponse. */
                    class MutateCustomInterestsResponse implements IMutateCustomInterestsResponse {

                        /**
                         * Constructs a new MutateCustomInterestsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomInterestsResponse);

                        /** MutateCustomInterestsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomInterestResult[];

                        /**
                         * Creates a new MutateCustomInterestsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomInterestsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomInterestsResponse): google.ads.googleads.v23.services.MutateCustomInterestsResponse;

                        /**
                         * Encodes the specified MutateCustomInterestsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomInterestsResponse.verify|verify} messages.
                         * @param message MutateCustomInterestsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomInterestsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomInterestsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomInterestsResponse.verify|verify} messages.
                         * @param message MutateCustomInterestsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomInterestsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomInterestsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomInterestsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomInterestsResponse;

                        /**
                         * Decodes a MutateCustomInterestsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomInterestsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomInterestsResponse;

                        /**
                         * Verifies a MutateCustomInterestsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomInterestsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomInterestsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomInterestsResponse;

                        /**
                         * Creates a plain object from a MutateCustomInterestsResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomInterestsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomInterestsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomInterestsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomInterestsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomInterestResult. */
                    interface IMutateCustomInterestResult {

                        /** MutateCustomInterestResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomInterestResult. */
                    class MutateCustomInterestResult implements IMutateCustomInterestResult {

                        /**
                         * Constructs a new MutateCustomInterestResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomInterestResult);

                        /** MutateCustomInterestResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomInterestResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomInterestResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomInterestResult): google.ads.googleads.v23.services.MutateCustomInterestResult;

                        /**
                         * Encodes the specified MutateCustomInterestResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomInterestResult.verify|verify} messages.
                         * @param message MutateCustomInterestResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomInterestResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomInterestResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomInterestResult.verify|verify} messages.
                         * @param message MutateCustomInterestResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomInterestResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomInterestResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomInterestResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomInterestResult;

                        /**
                         * Decodes a MutateCustomInterestResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomInterestResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomInterestResult;

                        /**
                         * Verifies a MutateCustomInterestResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomInterestResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomInterestResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomInterestResult;

                        /**
                         * Creates a plain object from a MutateCustomInterestResult message. Also converts values to other types if specified.
                         * @param message MutateCustomInterestResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomInterestResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomInterestResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomInterestResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerAssetSetService */
                    class CustomerAssetSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerAssetSetService 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 CustomerAssetSetService 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): CustomerAssetSetService;

                        /**
                         * Calls MutateCustomerAssetSets.
                         * @param request MutateCustomerAssetSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerAssetSetsResponse
                         */
                        public mutateCustomerAssetSets(request: google.ads.googleads.v23.services.IMutateCustomerAssetSetsRequest, callback: google.ads.googleads.v23.services.CustomerAssetSetService.MutateCustomerAssetSetsCallback): void;

                        /**
                         * Calls MutateCustomerAssetSets.
                         * @param request MutateCustomerAssetSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerAssetSets(request: google.ads.googleads.v23.services.IMutateCustomerAssetSetsRequest): Promise<google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse>;
                    }

                    namespace CustomerAssetSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerAssetSetService|mutateCustomerAssetSets}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerAssetSetsResponse
                         */
                        type MutateCustomerAssetSetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse) => void;
                    }

                    /** Properties of a MutateCustomerAssetSetsRequest. */
                    interface IMutateCustomerAssetSetsRequest {

                        /** MutateCustomerAssetSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerAssetSetsRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomerAssetSetOperation[]|null);

                        /** MutateCustomerAssetSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomerAssetSetsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerAssetSetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerAssetSetsRequest. */
                    class MutateCustomerAssetSetsRequest implements IMutateCustomerAssetSetsRequest {

                        /**
                         * Constructs a new MutateCustomerAssetSetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetSetsRequest);

                        /** MutateCustomerAssetSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerAssetSetsRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomerAssetSetOperation[];

                        /** MutateCustomerAssetSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomerAssetSetsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerAssetSetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v23.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomerAssetSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerAssetSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetSetsRequest): google.ads.googleads.v23.services.MutateCustomerAssetSetsRequest;

                        /**
                         * Encodes the specified MutateCustomerAssetSetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetSetsRequest.verify|verify} messages.
                         * @param message MutateCustomerAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetSetsRequest.verify|verify} messages.
                         * @param message MutateCustomerAssetSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerAssetSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetSetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerAssetSetsRequest;

                        /**
                         * Decodes a MutateCustomerAssetSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerAssetSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerAssetSetsRequest;

                        /**
                         * Verifies a MutateCustomerAssetSetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerAssetSetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerAssetSetsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerAssetSetsRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerAssetSetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerAssetSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerAssetSetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerAssetSetOperation. */
                    interface ICustomerAssetSetOperation {

                        /** CustomerAssetSetOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerAssetSet|null);

                        /** CustomerAssetSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerAssetSetOperation. */
                    class CustomerAssetSetOperation implements ICustomerAssetSetOperation {

                        /**
                         * Constructs a new CustomerAssetSetOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerAssetSetOperation);

                        /** CustomerAssetSetOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerAssetSet|null);

                        /** CustomerAssetSetOperation remove. */
                        public remove?: (string|null);

                        /** CustomerAssetSetOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CustomerAssetSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAssetSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerAssetSetOperation): google.ads.googleads.v23.services.CustomerAssetSetOperation;

                        /**
                         * Encodes the specified CustomerAssetSetOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerAssetSetOperation.verify|verify} messages.
                         * @param message CustomerAssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAssetSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerAssetSetOperation.verify|verify} messages.
                         * @param message CustomerAssetSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerAssetSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAssetSetOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerAssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerAssetSetOperation;

                        /**
                         * Decodes a CustomerAssetSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerAssetSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerAssetSetOperation;

                        /**
                         * Verifies a CustomerAssetSetOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAssetSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerAssetSetOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerAssetSetOperation;

                        /**
                         * Creates a plain object from a CustomerAssetSetOperation message. Also converts values to other types if specified.
                         * @param message CustomerAssetSetOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerAssetSetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAssetSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerAssetSetOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerAssetSetsResponse. */
                    interface IMutateCustomerAssetSetsResponse {

                        /** MutateCustomerAssetSetsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomerAssetSetResult[]|null);

                        /** MutateCustomerAssetSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateCustomerAssetSetsResponse. */
                    class MutateCustomerAssetSetsResponse implements IMutateCustomerAssetSetsResponse {

                        /**
                         * Constructs a new MutateCustomerAssetSetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetSetsResponse);

                        /** MutateCustomerAssetSetsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomerAssetSetResult[];

                        /** MutateCustomerAssetSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateCustomerAssetSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerAssetSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetSetsResponse): google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse;

                        /**
                         * Encodes the specified MutateCustomerAssetSetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse.verify|verify} messages.
                         * @param message MutateCustomerAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse.verify|verify} messages.
                         * @param message MutateCustomerAssetSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerAssetSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetSetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse;

                        /**
                         * Decodes a MutateCustomerAssetSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerAssetSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse;

                        /**
                         * Verifies a MutateCustomerAssetSetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerAssetSetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerAssetSetsResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerAssetSetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerAssetSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerAssetSetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerAssetSetResult. */
                    interface IMutateCustomerAssetSetResult {

                        /** MutateCustomerAssetSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerAssetSetResult customer_asset_set */
                        customer_asset_set?: (google.ads.googleads.v23.resources.ICustomerAssetSet|null);
                    }

                    /** Represents a MutateCustomerAssetSetResult. */
                    class MutateCustomerAssetSetResult implements IMutateCustomerAssetSetResult {

                        /**
                         * Constructs a new MutateCustomerAssetSetResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetSetResult);

                        /** MutateCustomerAssetSetResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerAssetSetResult customer_asset_set. */
                        public customer_asset_set?: (google.ads.googleads.v23.resources.ICustomerAssetSet|null);

                        /**
                         * Creates a new MutateCustomerAssetSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerAssetSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerAssetSetResult): google.ads.googleads.v23.services.MutateCustomerAssetSetResult;

                        /**
                         * Encodes the specified MutateCustomerAssetSetResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetSetResult.verify|verify} messages.
                         * @param message MutateCustomerAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerAssetSetResult.verify|verify} messages.
                         * @param message MutateCustomerAssetSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerAssetSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetSetResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerAssetSetResult;

                        /**
                         * Decodes a MutateCustomerAssetSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerAssetSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerAssetSetResult;

                        /**
                         * Verifies a MutateCustomerAssetSetResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerAssetSetResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerAssetSetResult;

                        /**
                         * Creates a plain object from a MutateCustomerAssetSetResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerAssetSetResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerAssetSetResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerAssetSetResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerClientLinkService */
                    class CustomerClientLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerClientLinkService 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 CustomerClientLinkService 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): CustomerClientLinkService;

                        /**
                         * Calls MutateCustomerClientLink.
                         * @param request MutateCustomerClientLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerClientLinkResponse
                         */
                        public mutateCustomerClientLink(request: google.ads.googleads.v23.services.IMutateCustomerClientLinkRequest, callback: google.ads.googleads.v23.services.CustomerClientLinkService.MutateCustomerClientLinkCallback): void;

                        /**
                         * Calls MutateCustomerClientLink.
                         * @param request MutateCustomerClientLinkRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerClientLink(request: google.ads.googleads.v23.services.IMutateCustomerClientLinkRequest): Promise<google.ads.googleads.v23.services.MutateCustomerClientLinkResponse>;
                    }

                    namespace CustomerClientLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerClientLinkService|mutateCustomerClientLink}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerClientLinkResponse
                         */
                        type MutateCustomerClientLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerClientLinkResponse) => void;
                    }

                    /** Properties of a MutateCustomerClientLinkRequest. */
                    interface IMutateCustomerClientLinkRequest {

                        /** MutateCustomerClientLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerClientLinkRequest operation */
                        operation?: (google.ads.googleads.v23.services.ICustomerClientLinkOperation|null);

                        /** MutateCustomerClientLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomerClientLinkRequest. */
                    class MutateCustomerClientLinkRequest implements IMutateCustomerClientLinkRequest {

                        /**
                         * Constructs a new MutateCustomerClientLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerClientLinkRequest);

                        /** MutateCustomerClientLinkRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerClientLinkRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.ICustomerClientLinkOperation|null);

                        /** MutateCustomerClientLinkRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCustomerClientLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerClientLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerClientLinkRequest): google.ads.googleads.v23.services.MutateCustomerClientLinkRequest;

                        /**
                         * Encodes the specified MutateCustomerClientLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerClientLinkRequest.verify|verify} messages.
                         * @param message MutateCustomerClientLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerClientLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerClientLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerClientLinkRequest.verify|verify} messages.
                         * @param message MutateCustomerClientLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerClientLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerClientLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerClientLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerClientLinkRequest;

                        /**
                         * Decodes a MutateCustomerClientLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerClientLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerClientLinkRequest;

                        /**
                         * Verifies a MutateCustomerClientLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerClientLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerClientLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerClientLinkRequest;

                        /**
                         * Creates a plain object from a MutateCustomerClientLinkRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerClientLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerClientLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerClientLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerClientLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerClientLinkOperation. */
                    interface ICustomerClientLinkOperation {

                        /** CustomerClientLinkOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerClientLinkOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerClientLink|null);

                        /** CustomerClientLinkOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomerClientLink|null);
                    }

                    /** Represents a CustomerClientLinkOperation. */
                    class CustomerClientLinkOperation implements ICustomerClientLinkOperation {

                        /**
                         * Constructs a new CustomerClientLinkOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerClientLinkOperation);

                        /** CustomerClientLinkOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerClientLinkOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerClientLink|null);

                        /** CustomerClientLinkOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomerClientLink|null);

                        /** CustomerClientLinkOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new CustomerClientLinkOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerClientLinkOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerClientLinkOperation): google.ads.googleads.v23.services.CustomerClientLinkOperation;

                        /**
                         * Encodes the specified CustomerClientLinkOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerClientLinkOperation.verify|verify} messages.
                         * @param message CustomerClientLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerClientLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClientLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerClientLinkOperation.verify|verify} messages.
                         * @param message CustomerClientLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerClientLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClientLinkOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerClientLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerClientLinkOperation;

                        /**
                         * Decodes a CustomerClientLinkOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerClientLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerClientLinkOperation;

                        /**
                         * Verifies a CustomerClientLinkOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClientLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerClientLinkOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerClientLinkOperation;

                        /**
                         * Creates a plain object from a CustomerClientLinkOperation message. Also converts values to other types if specified.
                         * @param message CustomerClientLinkOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerClientLinkOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClientLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerClientLinkOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerClientLinkResponse. */
                    interface IMutateCustomerClientLinkResponse {

                        /** MutateCustomerClientLinkResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateCustomerClientLinkResult|null);
                    }

                    /** Represents a MutateCustomerClientLinkResponse. */
                    class MutateCustomerClientLinkResponse implements IMutateCustomerClientLinkResponse {

                        /**
                         * Constructs a new MutateCustomerClientLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerClientLinkResponse);

                        /** MutateCustomerClientLinkResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateCustomerClientLinkResult|null);

                        /**
                         * Creates a new MutateCustomerClientLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerClientLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerClientLinkResponse): google.ads.googleads.v23.services.MutateCustomerClientLinkResponse;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerClientLinkResponse.verify|verify} messages.
                         * @param message MutateCustomerClientLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerClientLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerClientLinkResponse.verify|verify} messages.
                         * @param message MutateCustomerClientLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerClientLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerClientLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerClientLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerClientLinkResponse;

                        /**
                         * Decodes a MutateCustomerClientLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerClientLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerClientLinkResponse;

                        /**
                         * Verifies a MutateCustomerClientLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerClientLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerClientLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerClientLinkResponse;

                        /**
                         * Creates a plain object from a MutateCustomerClientLinkResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerClientLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerClientLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerClientLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerClientLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerClientLinkResult. */
                    interface IMutateCustomerClientLinkResult {

                        /** MutateCustomerClientLinkResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomerClientLinkResult. */
                    class MutateCustomerClientLinkResult implements IMutateCustomerClientLinkResult {

                        /**
                         * Constructs a new MutateCustomerClientLinkResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerClientLinkResult);

                        /** MutateCustomerClientLinkResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomerClientLinkResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerClientLinkResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerClientLinkResult): google.ads.googleads.v23.services.MutateCustomerClientLinkResult;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerClientLinkResult.verify|verify} messages.
                         * @param message MutateCustomerClientLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerClientLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerClientLinkResult.verify|verify} messages.
                         * @param message MutateCustomerClientLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerClientLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerClientLinkResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerClientLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerClientLinkResult;

                        /**
                         * Decodes a MutateCustomerClientLinkResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerClientLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerClientLinkResult;

                        /**
                         * Verifies a MutateCustomerClientLinkResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerClientLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerClientLinkResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerClientLinkResult;

                        /**
                         * Creates a plain object from a MutateCustomerClientLinkResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerClientLinkResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerClientLinkResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerClientLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerClientLinkResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerLifecycleGoalService */
                    class CustomerLifecycleGoalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerLifecycleGoalService 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 CustomerLifecycleGoalService 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): CustomerLifecycleGoalService;

                        /**
                         * Calls ConfigureCustomerLifecycleGoals.
                         * @param request ConfigureCustomerLifecycleGoalsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ConfigureCustomerLifecycleGoalsResponse
                         */
                        public configureCustomerLifecycleGoals(request: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsRequest, callback: google.ads.googleads.v23.services.CustomerLifecycleGoalService.ConfigureCustomerLifecycleGoalsCallback): void;

                        /**
                         * Calls ConfigureCustomerLifecycleGoals.
                         * @param request ConfigureCustomerLifecycleGoalsRequest message or plain object
                         * @returns Promise
                         */
                        public configureCustomerLifecycleGoals(request: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsRequest): Promise<google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse>;
                    }

                    namespace CustomerLifecycleGoalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerLifecycleGoalService|configureCustomerLifecycleGoals}.
                         * @param error Error, if any
                         * @param [response] ConfigureCustomerLifecycleGoalsResponse
                         */
                        type ConfigureCustomerLifecycleGoalsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse) => void;
                    }

                    /** Properties of a ConfigureCustomerLifecycleGoalsRequest. */
                    interface IConfigureCustomerLifecycleGoalsRequest {

                        /** ConfigureCustomerLifecycleGoalsRequest customer_id */
                        customer_id?: (string|null);

                        /** ConfigureCustomerLifecycleGoalsRequest operation */
                        operation?: (google.ads.googleads.v23.services.ICustomerLifecycleGoalOperation|null);

                        /** ConfigureCustomerLifecycleGoalsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a ConfigureCustomerLifecycleGoalsRequest. */
                    class ConfigureCustomerLifecycleGoalsRequest implements IConfigureCustomerLifecycleGoalsRequest {

                        /**
                         * Constructs a new ConfigureCustomerLifecycleGoalsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsRequest);

                        /** ConfigureCustomerLifecycleGoalsRequest customer_id. */
                        public customer_id: string;

                        /** ConfigureCustomerLifecycleGoalsRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.ICustomerLifecycleGoalOperation|null);

                        /** ConfigureCustomerLifecycleGoalsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new ConfigureCustomerLifecycleGoalsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConfigureCustomerLifecycleGoalsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsRequest): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsRequest;

                        /**
                         * Encodes the specified ConfigureCustomerLifecycleGoalsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsRequest.verify|verify} messages.
                         * @param message ConfigureCustomerLifecycleGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConfigureCustomerLifecycleGoalsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsRequest.verify|verify} messages.
                         * @param message ConfigureCustomerLifecycleGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConfigureCustomerLifecycleGoalsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConfigureCustomerLifecycleGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsRequest;

                        /**
                         * Decodes a ConfigureCustomerLifecycleGoalsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConfigureCustomerLifecycleGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsRequest;

                        /**
                         * Verifies a ConfigureCustomerLifecycleGoalsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConfigureCustomerLifecycleGoalsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConfigureCustomerLifecycleGoalsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsRequest;

                        /**
                         * Creates a plain object from a ConfigureCustomerLifecycleGoalsRequest message. Also converts values to other types if specified.
                         * @param message ConfigureCustomerLifecycleGoalsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConfigureCustomerLifecycleGoalsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConfigureCustomerLifecycleGoalsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerLifecycleGoalOperation. */
                    interface ICustomerLifecycleGoalOperation {

                        /** CustomerLifecycleGoalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerLifecycleGoalOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerLifecycleGoal|null);

                        /** CustomerLifecycleGoalOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomerLifecycleGoal|null);
                    }

                    /** Represents a CustomerLifecycleGoalOperation. */
                    class CustomerLifecycleGoalOperation implements ICustomerLifecycleGoalOperation {

                        /**
                         * Constructs a new CustomerLifecycleGoalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerLifecycleGoalOperation);

                        /** CustomerLifecycleGoalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerLifecycleGoalOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerLifecycleGoal|null);

                        /** CustomerLifecycleGoalOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomerLifecycleGoal|null);

                        /** CustomerLifecycleGoalOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new CustomerLifecycleGoalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLifecycleGoalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerLifecycleGoalOperation): google.ads.googleads.v23.services.CustomerLifecycleGoalOperation;

                        /**
                         * Encodes the specified CustomerLifecycleGoalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerLifecycleGoalOperation.verify|verify} messages.
                         * @param message CustomerLifecycleGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerLifecycleGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLifecycleGoalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerLifecycleGoalOperation.verify|verify} messages.
                         * @param message CustomerLifecycleGoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerLifecycleGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLifecycleGoalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerLifecycleGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerLifecycleGoalOperation;

                        /**
                         * Decodes a CustomerLifecycleGoalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerLifecycleGoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerLifecycleGoalOperation;

                        /**
                         * Verifies a CustomerLifecycleGoalOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLifecycleGoalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerLifecycleGoalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerLifecycleGoalOperation;

                        /**
                         * Creates a plain object from a CustomerLifecycleGoalOperation message. Also converts values to other types if specified.
                         * @param message CustomerLifecycleGoalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerLifecycleGoalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLifecycleGoalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerLifecycleGoalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConfigureCustomerLifecycleGoalsResponse. */
                    interface IConfigureCustomerLifecycleGoalsResponse {

                        /** ConfigureCustomerLifecycleGoalsResponse result */
                        result?: (google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResult|null);
                    }

                    /** Represents a ConfigureCustomerLifecycleGoalsResponse. */
                    class ConfigureCustomerLifecycleGoalsResponse implements IConfigureCustomerLifecycleGoalsResponse {

                        /**
                         * Constructs a new ConfigureCustomerLifecycleGoalsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResponse);

                        /** ConfigureCustomerLifecycleGoalsResponse result. */
                        public result?: (google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResult|null);

                        /**
                         * Creates a new ConfigureCustomerLifecycleGoalsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConfigureCustomerLifecycleGoalsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResponse): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse;

                        /**
                         * Encodes the specified ConfigureCustomerLifecycleGoalsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse.verify|verify} messages.
                         * @param message ConfigureCustomerLifecycleGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConfigureCustomerLifecycleGoalsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse.verify|verify} messages.
                         * @param message ConfigureCustomerLifecycleGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConfigureCustomerLifecycleGoalsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConfigureCustomerLifecycleGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse;

                        /**
                         * Decodes a ConfigureCustomerLifecycleGoalsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConfigureCustomerLifecycleGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse;

                        /**
                         * Verifies a ConfigureCustomerLifecycleGoalsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConfigureCustomerLifecycleGoalsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConfigureCustomerLifecycleGoalsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse;

                        /**
                         * Creates a plain object from a ConfigureCustomerLifecycleGoalsResponse message. Also converts values to other types if specified.
                         * @param message ConfigureCustomerLifecycleGoalsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConfigureCustomerLifecycleGoalsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConfigureCustomerLifecycleGoalsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConfigureCustomerLifecycleGoalsResult. */
                    interface IConfigureCustomerLifecycleGoalsResult {

                        /** ConfigureCustomerLifecycleGoalsResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a ConfigureCustomerLifecycleGoalsResult. */
                    class ConfigureCustomerLifecycleGoalsResult implements IConfigureCustomerLifecycleGoalsResult {

                        /**
                         * Constructs a new ConfigureCustomerLifecycleGoalsResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResult);

                        /** ConfigureCustomerLifecycleGoalsResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ConfigureCustomerLifecycleGoalsResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConfigureCustomerLifecycleGoalsResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResult): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResult;

                        /**
                         * Encodes the specified ConfigureCustomerLifecycleGoalsResult message. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResult.verify|verify} messages.
                         * @param message ConfigureCustomerLifecycleGoalsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConfigureCustomerLifecycleGoalsResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResult.verify|verify} messages.
                         * @param message ConfigureCustomerLifecycleGoalsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConfigureCustomerLifecycleGoalsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConfigureCustomerLifecycleGoalsResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConfigureCustomerLifecycleGoalsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResult;

                        /**
                         * Decodes a ConfigureCustomerLifecycleGoalsResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConfigureCustomerLifecycleGoalsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResult;

                        /**
                         * Verifies a ConfigureCustomerLifecycleGoalsResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConfigureCustomerLifecycleGoalsResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConfigureCustomerLifecycleGoalsResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResult;

                        /**
                         * Creates a plain object from a ConfigureCustomerLifecycleGoalsResult message. Also converts values to other types if specified.
                         * @param message ConfigureCustomerLifecycleGoalsResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConfigureCustomerLifecycleGoalsResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConfigureCustomerLifecycleGoalsResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConfigureCustomerLifecycleGoalsResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerManagerLinkService */
                    class CustomerManagerLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerManagerLinkService 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 CustomerManagerLinkService 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): CustomerManagerLinkService;

                        /**
                         * Calls MutateCustomerManagerLink.
                         * @param request MutateCustomerManagerLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerManagerLinkResponse
                         */
                        public mutateCustomerManagerLink(request: google.ads.googleads.v23.services.IMutateCustomerManagerLinkRequest, callback: google.ads.googleads.v23.services.CustomerManagerLinkService.MutateCustomerManagerLinkCallback): void;

                        /**
                         * Calls MutateCustomerManagerLink.
                         * @param request MutateCustomerManagerLinkRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerManagerLink(request: google.ads.googleads.v23.services.IMutateCustomerManagerLinkRequest): Promise<google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse>;

                        /**
                         * Calls MoveManagerLink.
                         * @param request MoveManagerLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MoveManagerLinkResponse
                         */
                        public moveManagerLink(request: google.ads.googleads.v23.services.IMoveManagerLinkRequest, callback: google.ads.googleads.v23.services.CustomerManagerLinkService.MoveManagerLinkCallback): void;

                        /**
                         * Calls MoveManagerLink.
                         * @param request MoveManagerLinkRequest message or plain object
                         * @returns Promise
                         */
                        public moveManagerLink(request: google.ads.googleads.v23.services.IMoveManagerLinkRequest): Promise<google.ads.googleads.v23.services.MoveManagerLinkResponse>;
                    }

                    namespace CustomerManagerLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerManagerLinkService|mutateCustomerManagerLink}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerManagerLinkResponse
                         */
                        type MutateCustomerManagerLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerManagerLinkService|moveManagerLink}.
                         * @param error Error, if any
                         * @param [response] MoveManagerLinkResponse
                         */
                        type MoveManagerLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MoveManagerLinkResponse) => void;
                    }

                    /** Properties of a MutateCustomerManagerLinkRequest. */
                    interface IMutateCustomerManagerLinkRequest {

                        /** MutateCustomerManagerLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerManagerLinkRequest operations */
                        operations?: (google.ads.googleads.v23.services.ICustomerManagerLinkOperation[]|null);

                        /** MutateCustomerManagerLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomerManagerLinkRequest. */
                    class MutateCustomerManagerLinkRequest implements IMutateCustomerManagerLinkRequest {

                        /**
                         * Constructs a new MutateCustomerManagerLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerManagerLinkRequest);

                        /** MutateCustomerManagerLinkRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerManagerLinkRequest operations. */
                        public operations: google.ads.googleads.v23.services.ICustomerManagerLinkOperation[];

                        /** MutateCustomerManagerLinkRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateCustomerManagerLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerManagerLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerManagerLinkRequest): google.ads.googleads.v23.services.MutateCustomerManagerLinkRequest;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerManagerLinkRequest.verify|verify} messages.
                         * @param message MutateCustomerManagerLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerManagerLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerManagerLinkRequest.verify|verify} messages.
                         * @param message MutateCustomerManagerLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerManagerLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerManagerLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerManagerLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerManagerLinkRequest;

                        /**
                         * Decodes a MutateCustomerManagerLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerManagerLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerManagerLinkRequest;

                        /**
                         * Verifies a MutateCustomerManagerLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerManagerLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerManagerLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerManagerLinkRequest;

                        /**
                         * Creates a plain object from a MutateCustomerManagerLinkRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerManagerLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerManagerLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerManagerLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerManagerLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MoveManagerLinkRequest. */
                    interface IMoveManagerLinkRequest {

                        /** MoveManagerLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MoveManagerLinkRequest previous_customer_manager_link */
                        previous_customer_manager_link?: (string|null);

                        /** MoveManagerLinkRequest new_manager */
                        new_manager?: (string|null);

                        /** MoveManagerLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MoveManagerLinkRequest. */
                    class MoveManagerLinkRequest implements IMoveManagerLinkRequest {

                        /**
                         * Constructs a new MoveManagerLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMoveManagerLinkRequest);

                        /** MoveManagerLinkRequest customer_id. */
                        public customer_id: string;

                        /** MoveManagerLinkRequest previous_customer_manager_link. */
                        public previous_customer_manager_link: string;

                        /** MoveManagerLinkRequest new_manager. */
                        public new_manager: string;

                        /** MoveManagerLinkRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MoveManagerLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MoveManagerLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMoveManagerLinkRequest): google.ads.googleads.v23.services.MoveManagerLinkRequest;

                        /**
                         * Encodes the specified MoveManagerLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MoveManagerLinkRequest.verify|verify} messages.
                         * @param message MoveManagerLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMoveManagerLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveManagerLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MoveManagerLinkRequest.verify|verify} messages.
                         * @param message MoveManagerLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMoveManagerLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveManagerLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MoveManagerLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MoveManagerLinkRequest;

                        /**
                         * Decodes a MoveManagerLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MoveManagerLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MoveManagerLinkRequest;

                        /**
                         * Verifies a MoveManagerLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveManagerLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MoveManagerLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MoveManagerLinkRequest;

                        /**
                         * Creates a plain object from a MoveManagerLinkRequest message. Also converts values to other types if specified.
                         * @param message MoveManagerLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MoveManagerLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveManagerLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MoveManagerLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerManagerLinkOperation. */
                    interface ICustomerManagerLinkOperation {

                        /** CustomerManagerLinkOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerManagerLinkOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomerManagerLink|null);
                    }

                    /** Represents a CustomerManagerLinkOperation. */
                    class CustomerManagerLinkOperation implements ICustomerManagerLinkOperation {

                        /**
                         * Constructs a new CustomerManagerLinkOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerManagerLinkOperation);

                        /** CustomerManagerLinkOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerManagerLinkOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomerManagerLink|null);

                        /** CustomerManagerLinkOperation operation. */
                        public operation?: "update";

                        /**
                         * Creates a new CustomerManagerLinkOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerManagerLinkOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerManagerLinkOperation): google.ads.googleads.v23.services.CustomerManagerLinkOperation;

                        /**
                         * Encodes the specified CustomerManagerLinkOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerManagerLinkOperation.verify|verify} messages.
                         * @param message CustomerManagerLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerManagerLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerManagerLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerManagerLinkOperation.verify|verify} messages.
                         * @param message CustomerManagerLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerManagerLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerManagerLinkOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerManagerLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerManagerLinkOperation;

                        /**
                         * Decodes a CustomerManagerLinkOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerManagerLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerManagerLinkOperation;

                        /**
                         * Verifies a CustomerManagerLinkOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerManagerLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerManagerLinkOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerManagerLinkOperation;

                        /**
                         * Creates a plain object from a CustomerManagerLinkOperation message. Also converts values to other types if specified.
                         * @param message CustomerManagerLinkOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerManagerLinkOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerManagerLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerManagerLinkOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerManagerLinkResponse. */
                    interface IMutateCustomerManagerLinkResponse {

                        /** MutateCustomerManagerLinkResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateCustomerManagerLinkResult[]|null);
                    }

                    /** Represents a MutateCustomerManagerLinkResponse. */
                    class MutateCustomerManagerLinkResponse implements IMutateCustomerManagerLinkResponse {

                        /**
                         * Constructs a new MutateCustomerManagerLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResponse);

                        /** MutateCustomerManagerLinkResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResult[];

                        /**
                         * Creates a new MutateCustomerManagerLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerManagerLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResponse): google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse.verify|verify} messages.
                         * @param message MutateCustomerManagerLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse.verify|verify} messages.
                         * @param message MutateCustomerManagerLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerManagerLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerManagerLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse;

                        /**
                         * Decodes a MutateCustomerManagerLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerManagerLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse;

                        /**
                         * Verifies a MutateCustomerManagerLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerManagerLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerManagerLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse;

                        /**
                         * Creates a plain object from a MutateCustomerManagerLinkResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerManagerLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerManagerLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerManagerLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerManagerLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MoveManagerLinkResponse. */
                    interface IMoveManagerLinkResponse {

                        /** MoveManagerLinkResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MoveManagerLinkResponse. */
                    class MoveManagerLinkResponse implements IMoveManagerLinkResponse {

                        /**
                         * Constructs a new MoveManagerLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMoveManagerLinkResponse);

                        /** MoveManagerLinkResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MoveManagerLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MoveManagerLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMoveManagerLinkResponse): google.ads.googleads.v23.services.MoveManagerLinkResponse;

                        /**
                         * Encodes the specified MoveManagerLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MoveManagerLinkResponse.verify|verify} messages.
                         * @param message MoveManagerLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMoveManagerLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveManagerLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MoveManagerLinkResponse.verify|verify} messages.
                         * @param message MoveManagerLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMoveManagerLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveManagerLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MoveManagerLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MoveManagerLinkResponse;

                        /**
                         * Decodes a MoveManagerLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MoveManagerLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MoveManagerLinkResponse;

                        /**
                         * Verifies a MoveManagerLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveManagerLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MoveManagerLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MoveManagerLinkResponse;

                        /**
                         * Creates a plain object from a MoveManagerLinkResponse message. Also converts values to other types if specified.
                         * @param message MoveManagerLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MoveManagerLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveManagerLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MoveManagerLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerManagerLinkResult. */
                    interface IMutateCustomerManagerLinkResult {

                        /** MutateCustomerManagerLinkResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomerManagerLinkResult. */
                    class MutateCustomerManagerLinkResult implements IMutateCustomerManagerLinkResult {

                        /**
                         * Constructs a new MutateCustomerManagerLinkResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResult);

                        /** MutateCustomerManagerLinkResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomerManagerLinkResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerManagerLinkResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResult): google.ads.googleads.v23.services.MutateCustomerManagerLinkResult;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerManagerLinkResult.verify|verify} messages.
                         * @param message MutateCustomerManagerLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerManagerLinkResult.verify|verify} messages.
                         * @param message MutateCustomerManagerLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerManagerLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerManagerLinkResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerManagerLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerManagerLinkResult;

                        /**
                         * Decodes a MutateCustomerManagerLinkResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerManagerLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerManagerLinkResult;

                        /**
                         * Verifies a MutateCustomerManagerLinkResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerManagerLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerManagerLinkResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerManagerLinkResult;

                        /**
                         * Creates a plain object from a MutateCustomerManagerLinkResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerManagerLinkResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerManagerLinkResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerManagerLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerManagerLinkResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerSkAdNetworkConversionValueSchemaService */
                    class CustomerSkAdNetworkConversionValueSchemaService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerSkAdNetworkConversionValueSchemaService 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 CustomerSkAdNetworkConversionValueSchemaService 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): CustomerSkAdNetworkConversionValueSchemaService;

                        /**
                         * Calls MutateCustomerSkAdNetworkConversionValueSchema.
                         * @param request MutateCustomerSkAdNetworkConversionValueSchemaRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerSkAdNetworkConversionValueSchemaResponse
                         */
                        public mutateCustomerSkAdNetworkConversionValueSchema(request: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaRequest, callback: google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaService.MutateCustomerSkAdNetworkConversionValueSchemaCallback): void;

                        /**
                         * Calls MutateCustomerSkAdNetworkConversionValueSchema.
                         * @param request MutateCustomerSkAdNetworkConversionValueSchemaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerSkAdNetworkConversionValueSchema(request: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaRequest): Promise<google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse>;
                    }

                    namespace CustomerSkAdNetworkConversionValueSchemaService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaService|mutateCustomerSkAdNetworkConversionValueSchema}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerSkAdNetworkConversionValueSchemaResponse
                         */
                        type MutateCustomerSkAdNetworkConversionValueSchemaCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse) => void;
                    }

                    /** Properties of a CustomerSkAdNetworkConversionValueSchemaOperation. */
                    interface ICustomerSkAdNetworkConversionValueSchemaOperation {

                        /** CustomerSkAdNetworkConversionValueSchemaOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomerSkAdNetworkConversionValueSchema|null);
                    }

                    /** Represents a CustomerSkAdNetworkConversionValueSchemaOperation. */
                    class CustomerSkAdNetworkConversionValueSchemaOperation implements ICustomerSkAdNetworkConversionValueSchemaOperation {

                        /**
                         * Constructs a new CustomerSkAdNetworkConversionValueSchemaOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerSkAdNetworkConversionValueSchemaOperation);

                        /** CustomerSkAdNetworkConversionValueSchemaOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomerSkAdNetworkConversionValueSchema|null);

                        /**
                         * Creates a new CustomerSkAdNetworkConversionValueSchemaOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerSkAdNetworkConversionValueSchemaOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerSkAdNetworkConversionValueSchemaOperation): google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaOperation;

                        /**
                         * Encodes the specified CustomerSkAdNetworkConversionValueSchemaOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaOperation.verify|verify} messages.
                         * @param message CustomerSkAdNetworkConversionValueSchemaOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerSkAdNetworkConversionValueSchemaOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerSkAdNetworkConversionValueSchemaOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaOperation.verify|verify} messages.
                         * @param message CustomerSkAdNetworkConversionValueSchemaOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerSkAdNetworkConversionValueSchemaOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerSkAdNetworkConversionValueSchemaOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerSkAdNetworkConversionValueSchemaOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaOperation;

                        /**
                         * Decodes a CustomerSkAdNetworkConversionValueSchemaOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerSkAdNetworkConversionValueSchemaOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaOperation;

                        /**
                         * Verifies a CustomerSkAdNetworkConversionValueSchemaOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerSkAdNetworkConversionValueSchemaOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerSkAdNetworkConversionValueSchemaOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaOperation;

                        /**
                         * Creates a plain object from a CustomerSkAdNetworkConversionValueSchemaOperation message. Also converts values to other types if specified.
                         * @param message CustomerSkAdNetworkConversionValueSchemaOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerSkAdNetworkConversionValueSchemaOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerSkAdNetworkConversionValueSchemaOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerSkAdNetworkConversionValueSchemaOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerSkAdNetworkConversionValueSchemaRequest. */
                    interface IMutateCustomerSkAdNetworkConversionValueSchemaRequest {

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest operation */
                        operation?: (google.ads.googleads.v23.services.ICustomerSkAdNetworkConversionValueSchemaOperation|null);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest enable_warnings */
                        enable_warnings?: (boolean|null);
                    }

                    /** Represents a MutateCustomerSkAdNetworkConversionValueSchemaRequest. */
                    class MutateCustomerSkAdNetworkConversionValueSchemaRequest implements IMutateCustomerSkAdNetworkConversionValueSchemaRequest {

                        /**
                         * Constructs a new MutateCustomerSkAdNetworkConversionValueSchemaRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaRequest);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.ICustomerSkAdNetworkConversionValueSchemaOperation|null);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerSkAdNetworkConversionValueSchemaRequest enable_warnings. */
                        public enable_warnings: boolean;

                        /**
                         * Creates a new MutateCustomerSkAdNetworkConversionValueSchemaRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaRequest): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaRequest;

                        /**
                         * Encodes the specified MutateCustomerSkAdNetworkConversionValueSchemaRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaRequest.verify|verify} messages.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerSkAdNetworkConversionValueSchemaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaRequest.verify|verify} messages.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerSkAdNetworkConversionValueSchemaRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaRequest;

                        /**
                         * Decodes a MutateCustomerSkAdNetworkConversionValueSchemaRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaRequest;

                        /**
                         * Verifies a MutateCustomerSkAdNetworkConversionValueSchemaRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerSkAdNetworkConversionValueSchemaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaRequest;

                        /**
                         * Creates a plain object from a MutateCustomerSkAdNetworkConversionValueSchemaRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerSkAdNetworkConversionValueSchemaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerSkAdNetworkConversionValueSchemaRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerSkAdNetworkConversionValueSchemaResult. */
                    interface IMutateCustomerSkAdNetworkConversionValueSchemaResult {

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResult app_id */
                        app_id?: (string|null);
                    }

                    /** Represents a MutateCustomerSkAdNetworkConversionValueSchemaResult. */
                    class MutateCustomerSkAdNetworkConversionValueSchemaResult implements IMutateCustomerSkAdNetworkConversionValueSchemaResult {

                        /**
                         * Constructs a new MutateCustomerSkAdNetworkConversionValueSchemaResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResult);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResult app_id. */
                        public app_id: string;

                        /**
                         * Creates a new MutateCustomerSkAdNetworkConversionValueSchemaResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResult): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResult;

                        /**
                         * Encodes the specified MutateCustomerSkAdNetworkConversionValueSchemaResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResult.verify|verify} messages.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerSkAdNetworkConversionValueSchemaResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResult.verify|verify} messages.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerSkAdNetworkConversionValueSchemaResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResult;

                        /**
                         * Decodes a MutateCustomerSkAdNetworkConversionValueSchemaResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResult;

                        /**
                         * Verifies a MutateCustomerSkAdNetworkConversionValueSchemaResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerSkAdNetworkConversionValueSchemaResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResult;

                        /**
                         * Creates a plain object from a MutateCustomerSkAdNetworkConversionValueSchemaResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerSkAdNetworkConversionValueSchemaResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerSkAdNetworkConversionValueSchemaResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerSkAdNetworkConversionValueSchemaResponse. */
                    interface IMutateCustomerSkAdNetworkConversionValueSchemaResponse {

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResult|null);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResponse warning */
                        warning?: (google.rpc.IStatus|null);
                    }

                    /** Represents a MutateCustomerSkAdNetworkConversionValueSchemaResponse. */
                    class MutateCustomerSkAdNetworkConversionValueSchemaResponse implements IMutateCustomerSkAdNetworkConversionValueSchemaResponse {

                        /**
                         * Constructs a new MutateCustomerSkAdNetworkConversionValueSchemaResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResponse);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResult|null);

                        /** MutateCustomerSkAdNetworkConversionValueSchemaResponse warning. */
                        public warning?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new MutateCustomerSkAdNetworkConversionValueSchemaResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResponse): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse;

                        /**
                         * Encodes the specified MutateCustomerSkAdNetworkConversionValueSchemaResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse.verify|verify} messages.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerSkAdNetworkConversionValueSchemaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse.verify|verify} messages.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerSkAdNetworkConversionValueSchemaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerSkAdNetworkConversionValueSchemaResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse;

                        /**
                         * Decodes a MutateCustomerSkAdNetworkConversionValueSchemaResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse;

                        /**
                         * Verifies a MutateCustomerSkAdNetworkConversionValueSchemaResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerSkAdNetworkConversionValueSchemaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerSkAdNetworkConversionValueSchemaResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse;

                        /**
                         * Creates a plain object from a MutateCustomerSkAdNetworkConversionValueSchemaResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerSkAdNetworkConversionValueSchemaResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerSkAdNetworkConversionValueSchemaResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerSkAdNetworkConversionValueSchemaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerSkAdNetworkConversionValueSchemaResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerUserAccessInvitationService */
                    class CustomerUserAccessInvitationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerUserAccessInvitationService 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 CustomerUserAccessInvitationService 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): CustomerUserAccessInvitationService;

                        /**
                         * Calls MutateCustomerUserAccessInvitation.
                         * @param request MutateCustomerUserAccessInvitationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerUserAccessInvitationResponse
                         */
                        public mutateCustomerUserAccessInvitation(request: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationRequest, callback: google.ads.googleads.v23.services.CustomerUserAccessInvitationService.MutateCustomerUserAccessInvitationCallback): void;

                        /**
                         * Calls MutateCustomerUserAccessInvitation.
                         * @param request MutateCustomerUserAccessInvitationRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerUserAccessInvitation(request: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationRequest): Promise<google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse>;
                    }

                    namespace CustomerUserAccessInvitationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerUserAccessInvitationService|mutateCustomerUserAccessInvitation}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerUserAccessInvitationResponse
                         */
                        type MutateCustomerUserAccessInvitationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse) => void;
                    }

                    /** Properties of a MutateCustomerUserAccessInvitationRequest. */
                    interface IMutateCustomerUserAccessInvitationRequest {

                        /** MutateCustomerUserAccessInvitationRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerUserAccessInvitationRequest operation */
                        operation?: (google.ads.googleads.v23.services.ICustomerUserAccessInvitationOperation|null);
                    }

                    /** Represents a MutateCustomerUserAccessInvitationRequest. */
                    class MutateCustomerUserAccessInvitationRequest implements IMutateCustomerUserAccessInvitationRequest {

                        /**
                         * Constructs a new MutateCustomerUserAccessInvitationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationRequest);

                        /** MutateCustomerUserAccessInvitationRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerUserAccessInvitationRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.ICustomerUserAccessInvitationOperation|null);

                        /**
                         * Creates a new MutateCustomerUserAccessInvitationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerUserAccessInvitationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationRequest): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationRequest;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationRequest.verify|verify} messages.
                         * @param message MutateCustomerUserAccessInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationRequest.verify|verify} messages.
                         * @param message MutateCustomerUserAccessInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerUserAccessInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationRequest;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerUserAccessInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationRequest;

                        /**
                         * Verifies a MutateCustomerUserAccessInvitationRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessInvitationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerUserAccessInvitationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationRequest;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessInvitationRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerUserAccessInvitationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessInvitationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerUserAccessInvitationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerUserAccessInvitationOperation. */
                    interface ICustomerUserAccessInvitationOperation {

                        /** CustomerUserAccessInvitationOperation create */
                        create?: (google.ads.googleads.v23.resources.ICustomerUserAccessInvitation|null);

                        /** CustomerUserAccessInvitationOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerUserAccessInvitationOperation. */
                    class CustomerUserAccessInvitationOperation implements ICustomerUserAccessInvitationOperation {

                        /**
                         * Constructs a new CustomerUserAccessInvitationOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerUserAccessInvitationOperation);

                        /** CustomerUserAccessInvitationOperation create. */
                        public create?: (google.ads.googleads.v23.resources.ICustomerUserAccessInvitation|null);

                        /** CustomerUserAccessInvitationOperation remove. */
                        public remove?: (string|null);

                        /** CustomerUserAccessInvitationOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new CustomerUserAccessInvitationOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerUserAccessInvitationOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerUserAccessInvitationOperation): google.ads.googleads.v23.services.CustomerUserAccessInvitationOperation;

                        /**
                         * Encodes the specified CustomerUserAccessInvitationOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerUserAccessInvitationOperation.verify|verify} messages.
                         * @param message CustomerUserAccessInvitationOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerUserAccessInvitationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessInvitationOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerUserAccessInvitationOperation.verify|verify} messages.
                         * @param message CustomerUserAccessInvitationOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerUserAccessInvitationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessInvitationOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerUserAccessInvitationOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerUserAccessInvitationOperation;

                        /**
                         * Decodes a CustomerUserAccessInvitationOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerUserAccessInvitationOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerUserAccessInvitationOperation;

                        /**
                         * Verifies a CustomerUserAccessInvitationOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessInvitationOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerUserAccessInvitationOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerUserAccessInvitationOperation;

                        /**
                         * Creates a plain object from a CustomerUserAccessInvitationOperation message. Also converts values to other types if specified.
                         * @param message CustomerUserAccessInvitationOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerUserAccessInvitationOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessInvitationOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerUserAccessInvitationOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerUserAccessInvitationResponse. */
                    interface IMutateCustomerUserAccessInvitationResponse {

                        /** MutateCustomerUserAccessInvitationResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResult|null);
                    }

                    /** Represents a MutateCustomerUserAccessInvitationResponse. */
                    class MutateCustomerUserAccessInvitationResponse implements IMutateCustomerUserAccessInvitationResponse {

                        /**
                         * Constructs a new MutateCustomerUserAccessInvitationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResponse);

                        /** MutateCustomerUserAccessInvitationResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResult|null);

                        /**
                         * Creates a new MutateCustomerUserAccessInvitationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerUserAccessInvitationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResponse): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse.verify|verify} messages.
                         * @param message MutateCustomerUserAccessInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse.verify|verify} messages.
                         * @param message MutateCustomerUserAccessInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerUserAccessInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerUserAccessInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse;

                        /**
                         * Verifies a MutateCustomerUserAccessInvitationResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessInvitationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerUserAccessInvitationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessInvitationResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerUserAccessInvitationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessInvitationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerUserAccessInvitationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerUserAccessInvitationResult. */
                    interface IMutateCustomerUserAccessInvitationResult {

                        /** MutateCustomerUserAccessInvitationResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomerUserAccessInvitationResult. */
                    class MutateCustomerUserAccessInvitationResult implements IMutateCustomerUserAccessInvitationResult {

                        /**
                         * Constructs a new MutateCustomerUserAccessInvitationResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResult);

                        /** MutateCustomerUserAccessInvitationResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomerUserAccessInvitationResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerUserAccessInvitationResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResult): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResult;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResult.verify|verify} messages.
                         * @param message MutateCustomerUserAccessInvitationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResult.verify|verify} messages.
                         * @param message MutateCustomerUserAccessInvitationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessInvitationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerUserAccessInvitationResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResult;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerUserAccessInvitationResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResult;

                        /**
                         * Verifies a MutateCustomerUserAccessInvitationResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessInvitationResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerUserAccessInvitationResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResult;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessInvitationResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerUserAccessInvitationResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerUserAccessInvitationResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessInvitationResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerUserAccessInvitationResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a CustomerUserAccessService */
                    class CustomerUserAccessService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerUserAccessService 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 CustomerUserAccessService 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): CustomerUserAccessService;

                        /**
                         * Calls MutateCustomerUserAccess.
                         * @param request MutateCustomerUserAccessRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerUserAccessResponse
                         */
                        public mutateCustomerUserAccess(request: google.ads.googleads.v23.services.IMutateCustomerUserAccessRequest, callback: google.ads.googleads.v23.services.CustomerUserAccessService.MutateCustomerUserAccessCallback): void;

                        /**
                         * Calls MutateCustomerUserAccess.
                         * @param request MutateCustomerUserAccessRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerUserAccess(request: google.ads.googleads.v23.services.IMutateCustomerUserAccessRequest): Promise<google.ads.googleads.v23.services.MutateCustomerUserAccessResponse>;
                    }

                    namespace CustomerUserAccessService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.CustomerUserAccessService|mutateCustomerUserAccess}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerUserAccessResponse
                         */
                        type MutateCustomerUserAccessCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateCustomerUserAccessResponse) => void;
                    }

                    /** Properties of a MutateCustomerUserAccessRequest. */
                    interface IMutateCustomerUserAccessRequest {

                        /** MutateCustomerUserAccessRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerUserAccessRequest operation */
                        operation?: (google.ads.googleads.v23.services.ICustomerUserAccessOperation|null);
                    }

                    /** Represents a MutateCustomerUserAccessRequest. */
                    class MutateCustomerUserAccessRequest implements IMutateCustomerUserAccessRequest {

                        /**
                         * Constructs a new MutateCustomerUserAccessRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessRequest);

                        /** MutateCustomerUserAccessRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerUserAccessRequest operation. */
                        public operation?: (google.ads.googleads.v23.services.ICustomerUserAccessOperation|null);

                        /**
                         * Creates a new MutateCustomerUserAccessRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerUserAccessRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessRequest): google.ads.googleads.v23.services.MutateCustomerUserAccessRequest;

                        /**
                         * Encodes the specified MutateCustomerUserAccessRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessRequest.verify|verify} messages.
                         * @param message MutateCustomerUserAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessRequest.verify|verify} messages.
                         * @param message MutateCustomerUserAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerUserAccessRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerUserAccessRequest;

                        /**
                         * Decodes a MutateCustomerUserAccessRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerUserAccessRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerUserAccessRequest;

                        /**
                         * Verifies a MutateCustomerUserAccessRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerUserAccessRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerUserAccessRequest;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessRequest message. Also converts values to other types if specified.
                         * @param message MutateCustomerUserAccessRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerUserAccessRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerUserAccessRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CustomerUserAccessOperation. */
                    interface ICustomerUserAccessOperation {

                        /** CustomerUserAccessOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerUserAccessOperation update */
                        update?: (google.ads.googleads.v23.resources.ICustomerUserAccess|null);

                        /** CustomerUserAccessOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerUserAccessOperation. */
                    class CustomerUserAccessOperation implements ICustomerUserAccessOperation {

                        /**
                         * Constructs a new CustomerUserAccessOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICustomerUserAccessOperation);

                        /** CustomerUserAccessOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerUserAccessOperation update. */
                        public update?: (google.ads.googleads.v23.resources.ICustomerUserAccess|null);

                        /** CustomerUserAccessOperation remove. */
                        public remove?: (string|null);

                        /** CustomerUserAccessOperation operation. */
                        public operation?: ("update"|"remove");

                        /**
                         * Creates a new CustomerUserAccessOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerUserAccessOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICustomerUserAccessOperation): google.ads.googleads.v23.services.CustomerUserAccessOperation;

                        /**
                         * Encodes the specified CustomerUserAccessOperation message. Does not implicitly {@link google.ads.googleads.v23.services.CustomerUserAccessOperation.verify|verify} messages.
                         * @param message CustomerUserAccessOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICustomerUserAccessOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CustomerUserAccessOperation.verify|verify} messages.
                         * @param message CustomerUserAccessOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICustomerUserAccessOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CustomerUserAccessOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CustomerUserAccessOperation;

                        /**
                         * Decodes a CustomerUserAccessOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerUserAccessOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CustomerUserAccessOperation;

                        /**
                         * Verifies a CustomerUserAccessOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CustomerUserAccessOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CustomerUserAccessOperation;

                        /**
                         * Creates a plain object from a CustomerUserAccessOperation message. Also converts values to other types if specified.
                         * @param message CustomerUserAccessOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CustomerUserAccessOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CustomerUserAccessOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerUserAccessResponse. */
                    interface IMutateCustomerUserAccessResponse {

                        /** MutateCustomerUserAccessResponse result */
                        result?: (google.ads.googleads.v23.services.IMutateCustomerUserAccessResult|null);
                    }

                    /** Represents a MutateCustomerUserAccessResponse. */
                    class MutateCustomerUserAccessResponse implements IMutateCustomerUserAccessResponse {

                        /**
                         * Constructs a new MutateCustomerUserAccessResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessResponse);

                        /** MutateCustomerUserAccessResponse result. */
                        public result?: (google.ads.googleads.v23.services.IMutateCustomerUserAccessResult|null);

                        /**
                         * Creates a new MutateCustomerUserAccessResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerUserAccessResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessResponse): google.ads.googleads.v23.services.MutateCustomerUserAccessResponse;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessResponse.verify|verify} messages.
                         * @param message MutateCustomerUserAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessResponse.verify|verify} messages.
                         * @param message MutateCustomerUserAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerUserAccessResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerUserAccessResponse;

                        /**
                         * Decodes a MutateCustomerUserAccessResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerUserAccessResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerUserAccessResponse;

                        /**
                         * Verifies a MutateCustomerUserAccessResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerUserAccessResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerUserAccessResponse;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessResponse message. Also converts values to other types if specified.
                         * @param message MutateCustomerUserAccessResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerUserAccessResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerUserAccessResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateCustomerUserAccessResult. */
                    interface IMutateCustomerUserAccessResult {

                        /** MutateCustomerUserAccessResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateCustomerUserAccessResult. */
                    class MutateCustomerUserAccessResult implements IMutateCustomerUserAccessResult {

                        /**
                         * Constructs a new MutateCustomerUserAccessResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessResult);

                        /** MutateCustomerUserAccessResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateCustomerUserAccessResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerUserAccessResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateCustomerUserAccessResult): google.ads.googleads.v23.services.MutateCustomerUserAccessResult;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessResult.verify|verify} messages.
                         * @param message MutateCustomerUserAccessResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateCustomerUserAccessResult.verify|verify} messages.
                         * @param message MutateCustomerUserAccessResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateCustomerUserAccessResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateCustomerUserAccessResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateCustomerUserAccessResult;

                        /**
                         * Decodes a MutateCustomerUserAccessResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerUserAccessResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateCustomerUserAccessResult;

                        /**
                         * Verifies a MutateCustomerUserAccessResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateCustomerUserAccessResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateCustomerUserAccessResult;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessResult message. Also converts values to other types if specified.
                         * @param message MutateCustomerUserAccessResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateCustomerUserAccessResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateCustomerUserAccessResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a DataLinkService */
                    class DataLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DataLinkService 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 DataLinkService 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): DataLinkService;

                        /**
                         * Calls CreateDataLink.
                         * @param request CreateDataLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateDataLinkResponse
                         */
                        public createDataLink(request: google.ads.googleads.v23.services.ICreateDataLinkRequest, callback: google.ads.googleads.v23.services.DataLinkService.CreateDataLinkCallback): void;

                        /**
                         * Calls CreateDataLink.
                         * @param request CreateDataLinkRequest message or plain object
                         * @returns Promise
                         */
                        public createDataLink(request: google.ads.googleads.v23.services.ICreateDataLinkRequest): Promise<google.ads.googleads.v23.services.CreateDataLinkResponse>;

                        /**
                         * Calls RemoveDataLink.
                         * @param request RemoveDataLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RemoveDataLinkResponse
                         */
                        public removeDataLink(request: google.ads.googleads.v23.services.IRemoveDataLinkRequest, callback: google.ads.googleads.v23.services.DataLinkService.RemoveDataLinkCallback): void;

                        /**
                         * Calls RemoveDataLink.
                         * @param request RemoveDataLinkRequest message or plain object
                         * @returns Promise
                         */
                        public removeDataLink(request: google.ads.googleads.v23.services.IRemoveDataLinkRequest): Promise<google.ads.googleads.v23.services.RemoveDataLinkResponse>;

                        /**
                         * Calls UpdateDataLink.
                         * @param request UpdateDataLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateDataLinkResponse
                         */
                        public updateDataLink(request: google.ads.googleads.v23.services.IUpdateDataLinkRequest, callback: google.ads.googleads.v23.services.DataLinkService.UpdateDataLinkCallback): void;

                        /**
                         * Calls UpdateDataLink.
                         * @param request UpdateDataLinkRequest message or plain object
                         * @returns Promise
                         */
                        public updateDataLink(request: google.ads.googleads.v23.services.IUpdateDataLinkRequest): Promise<google.ads.googleads.v23.services.UpdateDataLinkResponse>;
                    }

                    namespace DataLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.DataLinkService|createDataLink}.
                         * @param error Error, if any
                         * @param [response] CreateDataLinkResponse
                         */
                        type CreateDataLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.CreateDataLinkResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.DataLinkService|removeDataLink}.
                         * @param error Error, if any
                         * @param [response] RemoveDataLinkResponse
                         */
                        type RemoveDataLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.RemoveDataLinkResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.DataLinkService|updateDataLink}.
                         * @param error Error, if any
                         * @param [response] UpdateDataLinkResponse
                         */
                        type UpdateDataLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.UpdateDataLinkResponse) => void;
                    }

                    /** Properties of a CreateDataLinkRequest. */
                    interface ICreateDataLinkRequest {

                        /** CreateDataLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateDataLinkRequest data_link */
                        data_link?: (google.ads.googleads.v23.resources.IDataLink|null);
                    }

                    /** Represents a CreateDataLinkRequest. */
                    class CreateDataLinkRequest implements ICreateDataLinkRequest {

                        /**
                         * Constructs a new CreateDataLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateDataLinkRequest);

                        /** CreateDataLinkRequest customer_id. */
                        public customer_id: string;

                        /** CreateDataLinkRequest data_link. */
                        public data_link?: (google.ads.googleads.v23.resources.IDataLink|null);

                        /**
                         * Creates a new CreateDataLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateDataLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateDataLinkRequest): google.ads.googleads.v23.services.CreateDataLinkRequest;

                        /**
                         * Encodes the specified CreateDataLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.CreateDataLinkRequest.verify|verify} messages.
                         * @param message CreateDataLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateDataLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateDataLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateDataLinkRequest.verify|verify} messages.
                         * @param message CreateDataLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateDataLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateDataLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateDataLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateDataLinkRequest;

                        /**
                         * Decodes a CreateDataLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateDataLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateDataLinkRequest;

                        /**
                         * Verifies a CreateDataLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateDataLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateDataLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateDataLinkRequest;

                        /**
                         * Creates a plain object from a CreateDataLinkRequest message. Also converts values to other types if specified.
                         * @param message CreateDataLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateDataLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateDataLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateDataLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateDataLinkResponse. */
                    interface ICreateDataLinkResponse {

                        /** CreateDataLinkResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a CreateDataLinkResponse. */
                    class CreateDataLinkResponse implements ICreateDataLinkResponse {

                        /**
                         * Constructs a new CreateDataLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateDataLinkResponse);

                        /** CreateDataLinkResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new CreateDataLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateDataLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateDataLinkResponse): google.ads.googleads.v23.services.CreateDataLinkResponse;

                        /**
                         * Encodes the specified CreateDataLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.CreateDataLinkResponse.verify|verify} messages.
                         * @param message CreateDataLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateDataLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateDataLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateDataLinkResponse.verify|verify} messages.
                         * @param message CreateDataLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateDataLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateDataLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateDataLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateDataLinkResponse;

                        /**
                         * Decodes a CreateDataLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateDataLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateDataLinkResponse;

                        /**
                         * Verifies a CreateDataLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateDataLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateDataLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateDataLinkResponse;

                        /**
                         * Creates a plain object from a CreateDataLinkResponse message. Also converts values to other types if specified.
                         * @param message CreateDataLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateDataLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateDataLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateDataLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveDataLinkRequest. */
                    interface IRemoveDataLinkRequest {

                        /** RemoveDataLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** RemoveDataLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a RemoveDataLinkRequest. */
                    class RemoveDataLinkRequest implements IRemoveDataLinkRequest {

                        /**
                         * Constructs a new RemoveDataLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveDataLinkRequest);

                        /** RemoveDataLinkRequest customer_id. */
                        public customer_id: string;

                        /** RemoveDataLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new RemoveDataLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveDataLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveDataLinkRequest): google.ads.googleads.v23.services.RemoveDataLinkRequest;

                        /**
                         * Encodes the specified RemoveDataLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveDataLinkRequest.verify|verify} messages.
                         * @param message RemoveDataLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveDataLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveDataLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveDataLinkRequest.verify|verify} messages.
                         * @param message RemoveDataLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveDataLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveDataLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveDataLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveDataLinkRequest;

                        /**
                         * Decodes a RemoveDataLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveDataLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveDataLinkRequest;

                        /**
                         * Verifies a RemoveDataLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveDataLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveDataLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveDataLinkRequest;

                        /**
                         * Creates a plain object from a RemoveDataLinkRequest message. Also converts values to other types if specified.
                         * @param message RemoveDataLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveDataLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveDataLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveDataLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveDataLinkResponse. */
                    interface IRemoveDataLinkResponse {

                        /** RemoveDataLinkResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a RemoveDataLinkResponse. */
                    class RemoveDataLinkResponse implements IRemoveDataLinkResponse {

                        /**
                         * Constructs a new RemoveDataLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveDataLinkResponse);

                        /** RemoveDataLinkResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new RemoveDataLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveDataLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveDataLinkResponse): google.ads.googleads.v23.services.RemoveDataLinkResponse;

                        /**
                         * Encodes the specified RemoveDataLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveDataLinkResponse.verify|verify} messages.
                         * @param message RemoveDataLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveDataLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveDataLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveDataLinkResponse.verify|verify} messages.
                         * @param message RemoveDataLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveDataLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveDataLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveDataLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveDataLinkResponse;

                        /**
                         * Decodes a RemoveDataLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveDataLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveDataLinkResponse;

                        /**
                         * Verifies a RemoveDataLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveDataLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveDataLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveDataLinkResponse;

                        /**
                         * Creates a plain object from a RemoveDataLinkResponse message. Also converts values to other types if specified.
                         * @param message RemoveDataLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveDataLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveDataLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveDataLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateDataLinkRequest. */
                    interface IUpdateDataLinkRequest {

                        /** UpdateDataLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** UpdateDataLinkRequest data_link_status */
                        data_link_status?: (google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus|keyof typeof google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus|null);

                        /** UpdateDataLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an UpdateDataLinkRequest. */
                    class UpdateDataLinkRequest implements IUpdateDataLinkRequest {

                        /**
                         * Constructs a new UpdateDataLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUpdateDataLinkRequest);

                        /** UpdateDataLinkRequest customer_id. */
                        public customer_id: string;

                        /** UpdateDataLinkRequest data_link_status. */
                        public data_link_status: (google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus|keyof typeof google.ads.googleads.v23.enums.DataLinkStatusEnum.DataLinkStatus);

                        /** UpdateDataLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new UpdateDataLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateDataLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUpdateDataLinkRequest): google.ads.googleads.v23.services.UpdateDataLinkRequest;

                        /**
                         * Encodes the specified UpdateDataLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.UpdateDataLinkRequest.verify|verify} messages.
                         * @param message UpdateDataLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUpdateDataLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateDataLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UpdateDataLinkRequest.verify|verify} messages.
                         * @param message UpdateDataLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUpdateDataLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateDataLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateDataLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UpdateDataLinkRequest;

                        /**
                         * Decodes an UpdateDataLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateDataLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UpdateDataLinkRequest;

                        /**
                         * Verifies an UpdateDataLinkRequest message.
                         * @param message Plain 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 UpdateDataLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateDataLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UpdateDataLinkRequest;

                        /**
                         * Creates a plain object from an UpdateDataLinkRequest message. Also converts values to other types if specified.
                         * @param message UpdateDataLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UpdateDataLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateDataLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateDataLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateDataLinkResponse. */
                    interface IUpdateDataLinkResponse {

                        /** UpdateDataLinkResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an UpdateDataLinkResponse. */
                    class UpdateDataLinkResponse implements IUpdateDataLinkResponse {

                        /**
                         * Constructs a new UpdateDataLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUpdateDataLinkResponse);

                        /** UpdateDataLinkResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new UpdateDataLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateDataLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUpdateDataLinkResponse): google.ads.googleads.v23.services.UpdateDataLinkResponse;

                        /**
                         * Encodes the specified UpdateDataLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.UpdateDataLinkResponse.verify|verify} messages.
                         * @param message UpdateDataLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUpdateDataLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateDataLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UpdateDataLinkResponse.verify|verify} messages.
                         * @param message UpdateDataLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUpdateDataLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateDataLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateDataLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UpdateDataLinkResponse;

                        /**
                         * Decodes an UpdateDataLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateDataLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UpdateDataLinkResponse;

                        /**
                         * Verifies an UpdateDataLinkResponse message.
                         * @param message Plain 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 UpdateDataLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateDataLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UpdateDataLinkResponse;

                        /**
                         * Creates a plain object from an UpdateDataLinkResponse message. Also converts values to other types if specified.
                         * @param message UpdateDataLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UpdateDataLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateDataLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateDataLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a GeoTargetConstantService */
                    class GeoTargetConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new GeoTargetConstantService 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 GeoTargetConstantService 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): GeoTargetConstantService;

                        /**
                         * Calls SuggestGeoTargetConstants.
                         * @param request SuggestGeoTargetConstantsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SuggestGeoTargetConstantsResponse
                         */
                        public suggestGeoTargetConstants(request: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsRequest, callback: google.ads.googleads.v23.services.GeoTargetConstantService.SuggestGeoTargetConstantsCallback): void;

                        /**
                         * Calls SuggestGeoTargetConstants.
                         * @param request SuggestGeoTargetConstantsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestGeoTargetConstants(request: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsRequest): Promise<google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse>;
                    }

                    namespace GeoTargetConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.GeoTargetConstantService|suggestGeoTargetConstants}.
                         * @param error Error, if any
                         * @param [response] SuggestGeoTargetConstantsResponse
                         */
                        type SuggestGeoTargetConstantsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse) => void;
                    }

                    /** Properties of a SuggestGeoTargetConstantsRequest. */
                    interface ISuggestGeoTargetConstantsRequest {

                        /** SuggestGeoTargetConstantsRequest locale */
                        locale?: (string|null);

                        /** SuggestGeoTargetConstantsRequest country_code */
                        country_code?: (string|null);

                        /** SuggestGeoTargetConstantsRequest location_names */
                        location_names?: (google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.ILocationNames|null);

                        /** SuggestGeoTargetConstantsRequest geo_targets */
                        geo_targets?: (google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.IGeoTargets|null);
                    }

                    /** Represents a SuggestGeoTargetConstantsRequest. */
                    class SuggestGeoTargetConstantsRequest implements ISuggestGeoTargetConstantsRequest {

                        /**
                         * Constructs a new SuggestGeoTargetConstantsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsRequest);

                        /** SuggestGeoTargetConstantsRequest locale. */
                        public locale?: (string|null);

                        /** SuggestGeoTargetConstantsRequest country_code. */
                        public country_code?: (string|null);

                        /** SuggestGeoTargetConstantsRequest location_names. */
                        public location_names?: (google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.ILocationNames|null);

                        /** SuggestGeoTargetConstantsRequest geo_targets. */
                        public geo_targets?: (google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.IGeoTargets|null);

                        /** SuggestGeoTargetConstantsRequest query. */
                        public query?: ("location_names"|"geo_targets");

                        /**
                         * Creates a new SuggestGeoTargetConstantsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestGeoTargetConstantsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsRequest): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.verify|verify} messages.
                         * @param message SuggestGeoTargetConstantsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.verify|verify} messages.
                         * @param message SuggestGeoTargetConstantsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestGeoTargetConstantsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestGeoTargetConstantsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest;

                        /**
                         * Decodes a SuggestGeoTargetConstantsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestGeoTargetConstantsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest;

                        /**
                         * Verifies a SuggestGeoTargetConstantsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestGeoTargetConstantsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestGeoTargetConstantsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest;

                        /**
                         * Creates a plain object from a SuggestGeoTargetConstantsRequest message. Also converts values to other types if specified.
                         * @param message SuggestGeoTargetConstantsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestGeoTargetConstantsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestGeoTargetConstantsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SuggestGeoTargetConstantsRequest {

                        /** Properties of a LocationNames. */
                        interface ILocationNames {

                            /** LocationNames names */
                            names?: (string[]|null);
                        }

                        /** Represents a LocationNames. */
                        class LocationNames implements ILocationNames {

                            /**
                             * Constructs a new LocationNames.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.ILocationNames);

                            /** LocationNames names. */
                            public names: string[];

                            /**
                             * Creates a new LocationNames instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LocationNames instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.ILocationNames): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.LocationNames;

                            /**
                             * Encodes the specified LocationNames message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.LocationNames.verify|verify} messages.
                             * @param message LocationNames message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.ILocationNames, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LocationNames message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.LocationNames.verify|verify} messages.
                             * @param message LocationNames message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.ILocationNames, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LocationNames message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LocationNames
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.LocationNames;

                            /**
                             * Decodes a LocationNames message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LocationNames
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.LocationNames;

                            /**
                             * Verifies a LocationNames message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LocationNames message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LocationNames
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.LocationNames;

                            /**
                             * Creates a plain object from a LocationNames message. Also converts values to other types if specified.
                             * @param message LocationNames
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.LocationNames, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LocationNames to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LocationNames
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a GeoTargets. */
                        interface IGeoTargets {

                            /** GeoTargets geo_target_constants */
                            geo_target_constants?: (string[]|null);
                        }

                        /** Represents a GeoTargets. */
                        class GeoTargets implements IGeoTargets {

                            /**
                             * Constructs a new GeoTargets.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.IGeoTargets);

                            /** GeoTargets geo_target_constants. */
                            public geo_target_constants: string[];

                            /**
                             * Creates a new GeoTargets instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns GeoTargets instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.IGeoTargets): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.GeoTargets;

                            /**
                             * Encodes the specified GeoTargets message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.GeoTargets.verify|verify} messages.
                             * @param message GeoTargets message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.IGeoTargets, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified GeoTargets message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.GeoTargets.verify|verify} messages.
                             * @param message GeoTargets message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.IGeoTargets, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a GeoTargets message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns GeoTargets
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.GeoTargets;

                            /**
                             * Decodes a GeoTargets message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns GeoTargets
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.GeoTargets;

                            /**
                             * Verifies a GeoTargets message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a GeoTargets message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns GeoTargets
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.GeoTargets;

                            /**
                             * Creates a plain object from a GeoTargets message. Also converts values to other types if specified.
                             * @param message GeoTargets
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsRequest.GeoTargets, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this GeoTargets to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for GeoTargets
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a SuggestGeoTargetConstantsResponse. */
                    interface ISuggestGeoTargetConstantsResponse {

                        /** SuggestGeoTargetConstantsResponse geo_target_constant_suggestions */
                        geo_target_constant_suggestions?: (google.ads.googleads.v23.services.IGeoTargetConstantSuggestion[]|null);
                    }

                    /** Represents a SuggestGeoTargetConstantsResponse. */
                    class SuggestGeoTargetConstantsResponse implements ISuggestGeoTargetConstantsResponse {

                        /**
                         * Constructs a new SuggestGeoTargetConstantsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsResponse);

                        /** SuggestGeoTargetConstantsResponse geo_target_constant_suggestions. */
                        public geo_target_constant_suggestions: google.ads.googleads.v23.services.IGeoTargetConstantSuggestion[];

                        /**
                         * Creates a new SuggestGeoTargetConstantsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestGeoTargetConstantsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsResponse): google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse.verify|verify} messages.
                         * @param message SuggestGeoTargetConstantsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse.verify|verify} messages.
                         * @param message SuggestGeoTargetConstantsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestGeoTargetConstantsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestGeoTargetConstantsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestGeoTargetConstantsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse;

                        /**
                         * Decodes a SuggestGeoTargetConstantsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestGeoTargetConstantsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse;

                        /**
                         * Verifies a SuggestGeoTargetConstantsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestGeoTargetConstantsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestGeoTargetConstantsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse;

                        /**
                         * Creates a plain object from a SuggestGeoTargetConstantsResponse message. Also converts values to other types if specified.
                         * @param message SuggestGeoTargetConstantsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestGeoTargetConstantsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestGeoTargetConstantsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestGeoTargetConstantsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GeoTargetConstantSuggestion. */
                    interface IGeoTargetConstantSuggestion {

                        /** GeoTargetConstantSuggestion locale */
                        locale?: (string|null);

                        /** GeoTargetConstantSuggestion reach */
                        reach?: (number|null);

                        /** GeoTargetConstantSuggestion search_term */
                        search_term?: (string|null);

                        /** GeoTargetConstantSuggestion geo_target_constant */
                        geo_target_constant?: (google.ads.googleads.v23.resources.IGeoTargetConstant|null);

                        /** GeoTargetConstantSuggestion geo_target_constant_parents */
                        geo_target_constant_parents?: (google.ads.googleads.v23.resources.IGeoTargetConstant[]|null);
                    }

                    /** Represents a GeoTargetConstantSuggestion. */
                    class GeoTargetConstantSuggestion implements IGeoTargetConstantSuggestion {

                        /**
                         * Constructs a new GeoTargetConstantSuggestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGeoTargetConstantSuggestion);

                        /** GeoTargetConstantSuggestion locale. */
                        public locale?: (string|null);

                        /** GeoTargetConstantSuggestion reach. */
                        public reach?: (number|null);

                        /** GeoTargetConstantSuggestion search_term. */
                        public search_term?: (string|null);

                        /** GeoTargetConstantSuggestion geo_target_constant. */
                        public geo_target_constant?: (google.ads.googleads.v23.resources.IGeoTargetConstant|null);

                        /** GeoTargetConstantSuggestion geo_target_constant_parents. */
                        public geo_target_constant_parents: google.ads.googleads.v23.resources.IGeoTargetConstant[];

                        /**
                         * Creates a new GeoTargetConstantSuggestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetConstantSuggestion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGeoTargetConstantSuggestion): google.ads.googleads.v23.services.GeoTargetConstantSuggestion;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestion message. Does not implicitly {@link google.ads.googleads.v23.services.GeoTargetConstantSuggestion.verify|verify} messages.
                         * @param message GeoTargetConstantSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGeoTargetConstantSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GeoTargetConstantSuggestion.verify|verify} messages.
                         * @param message GeoTargetConstantSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGeoTargetConstantSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstantSuggestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GeoTargetConstantSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GeoTargetConstantSuggestion;

                        /**
                         * Decodes a GeoTargetConstantSuggestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeoTargetConstantSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GeoTargetConstantSuggestion;

                        /**
                         * Verifies a GeoTargetConstantSuggestion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstantSuggestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GeoTargetConstantSuggestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GeoTargetConstantSuggestion;

                        /**
                         * Creates a plain object from a GeoTargetConstantSuggestion message. Also converts values to other types if specified.
                         * @param message GeoTargetConstantSuggestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GeoTargetConstantSuggestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstantSuggestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GeoTargetConstantSuggestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a GoalService */
                    class GoalService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new GoalService 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 GoalService 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): GoalService;

                        /**
                         * Calls MutateGoals.
                         * @param request MutateGoalsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateGoalsResponse
                         */
                        public mutateGoals(request: google.ads.googleads.v23.services.IMutateGoalsRequest, callback: google.ads.googleads.v23.services.GoalService.MutateGoalsCallback): void;

                        /**
                         * Calls MutateGoals.
                         * @param request MutateGoalsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateGoals(request: google.ads.googleads.v23.services.IMutateGoalsRequest): Promise<google.ads.googleads.v23.services.MutateGoalsResponse>;
                    }

                    namespace GoalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.GoalService|mutateGoals}.
                         * @param error Error, if any
                         * @param [response] MutateGoalsResponse
                         */
                        type MutateGoalsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateGoalsResponse) => void;
                    }

                    /** Properties of a MutateGoalsRequest. */
                    interface IMutateGoalsRequest {

                        /** MutateGoalsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateGoalsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IGoalOperation[]|null);

                        /** MutateGoalsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateGoalsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateGoalsRequest. */
                    class MutateGoalsRequest implements IMutateGoalsRequest {

                        /**
                         * Constructs a new MutateGoalsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateGoalsRequest);

                        /** MutateGoalsRequest customer_id. */
                        public customer_id: string;

                        /** MutateGoalsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IGoalOperation[];

                        /** MutateGoalsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateGoalsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateGoalsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateGoalsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateGoalsRequest): google.ads.googleads.v23.services.MutateGoalsRequest;

                        /**
                         * Encodes the specified MutateGoalsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoalsRequest.verify|verify} messages.
                         * @param message MutateGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateGoalsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoalsRequest.verify|verify} messages.
                         * @param message MutateGoalsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateGoalsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateGoalsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateGoalsRequest;

                        /**
                         * Decodes a MutateGoalsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateGoalsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateGoalsRequest;

                        /**
                         * Verifies a MutateGoalsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateGoalsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateGoalsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateGoalsRequest;

                        /**
                         * Creates a plain object from a MutateGoalsRequest message. Also converts values to other types if specified.
                         * @param message MutateGoalsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateGoalsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateGoalsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateGoalsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GoalOperation. */
                    interface IGoalOperation {

                        /** GoalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** GoalOperation create */
                        create?: (google.ads.googleads.v23.resources.IGoal|null);

                        /** GoalOperation update */
                        update?: (google.ads.googleads.v23.resources.IGoal|null);
                    }

                    /** Represents a GoalOperation. */
                    class GoalOperation implements IGoalOperation {

                        /**
                         * Constructs a new GoalOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGoalOperation);

                        /** GoalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** GoalOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IGoal|null);

                        /** GoalOperation update. */
                        public update?: (google.ads.googleads.v23.resources.IGoal|null);

                        /** GoalOperation operation. */
                        public operation?: ("create"|"update");

                        /**
                         * Creates a new GoalOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoalOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGoalOperation): google.ads.googleads.v23.services.GoalOperation;

                        /**
                         * Encodes the specified GoalOperation message. Does not implicitly {@link google.ads.googleads.v23.services.GoalOperation.verify|verify} messages.
                         * @param message GoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GoalOperation.verify|verify} messages.
                         * @param message GoalOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGoalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoalOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GoalOperation;

                        /**
                         * Decodes a GoalOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoalOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GoalOperation;

                        /**
                         * Verifies a GoalOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoalOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GoalOperation;

                        /**
                         * Creates a plain object from a GoalOperation message. Also converts values to other types if specified.
                         * @param message GoalOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GoalOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoalOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateGoalsResponse. */
                    interface IMutateGoalsResponse {

                        /** MutateGoalsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateGoalsResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateGoalResult[]|null);
                    }

                    /** Represents a MutateGoalsResponse. */
                    class MutateGoalsResponse implements IMutateGoalsResponse {

                        /**
                         * Constructs a new MutateGoalsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateGoalsResponse);

                        /** MutateGoalsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateGoalsResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateGoalResult[];

                        /**
                         * Creates a new MutateGoalsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateGoalsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateGoalsResponse): google.ads.googleads.v23.services.MutateGoalsResponse;

                        /**
                         * Encodes the specified MutateGoalsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoalsResponse.verify|verify} messages.
                         * @param message MutateGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateGoalsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoalsResponse.verify|verify} messages.
                         * @param message MutateGoalsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateGoalsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateGoalsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateGoalsResponse;

                        /**
                         * Decodes a MutateGoalsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateGoalsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateGoalsResponse;

                        /**
                         * Verifies a MutateGoalsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateGoalsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateGoalsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateGoalsResponse;

                        /**
                         * Creates a plain object from a MutateGoalsResponse message. Also converts values to other types if specified.
                         * @param message MutateGoalsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateGoalsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateGoalsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateGoalsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateGoalResult. */
                    interface IMutateGoalResult {

                        /** MutateGoalResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateGoalResult. */
                    class MutateGoalResult implements IMutateGoalResult {

                        /**
                         * Constructs a new MutateGoalResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateGoalResult);

                        /** MutateGoalResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateGoalResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateGoalResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateGoalResult): google.ads.googleads.v23.services.MutateGoalResult;

                        /**
                         * Encodes the specified MutateGoalResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoalResult.verify|verify} messages.
                         * @param message MutateGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateGoalResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateGoalResult.verify|verify} messages.
                         * @param message MutateGoalResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateGoalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateGoalResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateGoalResult;

                        /**
                         * Decodes a MutateGoalResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateGoalResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateGoalResult;

                        /**
                         * Verifies a MutateGoalResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateGoalResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateGoalResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateGoalResult;

                        /**
                         * Creates a plain object from a MutateGoalResult message. Also converts values to other types if specified.
                         * @param message MutateGoalResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateGoalResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateGoalResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateGoalResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a GoogleAdsFieldService */
                    class GoogleAdsFieldService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new GoogleAdsFieldService 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 GoogleAdsFieldService 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): GoogleAdsFieldService;

                        /**
                         * Calls GetGoogleAdsField.
                         * @param request GetGoogleAdsFieldRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GoogleAdsField
                         */
                        public getGoogleAdsField(request: google.ads.googleads.v23.services.IGetGoogleAdsFieldRequest, callback: google.ads.googleads.v23.services.GoogleAdsFieldService.GetGoogleAdsFieldCallback): void;

                        /**
                         * Calls GetGoogleAdsField.
                         * @param request GetGoogleAdsFieldRequest message or plain object
                         * @returns Promise
                         */
                        public getGoogleAdsField(request: google.ads.googleads.v23.services.IGetGoogleAdsFieldRequest): Promise<google.ads.googleads.v23.resources.GoogleAdsField>;

                        /**
                         * Calls SearchGoogleAdsFields.
                         * @param request SearchGoogleAdsFieldsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SearchGoogleAdsFieldsResponse
                         */
                        public searchGoogleAdsFields(request: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsRequest, callback: google.ads.googleads.v23.services.GoogleAdsFieldService.SearchGoogleAdsFieldsCallback): void;

                        /**
                         * Calls SearchGoogleAdsFields.
                         * @param request SearchGoogleAdsFieldsRequest message or plain object
                         * @returns Promise
                         */
                        public searchGoogleAdsFields(request: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsRequest): Promise<google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse>;
                    }

                    namespace GoogleAdsFieldService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.GoogleAdsFieldService|getGoogleAdsField}.
                         * @param error Error, if any
                         * @param [response] GoogleAdsField
                         */
                        type GetGoogleAdsFieldCallback = (error: (Error|null), response?: google.ads.googleads.v23.resources.GoogleAdsField) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.GoogleAdsFieldService|searchGoogleAdsFields}.
                         * @param error Error, if any
                         * @param [response] SearchGoogleAdsFieldsResponse
                         */
                        type SearchGoogleAdsFieldsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse) => void;
                    }

                    /** Properties of a GetGoogleAdsFieldRequest. */
                    interface IGetGoogleAdsFieldRequest {

                        /** GetGoogleAdsFieldRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetGoogleAdsFieldRequest. */
                    class GetGoogleAdsFieldRequest implements IGetGoogleAdsFieldRequest {

                        /**
                         * Constructs a new GetGoogleAdsFieldRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGetGoogleAdsFieldRequest);

                        /** GetGoogleAdsFieldRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetGoogleAdsFieldRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetGoogleAdsFieldRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGetGoogleAdsFieldRequest): google.ads.googleads.v23.services.GetGoogleAdsFieldRequest;

                        /**
                         * Encodes the specified GetGoogleAdsFieldRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GetGoogleAdsFieldRequest.verify|verify} messages.
                         * @param message GetGoogleAdsFieldRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGetGoogleAdsFieldRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetGoogleAdsFieldRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GetGoogleAdsFieldRequest.verify|verify} messages.
                         * @param message GetGoogleAdsFieldRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGetGoogleAdsFieldRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetGoogleAdsFieldRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetGoogleAdsFieldRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GetGoogleAdsFieldRequest;

                        /**
                         * Decodes a GetGoogleAdsFieldRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetGoogleAdsFieldRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GetGoogleAdsFieldRequest;

                        /**
                         * Verifies a GetGoogleAdsFieldRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetGoogleAdsFieldRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetGoogleAdsFieldRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GetGoogleAdsFieldRequest;

                        /**
                         * Creates a plain object from a GetGoogleAdsFieldRequest message. Also converts values to other types if specified.
                         * @param message GetGoogleAdsFieldRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GetGoogleAdsFieldRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetGoogleAdsFieldRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetGoogleAdsFieldRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchGoogleAdsFieldsRequest. */
                    interface ISearchGoogleAdsFieldsRequest {

                        /** SearchGoogleAdsFieldsRequest query */
                        query?: (string|null);

                        /** SearchGoogleAdsFieldsRequest page_token */
                        page_token?: (string|null);

                        /** SearchGoogleAdsFieldsRequest page_size */
                        page_size?: (number|null);
                    }

                    /** Represents a SearchGoogleAdsFieldsRequest. */
                    class SearchGoogleAdsFieldsRequest implements ISearchGoogleAdsFieldsRequest {

                        /**
                         * Constructs a new SearchGoogleAdsFieldsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsRequest);

                        /** SearchGoogleAdsFieldsRequest query. */
                        public query: string;

                        /** SearchGoogleAdsFieldsRequest page_token. */
                        public page_token: string;

                        /** SearchGoogleAdsFieldsRequest page_size. */
                        public page_size: number;

                        /**
                         * Creates a new SearchGoogleAdsFieldsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsFieldsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsRequest): google.ads.googleads.v23.services.SearchGoogleAdsFieldsRequest;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsFieldsRequest.verify|verify} messages.
                         * @param message SearchGoogleAdsFieldsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsFieldsRequest.verify|verify} messages.
                         * @param message SearchGoogleAdsFieldsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsFieldsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchGoogleAdsFieldsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchGoogleAdsFieldsRequest;

                        /**
                         * Decodes a SearchGoogleAdsFieldsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchGoogleAdsFieldsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchGoogleAdsFieldsRequest;

                        /**
                         * Verifies a SearchGoogleAdsFieldsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsFieldsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchGoogleAdsFieldsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchGoogleAdsFieldsRequest;

                        /**
                         * Creates a plain object from a SearchGoogleAdsFieldsRequest message. Also converts values to other types if specified.
                         * @param message SearchGoogleAdsFieldsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchGoogleAdsFieldsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsFieldsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchGoogleAdsFieldsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SearchGoogleAdsFieldsResponse. */
                    interface ISearchGoogleAdsFieldsResponse {

                        /** SearchGoogleAdsFieldsResponse results */
                        results?: (google.ads.googleads.v23.resources.IGoogleAdsField[]|null);

                        /** SearchGoogleAdsFieldsResponse next_page_token */
                        next_page_token?: (string|null);

                        /** SearchGoogleAdsFieldsResponse total_results_count */
                        total_results_count?: (number|null);
                    }

                    /** Represents a SearchGoogleAdsFieldsResponse. */
                    class SearchGoogleAdsFieldsResponse implements ISearchGoogleAdsFieldsResponse {

                        /**
                         * Constructs a new SearchGoogleAdsFieldsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsResponse);

                        /** SearchGoogleAdsFieldsResponse results. */
                        public results: google.ads.googleads.v23.resources.IGoogleAdsField[];

                        /** SearchGoogleAdsFieldsResponse next_page_token. */
                        public next_page_token: string;

                        /** SearchGoogleAdsFieldsResponse total_results_count. */
                        public total_results_count: number;

                        /**
                         * Creates a new SearchGoogleAdsFieldsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsFieldsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsResponse): google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse.verify|verify} messages.
                         * @param message SearchGoogleAdsFieldsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse.verify|verify} messages.
                         * @param message SearchGoogleAdsFieldsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISearchGoogleAdsFieldsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsFieldsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchGoogleAdsFieldsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse;

                        /**
                         * Decodes a SearchGoogleAdsFieldsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchGoogleAdsFieldsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse;

                        /**
                         * Verifies a SearchGoogleAdsFieldsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsFieldsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchGoogleAdsFieldsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse;

                        /**
                         * Creates a plain object from a SearchGoogleAdsFieldsResponse message. Also converts values to other types if specified.
                         * @param message SearchGoogleAdsFieldsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SearchGoogleAdsFieldsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsFieldsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchGoogleAdsFieldsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an IdentityVerificationService */
                    class IdentityVerificationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new IdentityVerificationService 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 IdentityVerificationService 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): IdentityVerificationService;

                        /**
                         * Calls StartIdentityVerification.
                         * @param request StartIdentityVerificationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public startIdentityVerification(request: google.ads.googleads.v23.services.IStartIdentityVerificationRequest, callback: google.ads.googleads.v23.services.IdentityVerificationService.StartIdentityVerificationCallback): void;

                        /**
                         * Calls StartIdentityVerification.
                         * @param request StartIdentityVerificationRequest message or plain object
                         * @returns Promise
                         */
                        public startIdentityVerification(request: google.ads.googleads.v23.services.IStartIdentityVerificationRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls GetIdentityVerification.
                         * @param request GetIdentityVerificationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetIdentityVerificationResponse
                         */
                        public getIdentityVerification(request: google.ads.googleads.v23.services.IGetIdentityVerificationRequest, callback: google.ads.googleads.v23.services.IdentityVerificationService.GetIdentityVerificationCallback): void;

                        /**
                         * Calls GetIdentityVerification.
                         * @param request GetIdentityVerificationRequest message or plain object
                         * @returns Promise
                         */
                        public getIdentityVerification(request: google.ads.googleads.v23.services.IGetIdentityVerificationRequest): Promise<google.ads.googleads.v23.services.GetIdentityVerificationResponse>;
                    }

                    namespace IdentityVerificationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.IdentityVerificationService|startIdentityVerification}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type StartIdentityVerificationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.IdentityVerificationService|getIdentityVerification}.
                         * @param error Error, if any
                         * @param [response] GetIdentityVerificationResponse
                         */
                        type GetIdentityVerificationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GetIdentityVerificationResponse) => void;
                    }

                    /** Properties of a StartIdentityVerificationRequest. */
                    interface IStartIdentityVerificationRequest {

                        /** StartIdentityVerificationRequest customer_id */
                        customer_id?: (string|null);

                        /** StartIdentityVerificationRequest verification_program */
                        verification_program?: (google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram|keyof typeof google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram|null);
                    }

                    /** Represents a StartIdentityVerificationRequest. */
                    class StartIdentityVerificationRequest implements IStartIdentityVerificationRequest {

                        /**
                         * Constructs a new StartIdentityVerificationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IStartIdentityVerificationRequest);

                        /** StartIdentityVerificationRequest customer_id. */
                        public customer_id: string;

                        /** StartIdentityVerificationRequest verification_program. */
                        public verification_program: (google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram|keyof typeof google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram);

                        /**
                         * Creates a new StartIdentityVerificationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StartIdentityVerificationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IStartIdentityVerificationRequest): google.ads.googleads.v23.services.StartIdentityVerificationRequest;

                        /**
                         * Encodes the specified StartIdentityVerificationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.StartIdentityVerificationRequest.verify|verify} messages.
                         * @param message StartIdentityVerificationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IStartIdentityVerificationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StartIdentityVerificationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.StartIdentityVerificationRequest.verify|verify} messages.
                         * @param message StartIdentityVerificationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IStartIdentityVerificationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StartIdentityVerificationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns StartIdentityVerificationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.StartIdentityVerificationRequest;

                        /**
                         * Decodes a StartIdentityVerificationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StartIdentityVerificationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.StartIdentityVerificationRequest;

                        /**
                         * Verifies a StartIdentityVerificationRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StartIdentityVerificationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns StartIdentityVerificationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.StartIdentityVerificationRequest;

                        /**
                         * Creates a plain object from a StartIdentityVerificationRequest message. Also converts values to other types if specified.
                         * @param message StartIdentityVerificationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.StartIdentityVerificationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StartIdentityVerificationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for StartIdentityVerificationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetIdentityVerificationRequest. */
                    interface IGetIdentityVerificationRequest {

                        /** GetIdentityVerificationRequest customer_id */
                        customer_id?: (string|null);
                    }

                    /** Represents a GetIdentityVerificationRequest. */
                    class GetIdentityVerificationRequest implements IGetIdentityVerificationRequest {

                        /**
                         * Constructs a new GetIdentityVerificationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGetIdentityVerificationRequest);

                        /** GetIdentityVerificationRequest customer_id. */
                        public customer_id: string;

                        /**
                         * Creates a new GetIdentityVerificationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetIdentityVerificationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGetIdentityVerificationRequest): google.ads.googleads.v23.services.GetIdentityVerificationRequest;

                        /**
                         * Encodes the specified GetIdentityVerificationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GetIdentityVerificationRequest.verify|verify} messages.
                         * @param message GetIdentityVerificationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGetIdentityVerificationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetIdentityVerificationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GetIdentityVerificationRequest.verify|verify} messages.
                         * @param message GetIdentityVerificationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGetIdentityVerificationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetIdentityVerificationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetIdentityVerificationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GetIdentityVerificationRequest;

                        /**
                         * Decodes a GetIdentityVerificationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetIdentityVerificationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GetIdentityVerificationRequest;

                        /**
                         * Verifies a GetIdentityVerificationRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetIdentityVerificationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetIdentityVerificationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GetIdentityVerificationRequest;

                        /**
                         * Creates a plain object from a GetIdentityVerificationRequest message. Also converts values to other types if specified.
                         * @param message GetIdentityVerificationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GetIdentityVerificationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetIdentityVerificationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetIdentityVerificationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetIdentityVerificationResponse. */
                    interface IGetIdentityVerificationResponse {

                        /** GetIdentityVerificationResponse identity_verification */
                        identity_verification?: (google.ads.googleads.v23.services.IIdentityVerification[]|null);
                    }

                    /** Represents a GetIdentityVerificationResponse. */
                    class GetIdentityVerificationResponse implements IGetIdentityVerificationResponse {

                        /**
                         * Constructs a new GetIdentityVerificationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGetIdentityVerificationResponse);

                        /** GetIdentityVerificationResponse identity_verification. */
                        public identity_verification: google.ads.googleads.v23.services.IIdentityVerification[];

                        /**
                         * Creates a new GetIdentityVerificationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetIdentityVerificationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGetIdentityVerificationResponse): google.ads.googleads.v23.services.GetIdentityVerificationResponse;

                        /**
                         * Encodes the specified GetIdentityVerificationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GetIdentityVerificationResponse.verify|verify} messages.
                         * @param message GetIdentityVerificationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGetIdentityVerificationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetIdentityVerificationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GetIdentityVerificationResponse.verify|verify} messages.
                         * @param message GetIdentityVerificationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGetIdentityVerificationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetIdentityVerificationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetIdentityVerificationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GetIdentityVerificationResponse;

                        /**
                         * Decodes a GetIdentityVerificationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetIdentityVerificationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GetIdentityVerificationResponse;

                        /**
                         * Verifies a GetIdentityVerificationResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetIdentityVerificationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetIdentityVerificationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GetIdentityVerificationResponse;

                        /**
                         * Creates a plain object from a GetIdentityVerificationResponse message. Also converts values to other types if specified.
                         * @param message GetIdentityVerificationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GetIdentityVerificationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetIdentityVerificationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetIdentityVerificationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IdentityVerification. */
                    interface IIdentityVerification {

                        /** IdentityVerification verification_program */
                        verification_program?: (google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram|keyof typeof google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram|null);

                        /** IdentityVerification identity_verification_requirement */
                        identity_verification_requirement?: (google.ads.googleads.v23.services.IIdentityVerificationRequirement|null);

                        /** IdentityVerification verification_progress */
                        verification_progress?: (google.ads.googleads.v23.services.IIdentityVerificationProgress|null);
                    }

                    /** Represents an IdentityVerification. */
                    class IdentityVerification implements IIdentityVerification {

                        /**
                         * Constructs a new IdentityVerification.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IIdentityVerification);

                        /** IdentityVerification verification_program. */
                        public verification_program: (google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram|keyof typeof google.ads.googleads.v23.enums.IdentityVerificationProgramEnum.IdentityVerificationProgram);

                        /** IdentityVerification identity_verification_requirement. */
                        public identity_verification_requirement?: (google.ads.googleads.v23.services.IIdentityVerificationRequirement|null);

                        /** IdentityVerification verification_progress. */
                        public verification_progress?: (google.ads.googleads.v23.services.IIdentityVerificationProgress|null);

                        /**
                         * Creates a new IdentityVerification instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IdentityVerification instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IIdentityVerification): google.ads.googleads.v23.services.IdentityVerification;

                        /**
                         * Encodes the specified IdentityVerification message. Does not implicitly {@link google.ads.googleads.v23.services.IdentityVerification.verify|verify} messages.
                         * @param message IdentityVerification message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IIdentityVerification, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdentityVerification message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.IdentityVerification.verify|verify} messages.
                         * @param message IdentityVerification message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IIdentityVerification, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdentityVerification message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IdentityVerification
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.IdentityVerification;

                        /**
                         * Decodes an IdentityVerification message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IdentityVerification
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.IdentityVerification;

                        /**
                         * Verifies an IdentityVerification message.
                         * @param message Plain 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 IdentityVerification message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IdentityVerification
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.IdentityVerification;

                        /**
                         * Creates a plain object from an IdentityVerification message. Also converts values to other types if specified.
                         * @param message IdentityVerification
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.IdentityVerification, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdentityVerification to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IdentityVerification
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IdentityVerificationProgress. */
                    interface IIdentityVerificationProgress {

                        /** IdentityVerificationProgress program_status */
                        program_status?: (google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum.IdentityVerificationProgramStatus|keyof typeof google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum.IdentityVerificationProgramStatus|null);

                        /** IdentityVerificationProgress invitation_link_expiration_time */
                        invitation_link_expiration_time?: (string|null);

                        /** IdentityVerificationProgress action_url */
                        action_url?: (string|null);
                    }

                    /** Represents an IdentityVerificationProgress. */
                    class IdentityVerificationProgress implements IIdentityVerificationProgress {

                        /**
                         * Constructs a new IdentityVerificationProgress.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IIdentityVerificationProgress);

                        /** IdentityVerificationProgress program_status. */
                        public program_status: (google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum.IdentityVerificationProgramStatus|keyof typeof google.ads.googleads.v23.enums.IdentityVerificationProgramStatusEnum.IdentityVerificationProgramStatus);

                        /** IdentityVerificationProgress invitation_link_expiration_time. */
                        public invitation_link_expiration_time: string;

                        /** IdentityVerificationProgress action_url. */
                        public action_url: string;

                        /**
                         * Creates a new IdentityVerificationProgress instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IdentityVerificationProgress instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IIdentityVerificationProgress): google.ads.googleads.v23.services.IdentityVerificationProgress;

                        /**
                         * Encodes the specified IdentityVerificationProgress message. Does not implicitly {@link google.ads.googleads.v23.services.IdentityVerificationProgress.verify|verify} messages.
                         * @param message IdentityVerificationProgress message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IIdentityVerificationProgress, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdentityVerificationProgress message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.IdentityVerificationProgress.verify|verify} messages.
                         * @param message IdentityVerificationProgress message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IIdentityVerificationProgress, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdentityVerificationProgress message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IdentityVerificationProgress
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.IdentityVerificationProgress;

                        /**
                         * Decodes an IdentityVerificationProgress message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IdentityVerificationProgress
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.IdentityVerificationProgress;

                        /**
                         * Verifies an IdentityVerificationProgress message.
                         * @param message Plain 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 IdentityVerificationProgress message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IdentityVerificationProgress
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.IdentityVerificationProgress;

                        /**
                         * Creates a plain object from an IdentityVerificationProgress message. Also converts values to other types if specified.
                         * @param message IdentityVerificationProgress
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.IdentityVerificationProgress, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdentityVerificationProgress to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IdentityVerificationProgress
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IdentityVerificationRequirement. */
                    interface IIdentityVerificationRequirement {

                        /** IdentityVerificationRequirement verification_start_deadline_time */
                        verification_start_deadline_time?: (string|null);

                        /** IdentityVerificationRequirement verification_completion_deadline_time */
                        verification_completion_deadline_time?: (string|null);
                    }

                    /** Represents an IdentityVerificationRequirement. */
                    class IdentityVerificationRequirement implements IIdentityVerificationRequirement {

                        /**
                         * Constructs a new IdentityVerificationRequirement.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IIdentityVerificationRequirement);

                        /** IdentityVerificationRequirement verification_start_deadline_time. */
                        public verification_start_deadline_time: string;

                        /** IdentityVerificationRequirement verification_completion_deadline_time. */
                        public verification_completion_deadline_time: string;

                        /**
                         * Creates a new IdentityVerificationRequirement instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IdentityVerificationRequirement instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IIdentityVerificationRequirement): google.ads.googleads.v23.services.IdentityVerificationRequirement;

                        /**
                         * Encodes the specified IdentityVerificationRequirement message. Does not implicitly {@link google.ads.googleads.v23.services.IdentityVerificationRequirement.verify|verify} messages.
                         * @param message IdentityVerificationRequirement message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IIdentityVerificationRequirement, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdentityVerificationRequirement message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.IdentityVerificationRequirement.verify|verify} messages.
                         * @param message IdentityVerificationRequirement message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IIdentityVerificationRequirement, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdentityVerificationRequirement message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IdentityVerificationRequirement
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.IdentityVerificationRequirement;

                        /**
                         * Decodes an IdentityVerificationRequirement message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IdentityVerificationRequirement
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.IdentityVerificationRequirement;

                        /**
                         * Verifies an IdentityVerificationRequirement message.
                         * @param message Plain 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 IdentityVerificationRequirement message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IdentityVerificationRequirement
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.IdentityVerificationRequirement;

                        /**
                         * Creates a plain object from an IdentityVerificationRequirement message. Also converts values to other types if specified.
                         * @param message IdentityVerificationRequirement
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.IdentityVerificationRequirement, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdentityVerificationRequirement to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IdentityVerificationRequirement
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an IncentiveService */
                    class IncentiveService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new IncentiveService 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 IncentiveService 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): IncentiveService;

                        /**
                         * Calls FetchIncentive.
                         * @param request FetchIncentiveRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FetchIncentiveResponse
                         */
                        public fetchIncentive(request: google.ads.googleads.v23.services.IFetchIncentiveRequest, callback: google.ads.googleads.v23.services.IncentiveService.FetchIncentiveCallback): void;

                        /**
                         * Calls FetchIncentive.
                         * @param request FetchIncentiveRequest message or plain object
                         * @returns Promise
                         */
                        public fetchIncentive(request: google.ads.googleads.v23.services.IFetchIncentiveRequest): Promise<google.ads.googleads.v23.services.FetchIncentiveResponse>;

                        /**
                         * Calls ApplyIncentive.
                         * @param request ApplyIncentiveRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ApplyIncentiveResponse
                         */
                        public applyIncentive(request: google.ads.googleads.v23.services.IApplyIncentiveRequest, callback: google.ads.googleads.v23.services.IncentiveService.ApplyIncentiveCallback): void;

                        /**
                         * Calls ApplyIncentive.
                         * @param request ApplyIncentiveRequest message or plain object
                         * @returns Promise
                         */
                        public applyIncentive(request: google.ads.googleads.v23.services.IApplyIncentiveRequest): Promise<google.ads.googleads.v23.services.ApplyIncentiveResponse>;
                    }

                    namespace IncentiveService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.IncentiveService|fetchIncentive}.
                         * @param error Error, if any
                         * @param [response] FetchIncentiveResponse
                         */
                        type FetchIncentiveCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.FetchIncentiveResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.IncentiveService|applyIncentive}.
                         * @param error Error, if any
                         * @param [response] ApplyIncentiveResponse
                         */
                        type ApplyIncentiveCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ApplyIncentiveResponse) => void;
                    }

                    /** Properties of a FetchIncentiveRequest. */
                    interface IFetchIncentiveRequest {

                        /** FetchIncentiveRequest language_code */
                        language_code?: (string|null);

                        /** FetchIncentiveRequest country_code */
                        country_code?: (string|null);

                        /** FetchIncentiveRequest email */
                        email?: (string|null);

                        /** FetchIncentiveRequest type */
                        type?: (google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|keyof typeof google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|null);
                    }

                    /** Represents a FetchIncentiveRequest. */
                    class FetchIncentiveRequest implements IFetchIncentiveRequest {

                        /**
                         * Constructs a new FetchIncentiveRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IFetchIncentiveRequest);

                        /** FetchIncentiveRequest language_code. */
                        public language_code?: (string|null);

                        /** FetchIncentiveRequest country_code. */
                        public country_code?: (string|null);

                        /** FetchIncentiveRequest email. */
                        public email?: (string|null);

                        /** FetchIncentiveRequest type. */
                        public type?: (google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|keyof typeof google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|null);

                        /**
                         * Creates a new FetchIncentiveRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FetchIncentiveRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IFetchIncentiveRequest): google.ads.googleads.v23.services.FetchIncentiveRequest;

                        /**
                         * Encodes the specified FetchIncentiveRequest message. Does not implicitly {@link google.ads.googleads.v23.services.FetchIncentiveRequest.verify|verify} messages.
                         * @param message FetchIncentiveRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IFetchIncentiveRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FetchIncentiveRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.FetchIncentiveRequest.verify|verify} messages.
                         * @param message FetchIncentiveRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IFetchIncentiveRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FetchIncentiveRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FetchIncentiveRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.FetchIncentiveRequest;

                        /**
                         * Decodes a FetchIncentiveRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FetchIncentiveRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.FetchIncentiveRequest;

                        /**
                         * Verifies a FetchIncentiveRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FetchIncentiveRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FetchIncentiveRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.FetchIncentiveRequest;

                        /**
                         * Creates a plain object from a FetchIncentiveRequest message. Also converts values to other types if specified.
                         * @param message FetchIncentiveRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.FetchIncentiveRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FetchIncentiveRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FetchIncentiveRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FetchIncentiveRequest {

                        /** IncentiveType enum. */
                        enum IncentiveType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACQUISITION = 2
                        }
                    }

                    /** Properties of an Incentive. */
                    interface IIncentive {

                        /** Incentive incentive_id */
                        incentive_id?: (number|null);

                        /** Incentive requirement */
                        requirement?: (google.ads.googleads.v23.services.Incentive.IRequirement|null);

                        /** Incentive incentive_terms_and_conditions_url */
                        incentive_terms_and_conditions_url?: (string|null);

                        /** Incentive type */
                        type?: (google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|keyof typeof google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|null);
                    }

                    /** Represents an Incentive. */
                    class Incentive implements IIncentive {

                        /**
                         * Constructs a new Incentive.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IIncentive);

                        /** Incentive incentive_id. */
                        public incentive_id?: (number|null);

                        /** Incentive requirement. */
                        public requirement?: (google.ads.googleads.v23.services.Incentive.IRequirement|null);

                        /** Incentive incentive_terms_and_conditions_url. */
                        public incentive_terms_and_conditions_url?: (string|null);

                        /** Incentive type. */
                        public type?: (google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|keyof typeof google.ads.googleads.v23.services.FetchIncentiveRequest.IncentiveType|null);

                        /**
                         * Creates a new Incentive instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Incentive instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IIncentive): google.ads.googleads.v23.services.Incentive;

                        /**
                         * Encodes the specified Incentive message. Does not implicitly {@link google.ads.googleads.v23.services.Incentive.verify|verify} messages.
                         * @param message Incentive message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IIncentive, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Incentive message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.Incentive.verify|verify} messages.
                         * @param message Incentive message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IIncentive, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Incentive message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Incentive
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.Incentive;

                        /**
                         * Decodes an Incentive message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Incentive
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.Incentive;

                        /**
                         * Verifies an Incentive message.
                         * @param message Plain 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 Incentive message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Incentive
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.Incentive;

                        /**
                         * Creates a plain object from an Incentive message. Also converts values to other types if specified.
                         * @param message Incentive
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.Incentive, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Incentive to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Incentive
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Incentive {

                        /** Properties of a Requirement. */
                        interface IRequirement {

                            /** Requirement spend */
                            spend?: (google.ads.googleads.v23.services.Incentive.Requirement.ISpend|null);
                        }

                        /** Represents a Requirement. */
                        class Requirement implements IRequirement {

                            /**
                             * Constructs a new Requirement.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.Incentive.IRequirement);

                            /** Requirement spend. */
                            public spend?: (google.ads.googleads.v23.services.Incentive.Requirement.ISpend|null);

                            /** Requirement requirement. */
                            public requirement?: "spend";

                            /**
                             * Creates a new Requirement instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Requirement instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.Incentive.IRequirement): google.ads.googleads.v23.services.Incentive.Requirement;

                            /**
                             * Encodes the specified Requirement message. Does not implicitly {@link google.ads.googleads.v23.services.Incentive.Requirement.verify|verify} messages.
                             * @param message Requirement message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.Incentive.IRequirement, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Requirement message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.Incentive.Requirement.verify|verify} messages.
                             * @param message Requirement message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.Incentive.IRequirement, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Requirement message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Requirement
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.Incentive.Requirement;

                            /**
                             * Decodes a Requirement message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Requirement
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.Incentive.Requirement;

                            /**
                             * Verifies a Requirement message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Requirement message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Requirement
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.Incentive.Requirement;

                            /**
                             * Creates a plain object from a Requirement message. Also converts values to other types if specified.
                             * @param message Requirement
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.Incentive.Requirement, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Requirement to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Requirement
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace Requirement {

                            /** Properties of a Spend. */
                            interface ISpend {

                                /** Spend award_amount */
                                award_amount?: (google.type.IMoney|null);

                                /** Spend required_amount */
                                required_amount?: (google.type.IMoney|null);
                            }

                            /** Represents a Spend. */
                            class Spend implements ISpend {

                                /**
                                 * Constructs a new Spend.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.ads.googleads.v23.services.Incentive.Requirement.ISpend);

                                /** Spend award_amount. */
                                public award_amount?: (google.type.IMoney|null);

                                /** Spend required_amount. */
                                public required_amount?: (google.type.IMoney|null);

                                /**
                                 * Creates a new Spend instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns Spend instance
                                 */
                                public static create(properties?: google.ads.googleads.v23.services.Incentive.Requirement.ISpend): google.ads.googleads.v23.services.Incentive.Requirement.Spend;

                                /**
                                 * Encodes the specified Spend message. Does not implicitly {@link google.ads.googleads.v23.services.Incentive.Requirement.Spend.verify|verify} messages.
                                 * @param message Spend message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.ads.googleads.v23.services.Incentive.Requirement.ISpend, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified Spend message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.Incentive.Requirement.Spend.verify|verify} messages.
                                 * @param message Spend message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v23.services.Incentive.Requirement.ISpend, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a Spend message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns Spend
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.Incentive.Requirement.Spend;

                                /**
                                 * Decodes a Spend message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns Spend
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.Incentive.Requirement.Spend;

                                /**
                                 * Verifies a Spend message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a Spend message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns Spend
                                 */
                                public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.Incentive.Requirement.Spend;

                                /**
                                 * Creates a plain object from a Spend message. Also converts values to other types if specified.
                                 * @param message Spend
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.ads.googleads.v23.services.Incentive.Requirement.Spend, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this Spend to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for Spend
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }
                    }

                    /** Properties of a CyoIncentives. */
                    interface ICyoIncentives {

                        /** CyoIncentives low_offer */
                        low_offer?: (google.ads.googleads.v23.services.IIncentive|null);

                        /** CyoIncentives medium_offer */
                        medium_offer?: (google.ads.googleads.v23.services.IIncentive|null);

                        /** CyoIncentives high_offer */
                        high_offer?: (google.ads.googleads.v23.services.IIncentive|null);
                    }

                    /** Represents a CyoIncentives. */
                    class CyoIncentives implements ICyoIncentives {

                        /**
                         * Constructs a new CyoIncentives.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICyoIncentives);

                        /** CyoIncentives low_offer. */
                        public low_offer?: (google.ads.googleads.v23.services.IIncentive|null);

                        /** CyoIncentives medium_offer. */
                        public medium_offer?: (google.ads.googleads.v23.services.IIncentive|null);

                        /** CyoIncentives high_offer. */
                        public high_offer?: (google.ads.googleads.v23.services.IIncentive|null);

                        /**
                         * Creates a new CyoIncentives instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CyoIncentives instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICyoIncentives): google.ads.googleads.v23.services.CyoIncentives;

                        /**
                         * Encodes the specified CyoIncentives message. Does not implicitly {@link google.ads.googleads.v23.services.CyoIncentives.verify|verify} messages.
                         * @param message CyoIncentives message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICyoIncentives, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CyoIncentives message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CyoIncentives.verify|verify} messages.
                         * @param message CyoIncentives message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICyoIncentives, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CyoIncentives message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CyoIncentives
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CyoIncentives;

                        /**
                         * Decodes a CyoIncentives message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CyoIncentives
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CyoIncentives;

                        /**
                         * Verifies a CyoIncentives message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CyoIncentives message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CyoIncentives
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CyoIncentives;

                        /**
                         * Creates a plain object from a CyoIncentives message. Also converts values to other types if specified.
                         * @param message CyoIncentives
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CyoIncentives, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CyoIncentives to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CyoIncentives
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IncentiveOffer. */
                    interface IIncentiveOffer {

                        /** IncentiveOffer type */
                        type?: (google.ads.googleads.v23.services.IncentiveOffer.OfferType|keyof typeof google.ads.googleads.v23.services.IncentiveOffer.OfferType|null);

                        /** IncentiveOffer consolidated_terms_and_conditions_url */
                        consolidated_terms_and_conditions_url?: (string|null);

                        /** IncentiveOffer cyo_incentives */
                        cyo_incentives?: (google.ads.googleads.v23.services.ICyoIncentives|null);
                    }

                    /** Represents an IncentiveOffer. */
                    class IncentiveOffer implements IIncentiveOffer {

                        /**
                         * Constructs a new IncentiveOffer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IIncentiveOffer);

                        /** IncentiveOffer type. */
                        public type?: (google.ads.googleads.v23.services.IncentiveOffer.OfferType|keyof typeof google.ads.googleads.v23.services.IncentiveOffer.OfferType|null);

                        /** IncentiveOffer consolidated_terms_and_conditions_url. */
                        public consolidated_terms_and_conditions_url?: (string|null);

                        /** IncentiveOffer cyo_incentives. */
                        public cyo_incentives?: (google.ads.googleads.v23.services.ICyoIncentives|null);

                        /** IncentiveOffer incentive_details. */
                        public incentive_details?: "cyo_incentives";

                        /**
                         * Creates a new IncentiveOffer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IncentiveOffer instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IIncentiveOffer): google.ads.googleads.v23.services.IncentiveOffer;

                        /**
                         * Encodes the specified IncentiveOffer message. Does not implicitly {@link google.ads.googleads.v23.services.IncentiveOffer.verify|verify} messages.
                         * @param message IncentiveOffer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IIncentiveOffer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncentiveOffer message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.IncentiveOffer.verify|verify} messages.
                         * @param message IncentiveOffer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IIncentiveOffer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncentiveOffer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IncentiveOffer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.IncentiveOffer;

                        /**
                         * Decodes an IncentiveOffer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IncentiveOffer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.IncentiveOffer;

                        /**
                         * Verifies an IncentiveOffer message.
                         * @param message Plain 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 IncentiveOffer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IncentiveOffer
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.IncentiveOffer;

                        /**
                         * Creates a plain object from an IncentiveOffer message. Also converts values to other types if specified.
                         * @param message IncentiveOffer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.IncentiveOffer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncentiveOffer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IncentiveOffer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace IncentiveOffer {

                        /** OfferType enum. */
                        enum OfferType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NO_INCENTIVE = 2,
                            CYO_INCENTIVE = 3
                        }
                    }

                    /** Properties of a FetchIncentiveResponse. */
                    interface IFetchIncentiveResponse {

                        /** FetchIncentiveResponse incentive_offer */
                        incentive_offer?: (google.ads.googleads.v23.services.IIncentiveOffer|null);
                    }

                    /** Represents a FetchIncentiveResponse. */
                    class FetchIncentiveResponse implements IFetchIncentiveResponse {

                        /**
                         * Constructs a new FetchIncentiveResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IFetchIncentiveResponse);

                        /** FetchIncentiveResponse incentive_offer. */
                        public incentive_offer?: (google.ads.googleads.v23.services.IIncentiveOffer|null);

                        /**
                         * Creates a new FetchIncentiveResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FetchIncentiveResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IFetchIncentiveResponse): google.ads.googleads.v23.services.FetchIncentiveResponse;

                        /**
                         * Encodes the specified FetchIncentiveResponse message. Does not implicitly {@link google.ads.googleads.v23.services.FetchIncentiveResponse.verify|verify} messages.
                         * @param message FetchIncentiveResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IFetchIncentiveResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FetchIncentiveResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.FetchIncentiveResponse.verify|verify} messages.
                         * @param message FetchIncentiveResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IFetchIncentiveResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FetchIncentiveResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FetchIncentiveResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.FetchIncentiveResponse;

                        /**
                         * Decodes a FetchIncentiveResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FetchIncentiveResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.FetchIncentiveResponse;

                        /**
                         * Verifies a FetchIncentiveResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FetchIncentiveResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FetchIncentiveResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.FetchIncentiveResponse;

                        /**
                         * Creates a plain object from a FetchIncentiveResponse message. Also converts values to other types if specified.
                         * @param message FetchIncentiveResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.FetchIncentiveResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FetchIncentiveResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FetchIncentiveResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ApplyIncentiveRequest. */
                    interface IApplyIncentiveRequest {

                        /** ApplyIncentiveRequest selected_incentive_id */
                        selected_incentive_id?: (number|null);

                        /** ApplyIncentiveRequest customer_id */
                        customer_id?: (string|null);

                        /** ApplyIncentiveRequest country_code */
                        country_code?: (string|null);
                    }

                    /** Represents an ApplyIncentiveRequest. */
                    class ApplyIncentiveRequest implements IApplyIncentiveRequest {

                        /**
                         * Constructs a new ApplyIncentiveRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IApplyIncentiveRequest);

                        /** ApplyIncentiveRequest selected_incentive_id. */
                        public selected_incentive_id?: (number|null);

                        /** ApplyIncentiveRequest customer_id. */
                        public customer_id?: (string|null);

                        /** ApplyIncentiveRequest country_code. */
                        public country_code?: (string|null);

                        /**
                         * Creates a new ApplyIncentiveRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplyIncentiveRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IApplyIncentiveRequest): google.ads.googleads.v23.services.ApplyIncentiveRequest;

                        /**
                         * Encodes the specified ApplyIncentiveRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyIncentiveRequest.verify|verify} messages.
                         * @param message ApplyIncentiveRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IApplyIncentiveRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyIncentiveRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyIncentiveRequest.verify|verify} messages.
                         * @param message ApplyIncentiveRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IApplyIncentiveRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyIncentiveRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApplyIncentiveRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyIncentiveRequest;

                        /**
                         * Decodes an ApplyIncentiveRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApplyIncentiveRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyIncentiveRequest;

                        /**
                         * Verifies an ApplyIncentiveRequest message.
                         * @param message Plain 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 ApplyIncentiveRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApplyIncentiveRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyIncentiveRequest;

                        /**
                         * Creates a plain object from an ApplyIncentiveRequest message. Also converts values to other types if specified.
                         * @param message ApplyIncentiveRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ApplyIncentiveRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyIncentiveRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApplyIncentiveRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ApplyIncentiveResponse. */
                    interface IApplyIncentiveResponse {

                        /** ApplyIncentiveResponse coupon_code */
                        coupon_code?: (string|null);

                        /** ApplyIncentiveResponse creation_time */
                        creation_time?: (string|null);
                    }

                    /** Represents an ApplyIncentiveResponse. */
                    class ApplyIncentiveResponse implements IApplyIncentiveResponse {

                        /**
                         * Constructs a new ApplyIncentiveResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IApplyIncentiveResponse);

                        /** ApplyIncentiveResponse coupon_code. */
                        public coupon_code?: (string|null);

                        /** ApplyIncentiveResponse creation_time. */
                        public creation_time?: (string|null);

                        /**
                         * Creates a new ApplyIncentiveResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplyIncentiveResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IApplyIncentiveResponse): google.ads.googleads.v23.services.ApplyIncentiveResponse;

                        /**
                         * Encodes the specified ApplyIncentiveResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyIncentiveResponse.verify|verify} messages.
                         * @param message ApplyIncentiveResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IApplyIncentiveResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyIncentiveResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyIncentiveResponse.verify|verify} messages.
                         * @param message ApplyIncentiveResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IApplyIncentiveResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyIncentiveResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApplyIncentiveResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyIncentiveResponse;

                        /**
                         * Decodes an ApplyIncentiveResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApplyIncentiveResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyIncentiveResponse;

                        /**
                         * Verifies an ApplyIncentiveResponse message.
                         * @param message Plain 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 ApplyIncentiveResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApplyIncentiveResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyIncentiveResponse;

                        /**
                         * Creates a plain object from an ApplyIncentiveResponse message. Also converts values to other types if specified.
                         * @param message ApplyIncentiveResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ApplyIncentiveResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyIncentiveResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApplyIncentiveResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an InvoiceService */
                    class InvoiceService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new InvoiceService 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 InvoiceService 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): InvoiceService;

                        /**
                         * Calls ListInvoices.
                         * @param request ListInvoicesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListInvoicesResponse
                         */
                        public listInvoices(request: google.ads.googleads.v23.services.IListInvoicesRequest, callback: google.ads.googleads.v23.services.InvoiceService.ListInvoicesCallback): void;

                        /**
                         * Calls ListInvoices.
                         * @param request ListInvoicesRequest message or plain object
                         * @returns Promise
                         */
                        public listInvoices(request: google.ads.googleads.v23.services.IListInvoicesRequest): Promise<google.ads.googleads.v23.services.ListInvoicesResponse>;
                    }

                    namespace InvoiceService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.InvoiceService|listInvoices}.
                         * @param error Error, if any
                         * @param [response] ListInvoicesResponse
                         */
                        type ListInvoicesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListInvoicesResponse) => void;
                    }

                    /** Properties of a ListInvoicesRequest. */
                    interface IListInvoicesRequest {

                        /** ListInvoicesRequest customer_id */
                        customer_id?: (string|null);

                        /** ListInvoicesRequest billing_setup */
                        billing_setup?: (string|null);

                        /** ListInvoicesRequest issue_year */
                        issue_year?: (string|null);

                        /** ListInvoicesRequest issue_month */
                        issue_month?: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|null);

                        /** ListInvoicesRequest include_granular_level_invoice_details */
                        include_granular_level_invoice_details?: (boolean|null);
                    }

                    /** Represents a ListInvoicesRequest. */
                    class ListInvoicesRequest implements IListInvoicesRequest {

                        /**
                         * Constructs a new ListInvoicesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListInvoicesRequest);

                        /** ListInvoicesRequest customer_id. */
                        public customer_id: string;

                        /** ListInvoicesRequest billing_setup. */
                        public billing_setup: string;

                        /** ListInvoicesRequest issue_year. */
                        public issue_year: string;

                        /** ListInvoicesRequest issue_month. */
                        public issue_month: (google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v23.enums.MonthOfYearEnum.MonthOfYear);

                        /** ListInvoicesRequest include_granular_level_invoice_details. */
                        public include_granular_level_invoice_details: boolean;

                        /**
                         * Creates a new ListInvoicesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInvoicesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListInvoicesRequest): google.ads.googleads.v23.services.ListInvoicesRequest;

                        /**
                         * Encodes the specified ListInvoicesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListInvoicesRequest.verify|verify} messages.
                         * @param message ListInvoicesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListInvoicesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInvoicesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListInvoicesRequest.verify|verify} messages.
                         * @param message ListInvoicesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListInvoicesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInvoicesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInvoicesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListInvoicesRequest;

                        /**
                         * Decodes a ListInvoicesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInvoicesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListInvoicesRequest;

                        /**
                         * Verifies a ListInvoicesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInvoicesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInvoicesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListInvoicesRequest;

                        /**
                         * Creates a plain object from a ListInvoicesRequest message. Also converts values to other types if specified.
                         * @param message ListInvoicesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListInvoicesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInvoicesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInvoicesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListInvoicesResponse. */
                    interface IListInvoicesResponse {

                        /** ListInvoicesResponse invoices */
                        invoices?: (google.ads.googleads.v23.resources.IInvoice[]|null);
                    }

                    /** Represents a ListInvoicesResponse. */
                    class ListInvoicesResponse implements IListInvoicesResponse {

                        /**
                         * Constructs a new ListInvoicesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListInvoicesResponse);

                        /** ListInvoicesResponse invoices. */
                        public invoices: google.ads.googleads.v23.resources.IInvoice[];

                        /**
                         * Creates a new ListInvoicesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInvoicesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListInvoicesResponse): google.ads.googleads.v23.services.ListInvoicesResponse;

                        /**
                         * Encodes the specified ListInvoicesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListInvoicesResponse.verify|verify} messages.
                         * @param message ListInvoicesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListInvoicesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInvoicesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListInvoicesResponse.verify|verify} messages.
                         * @param message ListInvoicesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListInvoicesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInvoicesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInvoicesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListInvoicesResponse;

                        /**
                         * Decodes a ListInvoicesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInvoicesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListInvoicesResponse;

                        /**
                         * Verifies a ListInvoicesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInvoicesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInvoicesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListInvoicesResponse;

                        /**
                         * Creates a plain object from a ListInvoicesResponse message. Also converts values to other types if specified.
                         * @param message ListInvoicesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListInvoicesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInvoicesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInvoicesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a KeywordPlanIdeaService */
                    class KeywordPlanIdeaService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordPlanIdeaService 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 KeywordPlanIdeaService 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): KeywordPlanIdeaService;

                        /**
                         * Calls GenerateKeywordIdeas.
                         * @param request GenerateKeywordIdeasRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateKeywordIdeaResponse
                         */
                        public generateKeywordIdeas(request: google.ads.googleads.v23.services.IGenerateKeywordIdeasRequest, callback: google.ads.googleads.v23.services.KeywordPlanIdeaService.GenerateKeywordIdeasCallback): void;

                        /**
                         * Calls GenerateKeywordIdeas.
                         * @param request GenerateKeywordIdeasRequest message or plain object
                         * @returns Promise
                         */
                        public generateKeywordIdeas(request: google.ads.googleads.v23.services.IGenerateKeywordIdeasRequest): Promise<google.ads.googleads.v23.services.GenerateKeywordIdeaResponse>;

                        /**
                         * Calls GenerateKeywordHistoricalMetrics.
                         * @param request GenerateKeywordHistoricalMetricsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateKeywordHistoricalMetricsResponse
                         */
                        public generateKeywordHistoricalMetrics(request: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsRequest, callback: google.ads.googleads.v23.services.KeywordPlanIdeaService.GenerateKeywordHistoricalMetricsCallback): void;

                        /**
                         * Calls GenerateKeywordHistoricalMetrics.
                         * @param request GenerateKeywordHistoricalMetricsRequest message or plain object
                         * @returns Promise
                         */
                        public generateKeywordHistoricalMetrics(request: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsRequest): Promise<google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse>;

                        /**
                         * Calls GenerateAdGroupThemes.
                         * @param request GenerateAdGroupThemesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateAdGroupThemesResponse
                         */
                        public generateAdGroupThemes(request: google.ads.googleads.v23.services.IGenerateAdGroupThemesRequest, callback: google.ads.googleads.v23.services.KeywordPlanIdeaService.GenerateAdGroupThemesCallback): void;

                        /**
                         * Calls GenerateAdGroupThemes.
                         * @param request GenerateAdGroupThemesRequest message or plain object
                         * @returns Promise
                         */
                        public generateAdGroupThemes(request: google.ads.googleads.v23.services.IGenerateAdGroupThemesRequest): Promise<google.ads.googleads.v23.services.GenerateAdGroupThemesResponse>;

                        /**
                         * Calls GenerateKeywordForecastMetrics.
                         * @param request GenerateKeywordForecastMetricsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateKeywordForecastMetricsResponse
                         */
                        public generateKeywordForecastMetrics(request: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsRequest, callback: google.ads.googleads.v23.services.KeywordPlanIdeaService.GenerateKeywordForecastMetricsCallback): void;

                        /**
                         * Calls GenerateKeywordForecastMetrics.
                         * @param request GenerateKeywordForecastMetricsRequest message or plain object
                         * @returns Promise
                         */
                        public generateKeywordForecastMetrics(request: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsRequest): Promise<google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse>;
                    }

                    namespace KeywordPlanIdeaService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanIdeaService|generateKeywordIdeas}.
                         * @param error Error, if any
                         * @param [response] GenerateKeywordIdeaResponse
                         */
                        type GenerateKeywordIdeasCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateKeywordIdeaResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanIdeaService|generateKeywordHistoricalMetrics}.
                         * @param error Error, if any
                         * @param [response] GenerateKeywordHistoricalMetricsResponse
                         */
                        type GenerateKeywordHistoricalMetricsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanIdeaService|generateAdGroupThemes}.
                         * @param error Error, if any
                         * @param [response] GenerateAdGroupThemesResponse
                         */
                        type GenerateAdGroupThemesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateAdGroupThemesResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordPlanIdeaService|generateKeywordForecastMetrics}.
                         * @param error Error, if any
                         * @param [response] GenerateKeywordForecastMetricsResponse
                         */
                        type GenerateKeywordForecastMetricsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse) => void;
                    }

                    /** Properties of a GenerateKeywordIdeasRequest. */
                    interface IGenerateKeywordIdeasRequest {

                        /** GenerateKeywordIdeasRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateKeywordIdeasRequest language */
                        language?: (string|null);

                        /** GenerateKeywordIdeasRequest geo_target_constants */
                        geo_target_constants?: (string[]|null);

                        /** GenerateKeywordIdeasRequest include_adult_keywords */
                        include_adult_keywords?: (boolean|null);

                        /** GenerateKeywordIdeasRequest page_token */
                        page_token?: (string|null);

                        /** GenerateKeywordIdeasRequest page_size */
                        page_size?: (number|null);

                        /** GenerateKeywordIdeasRequest keyword_plan_network */
                        keyword_plan_network?: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|null);

                        /** GenerateKeywordIdeasRequest keyword_annotation */
                        keyword_annotation?: (google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum.KeywordPlanKeywordAnnotation[]|null);

                        /** GenerateKeywordIdeasRequest aggregate_metrics */
                        aggregate_metrics?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateKeywordIdeasRequest historical_metrics_options */
                        historical_metrics_options?: (google.ads.googleads.v23.common.IHistoricalMetricsOptions|null);

                        /** GenerateKeywordIdeasRequest keyword_and_url_seed */
                        keyword_and_url_seed?: (google.ads.googleads.v23.services.IKeywordAndUrlSeed|null);

                        /** GenerateKeywordIdeasRequest keyword_seed */
                        keyword_seed?: (google.ads.googleads.v23.services.IKeywordSeed|null);

                        /** GenerateKeywordIdeasRequest url_seed */
                        url_seed?: (google.ads.googleads.v23.services.IUrlSeed|null);

                        /** GenerateKeywordIdeasRequest site_seed */
                        site_seed?: (google.ads.googleads.v23.services.ISiteSeed|null);
                    }

                    /** Represents a GenerateKeywordIdeasRequest. */
                    class GenerateKeywordIdeasRequest implements IGenerateKeywordIdeasRequest {

                        /**
                         * Constructs a new GenerateKeywordIdeasRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordIdeasRequest);

                        /** GenerateKeywordIdeasRequest customer_id. */
                        public customer_id: string;

                        /** GenerateKeywordIdeasRequest language. */
                        public language?: (string|null);

                        /** GenerateKeywordIdeasRequest geo_target_constants. */
                        public geo_target_constants: string[];

                        /** GenerateKeywordIdeasRequest include_adult_keywords. */
                        public include_adult_keywords: boolean;

                        /** GenerateKeywordIdeasRequest page_token. */
                        public page_token: string;

                        /** GenerateKeywordIdeasRequest page_size. */
                        public page_size: number;

                        /** GenerateKeywordIdeasRequest keyword_plan_network. */
                        public keyword_plan_network: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork);

                        /** GenerateKeywordIdeasRequest keyword_annotation. */
                        public keyword_annotation: google.ads.googleads.v23.enums.KeywordPlanKeywordAnnotationEnum.KeywordPlanKeywordAnnotation[];

                        /** GenerateKeywordIdeasRequest aggregate_metrics. */
                        public aggregate_metrics?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateKeywordIdeasRequest historical_metrics_options. */
                        public historical_metrics_options?: (google.ads.googleads.v23.common.IHistoricalMetricsOptions|null);

                        /** GenerateKeywordIdeasRequest keyword_and_url_seed. */
                        public keyword_and_url_seed?: (google.ads.googleads.v23.services.IKeywordAndUrlSeed|null);

                        /** GenerateKeywordIdeasRequest keyword_seed. */
                        public keyword_seed?: (google.ads.googleads.v23.services.IKeywordSeed|null);

                        /** GenerateKeywordIdeasRequest url_seed. */
                        public url_seed?: (google.ads.googleads.v23.services.IUrlSeed|null);

                        /** GenerateKeywordIdeasRequest site_seed. */
                        public site_seed?: (google.ads.googleads.v23.services.ISiteSeed|null);

                        /** GenerateKeywordIdeasRequest seed. */
                        public seed?: ("keyword_and_url_seed"|"keyword_seed"|"url_seed"|"site_seed");

                        /**
                         * Creates a new GenerateKeywordIdeasRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordIdeasRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordIdeasRequest): google.ads.googleads.v23.services.GenerateKeywordIdeasRequest;

                        /**
                         * Encodes the specified GenerateKeywordIdeasRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordIdeasRequest.verify|verify} messages.
                         * @param message GenerateKeywordIdeasRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordIdeasRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordIdeasRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordIdeasRequest.verify|verify} messages.
                         * @param message GenerateKeywordIdeasRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordIdeasRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordIdeasRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordIdeasRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordIdeasRequest;

                        /**
                         * Decodes a GenerateKeywordIdeasRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordIdeasRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordIdeasRequest;

                        /**
                         * Verifies a GenerateKeywordIdeasRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordIdeasRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordIdeasRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordIdeasRequest;

                        /**
                         * Creates a plain object from a GenerateKeywordIdeasRequest message. Also converts values to other types if specified.
                         * @param message GenerateKeywordIdeasRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordIdeasRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordIdeasRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordIdeasRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordAndUrlSeed. */
                    interface IKeywordAndUrlSeed {

                        /** KeywordAndUrlSeed url */
                        url?: (string|null);

                        /** KeywordAndUrlSeed keywords */
                        keywords?: (string[]|null);
                    }

                    /** Represents a KeywordAndUrlSeed. */
                    class KeywordAndUrlSeed implements IKeywordAndUrlSeed {

                        /**
                         * Constructs a new KeywordAndUrlSeed.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordAndUrlSeed);

                        /** KeywordAndUrlSeed url. */
                        public url?: (string|null);

                        /** KeywordAndUrlSeed keywords. */
                        public keywords: string[];

                        /**
                         * Creates a new KeywordAndUrlSeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordAndUrlSeed instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordAndUrlSeed): google.ads.googleads.v23.services.KeywordAndUrlSeed;

                        /**
                         * Encodes the specified KeywordAndUrlSeed message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordAndUrlSeed.verify|verify} messages.
                         * @param message KeywordAndUrlSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordAndUrlSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordAndUrlSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordAndUrlSeed.verify|verify} messages.
                         * @param message KeywordAndUrlSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordAndUrlSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordAndUrlSeed message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordAndUrlSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordAndUrlSeed;

                        /**
                         * Decodes a KeywordAndUrlSeed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordAndUrlSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordAndUrlSeed;

                        /**
                         * Verifies a KeywordAndUrlSeed message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordAndUrlSeed message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordAndUrlSeed
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordAndUrlSeed;

                        /**
                         * Creates a plain object from a KeywordAndUrlSeed message. Also converts values to other types if specified.
                         * @param message KeywordAndUrlSeed
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordAndUrlSeed, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordAndUrlSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordAndUrlSeed
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordSeed. */
                    interface IKeywordSeed {

                        /** KeywordSeed keywords */
                        keywords?: (string[]|null);
                    }

                    /** Represents a KeywordSeed. */
                    class KeywordSeed implements IKeywordSeed {

                        /**
                         * Constructs a new KeywordSeed.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordSeed);

                        /** KeywordSeed keywords. */
                        public keywords: string[];

                        /**
                         * Creates a new KeywordSeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordSeed instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordSeed): google.ads.googleads.v23.services.KeywordSeed;

                        /**
                         * Encodes the specified KeywordSeed message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordSeed.verify|verify} messages.
                         * @param message KeywordSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordSeed.verify|verify} messages.
                         * @param message KeywordSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordSeed message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordSeed;

                        /**
                         * Decodes a KeywordSeed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordSeed;

                        /**
                         * Verifies a KeywordSeed message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordSeed message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordSeed
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordSeed;

                        /**
                         * Creates a plain object from a KeywordSeed message. Also converts values to other types if specified.
                         * @param message KeywordSeed
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordSeed, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordSeed
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SiteSeed. */
                    interface ISiteSeed {

                        /** SiteSeed site */
                        site?: (string|null);
                    }

                    /** Represents a SiteSeed. */
                    class SiteSeed implements ISiteSeed {

                        /**
                         * Constructs a new SiteSeed.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISiteSeed);

                        /** SiteSeed site. */
                        public site?: (string|null);

                        /**
                         * Creates a new SiteSeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SiteSeed instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISiteSeed): google.ads.googleads.v23.services.SiteSeed;

                        /**
                         * Encodes the specified SiteSeed message. Does not implicitly {@link google.ads.googleads.v23.services.SiteSeed.verify|verify} messages.
                         * @param message SiteSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISiteSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SiteSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SiteSeed.verify|verify} messages.
                         * @param message SiteSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISiteSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SiteSeed message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SiteSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SiteSeed;

                        /**
                         * Decodes a SiteSeed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SiteSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SiteSeed;

                        /**
                         * Verifies a SiteSeed message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SiteSeed message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SiteSeed
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SiteSeed;

                        /**
                         * Creates a plain object from a SiteSeed message. Also converts values to other types if specified.
                         * @param message SiteSeed
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SiteSeed, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SiteSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SiteSeed
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UrlSeed. */
                    interface IUrlSeed {

                        /** UrlSeed url */
                        url?: (string|null);
                    }

                    /** Represents an UrlSeed. */
                    class UrlSeed implements IUrlSeed {

                        /**
                         * Constructs a new UrlSeed.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUrlSeed);

                        /** UrlSeed url. */
                        public url?: (string|null);

                        /**
                         * Creates a new UrlSeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UrlSeed instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUrlSeed): google.ads.googleads.v23.services.UrlSeed;

                        /**
                         * Encodes the specified UrlSeed message. Does not implicitly {@link google.ads.googleads.v23.services.UrlSeed.verify|verify} messages.
                         * @param message UrlSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUrlSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UrlSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UrlSeed.verify|verify} messages.
                         * @param message UrlSeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUrlSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UrlSeed message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UrlSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UrlSeed;

                        /**
                         * Decodes an UrlSeed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UrlSeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UrlSeed;

                        /**
                         * Verifies an UrlSeed message.
                         * @param message Plain 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 UrlSeed message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UrlSeed
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UrlSeed;

                        /**
                         * Creates a plain object from an UrlSeed message. Also converts values to other types if specified.
                         * @param message UrlSeed
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UrlSeed, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UrlSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UrlSeed
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateKeywordIdeaResponse. */
                    interface IGenerateKeywordIdeaResponse {

                        /** GenerateKeywordIdeaResponse results */
                        results?: (google.ads.googleads.v23.services.IGenerateKeywordIdeaResult[]|null);

                        /** GenerateKeywordIdeaResponse aggregate_metric_results */
                        aggregate_metric_results?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults|null);

                        /** GenerateKeywordIdeaResponse next_page_token */
                        next_page_token?: (string|null);

                        /** GenerateKeywordIdeaResponse total_size */
                        total_size?: (number|null);
                    }

                    /** Represents a GenerateKeywordIdeaResponse. */
                    class GenerateKeywordIdeaResponse implements IGenerateKeywordIdeaResponse {

                        /**
                         * Constructs a new GenerateKeywordIdeaResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordIdeaResponse);

                        /** GenerateKeywordIdeaResponse results. */
                        public results: google.ads.googleads.v23.services.IGenerateKeywordIdeaResult[];

                        /** GenerateKeywordIdeaResponse aggregate_metric_results. */
                        public aggregate_metric_results?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults|null);

                        /** GenerateKeywordIdeaResponse next_page_token. */
                        public next_page_token: string;

                        /** GenerateKeywordIdeaResponse total_size. */
                        public total_size: number;

                        /**
                         * Creates a new GenerateKeywordIdeaResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordIdeaResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordIdeaResponse): google.ads.googleads.v23.services.GenerateKeywordIdeaResponse;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordIdeaResponse.verify|verify} messages.
                         * @param message GenerateKeywordIdeaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordIdeaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordIdeaResponse.verify|verify} messages.
                         * @param message GenerateKeywordIdeaResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordIdeaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordIdeaResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordIdeaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordIdeaResponse;

                        /**
                         * Decodes a GenerateKeywordIdeaResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordIdeaResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordIdeaResponse;

                        /**
                         * Verifies a GenerateKeywordIdeaResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordIdeaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordIdeaResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordIdeaResponse;

                        /**
                         * Creates a plain object from a GenerateKeywordIdeaResponse message. Also converts values to other types if specified.
                         * @param message GenerateKeywordIdeaResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordIdeaResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordIdeaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordIdeaResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateKeywordIdeaResult. */
                    interface IGenerateKeywordIdeaResult {

                        /** GenerateKeywordIdeaResult text */
                        text?: (string|null);

                        /** GenerateKeywordIdeaResult keyword_idea_metrics */
                        keyword_idea_metrics?: (google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics|null);

                        /** GenerateKeywordIdeaResult keyword_annotations */
                        keyword_annotations?: (google.ads.googleads.v23.common.IKeywordAnnotations|null);

                        /** GenerateKeywordIdeaResult close_variants */
                        close_variants?: (string[]|null);
                    }

                    /** Represents a GenerateKeywordIdeaResult. */
                    class GenerateKeywordIdeaResult implements IGenerateKeywordIdeaResult {

                        /**
                         * Constructs a new GenerateKeywordIdeaResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordIdeaResult);

                        /** GenerateKeywordIdeaResult text. */
                        public text?: (string|null);

                        /** GenerateKeywordIdeaResult keyword_idea_metrics. */
                        public keyword_idea_metrics?: (google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics|null);

                        /** GenerateKeywordIdeaResult keyword_annotations. */
                        public keyword_annotations?: (google.ads.googleads.v23.common.IKeywordAnnotations|null);

                        /** GenerateKeywordIdeaResult close_variants. */
                        public close_variants: string[];

                        /**
                         * Creates a new GenerateKeywordIdeaResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordIdeaResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordIdeaResult): google.ads.googleads.v23.services.GenerateKeywordIdeaResult;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResult message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordIdeaResult.verify|verify} messages.
                         * @param message GenerateKeywordIdeaResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordIdeaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordIdeaResult.verify|verify} messages.
                         * @param message GenerateKeywordIdeaResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordIdeaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordIdeaResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordIdeaResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordIdeaResult;

                        /**
                         * Decodes a GenerateKeywordIdeaResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordIdeaResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordIdeaResult;

                        /**
                         * Verifies a GenerateKeywordIdeaResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordIdeaResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordIdeaResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordIdeaResult;

                        /**
                         * Creates a plain object from a GenerateKeywordIdeaResult message. Also converts values to other types if specified.
                         * @param message GenerateKeywordIdeaResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordIdeaResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordIdeaResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordIdeaResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateKeywordHistoricalMetricsRequest. */
                    interface IGenerateKeywordHistoricalMetricsRequest {

                        /** GenerateKeywordHistoricalMetricsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateKeywordHistoricalMetricsRequest keywords */
                        keywords?: (string[]|null);

                        /** GenerateKeywordHistoricalMetricsRequest language */
                        language?: (string|null);

                        /** GenerateKeywordHistoricalMetricsRequest include_adult_keywords */
                        include_adult_keywords?: (boolean|null);

                        /** GenerateKeywordHistoricalMetricsRequest geo_target_constants */
                        geo_target_constants?: (string[]|null);

                        /** GenerateKeywordHistoricalMetricsRequest keyword_plan_network */
                        keyword_plan_network?: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|null);

                        /** GenerateKeywordHistoricalMetricsRequest aggregate_metrics */
                        aggregate_metrics?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateKeywordHistoricalMetricsRequest historical_metrics_options */
                        historical_metrics_options?: (google.ads.googleads.v23.common.IHistoricalMetricsOptions|null);
                    }

                    /** Represents a GenerateKeywordHistoricalMetricsRequest. */
                    class GenerateKeywordHistoricalMetricsRequest implements IGenerateKeywordHistoricalMetricsRequest {

                        /**
                         * Constructs a new GenerateKeywordHistoricalMetricsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsRequest);

                        /** GenerateKeywordHistoricalMetricsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateKeywordHistoricalMetricsRequest keywords. */
                        public keywords: string[];

                        /** GenerateKeywordHistoricalMetricsRequest language. */
                        public language?: (string|null);

                        /** GenerateKeywordHistoricalMetricsRequest include_adult_keywords. */
                        public include_adult_keywords: boolean;

                        /** GenerateKeywordHistoricalMetricsRequest geo_target_constants. */
                        public geo_target_constants: string[];

                        /** GenerateKeywordHistoricalMetricsRequest keyword_plan_network. */
                        public keyword_plan_network: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork);

                        /** GenerateKeywordHistoricalMetricsRequest aggregate_metrics. */
                        public aggregate_metrics?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateKeywordHistoricalMetricsRequest historical_metrics_options. */
                        public historical_metrics_options?: (google.ads.googleads.v23.common.IHistoricalMetricsOptions|null);

                        /**
                         * Creates a new GenerateKeywordHistoricalMetricsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordHistoricalMetricsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsRequest): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsRequest;

                        /**
                         * Encodes the specified GenerateKeywordHistoricalMetricsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsRequest.verify|verify} messages.
                         * @param message GenerateKeywordHistoricalMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordHistoricalMetricsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsRequest.verify|verify} messages.
                         * @param message GenerateKeywordHistoricalMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordHistoricalMetricsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordHistoricalMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsRequest;

                        /**
                         * Decodes a GenerateKeywordHistoricalMetricsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordHistoricalMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsRequest;

                        /**
                         * Verifies a GenerateKeywordHistoricalMetricsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordHistoricalMetricsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordHistoricalMetricsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsRequest;

                        /**
                         * Creates a plain object from a GenerateKeywordHistoricalMetricsRequest message. Also converts values to other types if specified.
                         * @param message GenerateKeywordHistoricalMetricsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordHistoricalMetricsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordHistoricalMetricsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateKeywordHistoricalMetricsResponse. */
                    interface IGenerateKeywordHistoricalMetricsResponse {

                        /** GenerateKeywordHistoricalMetricsResponse results */
                        results?: (google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResult[]|null);

                        /** GenerateKeywordHistoricalMetricsResponse aggregate_metric_results */
                        aggregate_metric_results?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults|null);
                    }

                    /** Represents a GenerateKeywordHistoricalMetricsResponse. */
                    class GenerateKeywordHistoricalMetricsResponse implements IGenerateKeywordHistoricalMetricsResponse {

                        /**
                         * Constructs a new GenerateKeywordHistoricalMetricsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResponse);

                        /** GenerateKeywordHistoricalMetricsResponse results. */
                        public results: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResult[];

                        /** GenerateKeywordHistoricalMetricsResponse aggregate_metric_results. */
                        public aggregate_metric_results?: (google.ads.googleads.v23.common.IKeywordPlanAggregateMetricResults|null);

                        /**
                         * Creates a new GenerateKeywordHistoricalMetricsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordHistoricalMetricsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResponse): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse;

                        /**
                         * Encodes the specified GenerateKeywordHistoricalMetricsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse.verify|verify} messages.
                         * @param message GenerateKeywordHistoricalMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordHistoricalMetricsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse.verify|verify} messages.
                         * @param message GenerateKeywordHistoricalMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordHistoricalMetricsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordHistoricalMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse;

                        /**
                         * Decodes a GenerateKeywordHistoricalMetricsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordHistoricalMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse;

                        /**
                         * Verifies a GenerateKeywordHistoricalMetricsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordHistoricalMetricsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordHistoricalMetricsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse;

                        /**
                         * Creates a plain object from a GenerateKeywordHistoricalMetricsResponse message. Also converts values to other types if specified.
                         * @param message GenerateKeywordHistoricalMetricsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordHistoricalMetricsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordHistoricalMetricsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateKeywordHistoricalMetricsResult. */
                    interface IGenerateKeywordHistoricalMetricsResult {

                        /** GenerateKeywordHistoricalMetricsResult text */
                        text?: (string|null);

                        /** GenerateKeywordHistoricalMetricsResult close_variants */
                        close_variants?: (string[]|null);

                        /** GenerateKeywordHistoricalMetricsResult keyword_metrics */
                        keyword_metrics?: (google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics|null);
                    }

                    /** Represents a GenerateKeywordHistoricalMetricsResult. */
                    class GenerateKeywordHistoricalMetricsResult implements IGenerateKeywordHistoricalMetricsResult {

                        /**
                         * Constructs a new GenerateKeywordHistoricalMetricsResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResult);

                        /** GenerateKeywordHistoricalMetricsResult text. */
                        public text?: (string|null);

                        /** GenerateKeywordHistoricalMetricsResult close_variants. */
                        public close_variants: string[];

                        /** GenerateKeywordHistoricalMetricsResult keyword_metrics. */
                        public keyword_metrics?: (google.ads.googleads.v23.common.IKeywordPlanHistoricalMetrics|null);

                        /**
                         * Creates a new GenerateKeywordHistoricalMetricsResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordHistoricalMetricsResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResult): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResult;

                        /**
                         * Encodes the specified GenerateKeywordHistoricalMetricsResult message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResult.verify|verify} messages.
                         * @param message GenerateKeywordHistoricalMetricsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordHistoricalMetricsResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResult.verify|verify} messages.
                         * @param message GenerateKeywordHistoricalMetricsResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordHistoricalMetricsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordHistoricalMetricsResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordHistoricalMetricsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResult;

                        /**
                         * Decodes a GenerateKeywordHistoricalMetricsResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordHistoricalMetricsResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResult;

                        /**
                         * Verifies a GenerateKeywordHistoricalMetricsResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordHistoricalMetricsResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordHistoricalMetricsResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResult;

                        /**
                         * Creates a plain object from a GenerateKeywordHistoricalMetricsResult message. Also converts values to other types if specified.
                         * @param message GenerateKeywordHistoricalMetricsResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordHistoricalMetricsResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordHistoricalMetricsResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordHistoricalMetricsResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAdGroupThemesRequest. */
                    interface IGenerateAdGroupThemesRequest {

                        /** GenerateAdGroupThemesRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateAdGroupThemesRequest keywords */
                        keywords?: (string[]|null);

                        /** GenerateAdGroupThemesRequest ad_groups */
                        ad_groups?: (string[]|null);
                    }

                    /** Represents a GenerateAdGroupThemesRequest. */
                    class GenerateAdGroupThemesRequest implements IGenerateAdGroupThemesRequest {

                        /**
                         * Constructs a new GenerateAdGroupThemesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAdGroupThemesRequest);

                        /** GenerateAdGroupThemesRequest customer_id. */
                        public customer_id: string;

                        /** GenerateAdGroupThemesRequest keywords. */
                        public keywords: string[];

                        /** GenerateAdGroupThemesRequest ad_groups. */
                        public ad_groups: string[];

                        /**
                         * Creates a new GenerateAdGroupThemesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAdGroupThemesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAdGroupThemesRequest): google.ads.googleads.v23.services.GenerateAdGroupThemesRequest;

                        /**
                         * Encodes the specified GenerateAdGroupThemesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAdGroupThemesRequest.verify|verify} messages.
                         * @param message GenerateAdGroupThemesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAdGroupThemesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAdGroupThemesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAdGroupThemesRequest.verify|verify} messages.
                         * @param message GenerateAdGroupThemesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAdGroupThemesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAdGroupThemesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAdGroupThemesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAdGroupThemesRequest;

                        /**
                         * Decodes a GenerateAdGroupThemesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAdGroupThemesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAdGroupThemesRequest;

                        /**
                         * Verifies a GenerateAdGroupThemesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAdGroupThemesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAdGroupThemesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAdGroupThemesRequest;

                        /**
                         * Creates a plain object from a GenerateAdGroupThemesRequest message. Also converts values to other types if specified.
                         * @param message GenerateAdGroupThemesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAdGroupThemesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAdGroupThemesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAdGroupThemesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateAdGroupThemesResponse. */
                    interface IGenerateAdGroupThemesResponse {

                        /** GenerateAdGroupThemesResponse ad_group_keyword_suggestions */
                        ad_group_keyword_suggestions?: (google.ads.googleads.v23.services.IAdGroupKeywordSuggestion[]|null);

                        /** GenerateAdGroupThemesResponse unusable_ad_groups */
                        unusable_ad_groups?: (google.ads.googleads.v23.services.IUnusableAdGroup[]|null);
                    }

                    /** Represents a GenerateAdGroupThemesResponse. */
                    class GenerateAdGroupThemesResponse implements IGenerateAdGroupThemesResponse {

                        /**
                         * Constructs a new GenerateAdGroupThemesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateAdGroupThemesResponse);

                        /** GenerateAdGroupThemesResponse ad_group_keyword_suggestions. */
                        public ad_group_keyword_suggestions: google.ads.googleads.v23.services.IAdGroupKeywordSuggestion[];

                        /** GenerateAdGroupThemesResponse unusable_ad_groups. */
                        public unusable_ad_groups: google.ads.googleads.v23.services.IUnusableAdGroup[];

                        /**
                         * Creates a new GenerateAdGroupThemesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateAdGroupThemesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateAdGroupThemesResponse): google.ads.googleads.v23.services.GenerateAdGroupThemesResponse;

                        /**
                         * Encodes the specified GenerateAdGroupThemesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAdGroupThemesResponse.verify|verify} messages.
                         * @param message GenerateAdGroupThemesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateAdGroupThemesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateAdGroupThemesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateAdGroupThemesResponse.verify|verify} messages.
                         * @param message GenerateAdGroupThemesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateAdGroupThemesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateAdGroupThemesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateAdGroupThemesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateAdGroupThemesResponse;

                        /**
                         * Decodes a GenerateAdGroupThemesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateAdGroupThemesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateAdGroupThemesResponse;

                        /**
                         * Verifies a GenerateAdGroupThemesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateAdGroupThemesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateAdGroupThemesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateAdGroupThemesResponse;

                        /**
                         * Creates a plain object from a GenerateAdGroupThemesResponse message. Also converts values to other types if specified.
                         * @param message GenerateAdGroupThemesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateAdGroupThemesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateAdGroupThemesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateAdGroupThemesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdGroupKeywordSuggestion. */
                    interface IAdGroupKeywordSuggestion {

                        /** AdGroupKeywordSuggestion keyword_text */
                        keyword_text?: (string|null);

                        /** AdGroupKeywordSuggestion suggested_keyword_text */
                        suggested_keyword_text?: (string|null);

                        /** AdGroupKeywordSuggestion suggested_match_type */
                        suggested_match_type?: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|null);

                        /** AdGroupKeywordSuggestion suggested_ad_group */
                        suggested_ad_group?: (string|null);

                        /** AdGroupKeywordSuggestion suggested_campaign */
                        suggested_campaign?: (string|null);
                    }

                    /** Represents an AdGroupKeywordSuggestion. */
                    class AdGroupKeywordSuggestion implements IAdGroupKeywordSuggestion {

                        /**
                         * Constructs a new AdGroupKeywordSuggestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdGroupKeywordSuggestion);

                        /** AdGroupKeywordSuggestion keyword_text. */
                        public keyword_text: string;

                        /** AdGroupKeywordSuggestion suggested_keyword_text. */
                        public suggested_keyword_text: string;

                        /** AdGroupKeywordSuggestion suggested_match_type. */
                        public suggested_match_type: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType);

                        /** AdGroupKeywordSuggestion suggested_ad_group. */
                        public suggested_ad_group: string;

                        /** AdGroupKeywordSuggestion suggested_campaign. */
                        public suggested_campaign: string;

                        /**
                         * Creates a new AdGroupKeywordSuggestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupKeywordSuggestion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdGroupKeywordSuggestion): google.ads.googleads.v23.services.AdGroupKeywordSuggestion;

                        /**
                         * Encodes the specified AdGroupKeywordSuggestion message. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupKeywordSuggestion.verify|verify} messages.
                         * @param message AdGroupKeywordSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdGroupKeywordSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupKeywordSuggestion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdGroupKeywordSuggestion.verify|verify} messages.
                         * @param message AdGroupKeywordSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdGroupKeywordSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupKeywordSuggestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdGroupKeywordSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdGroupKeywordSuggestion;

                        /**
                         * Decodes an AdGroupKeywordSuggestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupKeywordSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdGroupKeywordSuggestion;

                        /**
                         * Verifies an AdGroupKeywordSuggestion message.
                         * @param message Plain 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 AdGroupKeywordSuggestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdGroupKeywordSuggestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdGroupKeywordSuggestion;

                        /**
                         * Creates a plain object from an AdGroupKeywordSuggestion message. Also converts values to other types if specified.
                         * @param message AdGroupKeywordSuggestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdGroupKeywordSuggestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupKeywordSuggestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdGroupKeywordSuggestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UnusableAdGroup. */
                    interface IUnusableAdGroup {

                        /** UnusableAdGroup ad_group */
                        ad_group?: (string|null);

                        /** UnusableAdGroup campaign */
                        campaign?: (string|null);
                    }

                    /** Represents an UnusableAdGroup. */
                    class UnusableAdGroup implements IUnusableAdGroup {

                        /**
                         * Constructs a new UnusableAdGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUnusableAdGroup);

                        /** UnusableAdGroup ad_group. */
                        public ad_group: string;

                        /** UnusableAdGroup campaign. */
                        public campaign: string;

                        /**
                         * Creates a new UnusableAdGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UnusableAdGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUnusableAdGroup): google.ads.googleads.v23.services.UnusableAdGroup;

                        /**
                         * Encodes the specified UnusableAdGroup message. Does not implicitly {@link google.ads.googleads.v23.services.UnusableAdGroup.verify|verify} messages.
                         * @param message UnusableAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUnusableAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UnusableAdGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UnusableAdGroup.verify|verify} messages.
                         * @param message UnusableAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUnusableAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UnusableAdGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UnusableAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UnusableAdGroup;

                        /**
                         * Decodes an UnusableAdGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UnusableAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UnusableAdGroup;

                        /**
                         * Verifies an UnusableAdGroup message.
                         * @param message Plain 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 UnusableAdGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UnusableAdGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UnusableAdGroup;

                        /**
                         * Creates a plain object from an UnusableAdGroup message. Also converts values to other types if specified.
                         * @param message UnusableAdGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UnusableAdGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UnusableAdGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UnusableAdGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateKeywordForecastMetricsRequest. */
                    interface IGenerateKeywordForecastMetricsRequest {

                        /** GenerateKeywordForecastMetricsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateKeywordForecastMetricsRequest currency_code */
                        currency_code?: (string|null);

                        /** GenerateKeywordForecastMetricsRequest forecast_period */
                        forecast_period?: (google.ads.googleads.v23.common.IDateRange|null);

                        /** GenerateKeywordForecastMetricsRequest campaign */
                        campaign?: (google.ads.googleads.v23.services.ICampaignToForecast|null);
                    }

                    /** Represents a GenerateKeywordForecastMetricsRequest. */
                    class GenerateKeywordForecastMetricsRequest implements IGenerateKeywordForecastMetricsRequest {

                        /**
                         * Constructs a new GenerateKeywordForecastMetricsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsRequest);

                        /** GenerateKeywordForecastMetricsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateKeywordForecastMetricsRequest currency_code. */
                        public currency_code?: (string|null);

                        /** GenerateKeywordForecastMetricsRequest forecast_period. */
                        public forecast_period?: (google.ads.googleads.v23.common.IDateRange|null);

                        /** GenerateKeywordForecastMetricsRequest campaign. */
                        public campaign?: (google.ads.googleads.v23.services.ICampaignToForecast|null);

                        /**
                         * Creates a new GenerateKeywordForecastMetricsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordForecastMetricsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsRequest): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsRequest;

                        /**
                         * Encodes the specified GenerateKeywordForecastMetricsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordForecastMetricsRequest.verify|verify} messages.
                         * @param message GenerateKeywordForecastMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordForecastMetricsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordForecastMetricsRequest.verify|verify} messages.
                         * @param message GenerateKeywordForecastMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordForecastMetricsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordForecastMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsRequest;

                        /**
                         * Decodes a GenerateKeywordForecastMetricsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordForecastMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsRequest;

                        /**
                         * Verifies a GenerateKeywordForecastMetricsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordForecastMetricsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordForecastMetricsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsRequest;

                        /**
                         * Creates a plain object from a GenerateKeywordForecastMetricsRequest message. Also converts values to other types if specified.
                         * @param message GenerateKeywordForecastMetricsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordForecastMetricsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordForecastMetricsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordForecastMetricsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignToForecast. */
                    interface ICampaignToForecast {

                        /** CampaignToForecast language_constants */
                        language_constants?: (string[]|null);

                        /** CampaignToForecast geo_modifiers */
                        geo_modifiers?: (google.ads.googleads.v23.services.ICriterionBidModifier[]|null);

                        /** CampaignToForecast keyword_plan_network */
                        keyword_plan_network?: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|null);

                        /** CampaignToForecast negative_keywords */
                        negative_keywords?: (google.ads.googleads.v23.common.IKeywordInfo[]|null);

                        /** CampaignToForecast bidding_strategy */
                        bidding_strategy?: (google.ads.googleads.v23.services.CampaignToForecast.ICampaignBiddingStrategy|null);

                        /** CampaignToForecast conversion_rate */
                        conversion_rate?: (number|null);

                        /** CampaignToForecast ad_groups */
                        ad_groups?: (google.ads.googleads.v23.services.IForecastAdGroup[]|null);
                    }

                    /** Represents a CampaignToForecast. */
                    class CampaignToForecast implements ICampaignToForecast {

                        /**
                         * Constructs a new CampaignToForecast.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignToForecast);

                        /** CampaignToForecast language_constants. */
                        public language_constants: string[];

                        /** CampaignToForecast geo_modifiers. */
                        public geo_modifiers: google.ads.googleads.v23.services.ICriterionBidModifier[];

                        /** CampaignToForecast keyword_plan_network. */
                        public keyword_plan_network: (google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v23.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork);

                        /** CampaignToForecast negative_keywords. */
                        public negative_keywords: google.ads.googleads.v23.common.IKeywordInfo[];

                        /** CampaignToForecast bidding_strategy. */
                        public bidding_strategy?: (google.ads.googleads.v23.services.CampaignToForecast.ICampaignBiddingStrategy|null);

                        /** CampaignToForecast conversion_rate. */
                        public conversion_rate?: (number|null);

                        /** CampaignToForecast ad_groups. */
                        public ad_groups: google.ads.googleads.v23.services.IForecastAdGroup[];

                        /**
                         * Creates a new CampaignToForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignToForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignToForecast): google.ads.googleads.v23.services.CampaignToForecast;

                        /**
                         * Encodes the specified CampaignToForecast message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignToForecast.verify|verify} messages.
                         * @param message CampaignToForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignToForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignToForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignToForecast.verify|verify} messages.
                         * @param message CampaignToForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignToForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignToForecast message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignToForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignToForecast;

                        /**
                         * Decodes a CampaignToForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignToForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignToForecast;

                        /**
                         * Verifies a CampaignToForecast message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignToForecast message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignToForecast
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignToForecast;

                        /**
                         * Creates a plain object from a CampaignToForecast message. Also converts values to other types if specified.
                         * @param message CampaignToForecast
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignToForecast, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignToForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignToForecast
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CampaignToForecast {

                        /** Properties of a CampaignBiddingStrategy. */
                        interface ICampaignBiddingStrategy {

                            /** CampaignBiddingStrategy manual_cpc_bidding_strategy */
                            manual_cpc_bidding_strategy?: (google.ads.googleads.v23.services.IManualCpcBiddingStrategy|null);

                            /** CampaignBiddingStrategy maximize_clicks_bidding_strategy */
                            maximize_clicks_bidding_strategy?: (google.ads.googleads.v23.services.IMaximizeClicksBiddingStrategy|null);

                            /** CampaignBiddingStrategy maximize_conversions_bidding_strategy */
                            maximize_conversions_bidding_strategy?: (google.ads.googleads.v23.services.IMaximizeConversionsBiddingStrategy|null);
                        }

                        /** Represents a CampaignBiddingStrategy. */
                        class CampaignBiddingStrategy implements ICampaignBiddingStrategy {

                            /**
                             * Constructs a new CampaignBiddingStrategy.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.CampaignToForecast.ICampaignBiddingStrategy);

                            /** CampaignBiddingStrategy manual_cpc_bidding_strategy. */
                            public manual_cpc_bidding_strategy?: (google.ads.googleads.v23.services.IManualCpcBiddingStrategy|null);

                            /** CampaignBiddingStrategy maximize_clicks_bidding_strategy. */
                            public maximize_clicks_bidding_strategy?: (google.ads.googleads.v23.services.IMaximizeClicksBiddingStrategy|null);

                            /** CampaignBiddingStrategy maximize_conversions_bidding_strategy. */
                            public maximize_conversions_bidding_strategy?: (google.ads.googleads.v23.services.IMaximizeConversionsBiddingStrategy|null);

                            /** CampaignBiddingStrategy bidding_strategy. */
                            public bidding_strategy?: ("manual_cpc_bidding_strategy"|"maximize_clicks_bidding_strategy"|"maximize_conversions_bidding_strategy");

                            /**
                             * Creates a new CampaignBiddingStrategy instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignBiddingStrategy instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.CampaignToForecast.ICampaignBiddingStrategy): google.ads.googleads.v23.services.CampaignToForecast.CampaignBiddingStrategy;

                            /**
                             * Encodes the specified CampaignBiddingStrategy message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignToForecast.CampaignBiddingStrategy.verify|verify} messages.
                             * @param message CampaignBiddingStrategy message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.CampaignToForecast.ICampaignBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignBiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignToForecast.CampaignBiddingStrategy.verify|verify} messages.
                             * @param message CampaignBiddingStrategy message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.CampaignToForecast.ICampaignBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignBiddingStrategy message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CampaignBiddingStrategy
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignToForecast.CampaignBiddingStrategy;

                            /**
                             * Decodes a CampaignBiddingStrategy message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CampaignBiddingStrategy
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignToForecast.CampaignBiddingStrategy;

                            /**
                             * Verifies a CampaignBiddingStrategy message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignBiddingStrategy message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CampaignBiddingStrategy
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignToForecast.CampaignBiddingStrategy;

                            /**
                             * Creates a plain object from a CampaignBiddingStrategy message. Also converts values to other types if specified.
                             * @param message CampaignBiddingStrategy
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.CampaignToForecast.CampaignBiddingStrategy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignBiddingStrategy to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CampaignBiddingStrategy
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a ForecastAdGroup. */
                    interface IForecastAdGroup {

                        /** ForecastAdGroup max_cpc_bid_micros */
                        max_cpc_bid_micros?: (number|null);

                        /** ForecastAdGroup biddable_keywords */
                        biddable_keywords?: (google.ads.googleads.v23.services.IBiddableKeyword[]|null);

                        /** ForecastAdGroup negative_keywords */
                        negative_keywords?: (google.ads.googleads.v23.common.IKeywordInfo[]|null);
                    }

                    /** Represents a ForecastAdGroup. */
                    class ForecastAdGroup implements IForecastAdGroup {

                        /**
                         * Constructs a new ForecastAdGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IForecastAdGroup);

                        /** ForecastAdGroup max_cpc_bid_micros. */
                        public max_cpc_bid_micros?: (number|null);

                        /** ForecastAdGroup biddable_keywords. */
                        public biddable_keywords: google.ads.googleads.v23.services.IBiddableKeyword[];

                        /** ForecastAdGroup negative_keywords. */
                        public negative_keywords: google.ads.googleads.v23.common.IKeywordInfo[];

                        /**
                         * Creates a new ForecastAdGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ForecastAdGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IForecastAdGroup): google.ads.googleads.v23.services.ForecastAdGroup;

                        /**
                         * Encodes the specified ForecastAdGroup message. Does not implicitly {@link google.ads.googleads.v23.services.ForecastAdGroup.verify|verify} messages.
                         * @param message ForecastAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IForecastAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ForecastAdGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ForecastAdGroup.verify|verify} messages.
                         * @param message ForecastAdGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IForecastAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ForecastAdGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ForecastAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ForecastAdGroup;

                        /**
                         * Decodes a ForecastAdGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ForecastAdGroup
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ForecastAdGroup;

                        /**
                         * Verifies a ForecastAdGroup message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ForecastAdGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ForecastAdGroup
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ForecastAdGroup;

                        /**
                         * Creates a plain object from a ForecastAdGroup message. Also converts values to other types if specified.
                         * @param message ForecastAdGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ForecastAdGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ForecastAdGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ForecastAdGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BiddableKeyword. */
                    interface IBiddableKeyword {

                        /** BiddableKeyword keyword */
                        keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** BiddableKeyword max_cpc_bid_micros */
                        max_cpc_bid_micros?: (number|null);
                    }

                    /** Represents a BiddableKeyword. */
                    class BiddableKeyword implements IBiddableKeyword {

                        /**
                         * Constructs a new BiddableKeyword.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IBiddableKeyword);

                        /** BiddableKeyword keyword. */
                        public keyword?: (google.ads.googleads.v23.common.IKeywordInfo|null);

                        /** BiddableKeyword max_cpc_bid_micros. */
                        public max_cpc_bid_micros?: (number|null);

                        /**
                         * Creates a new BiddableKeyword instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BiddableKeyword instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IBiddableKeyword): google.ads.googleads.v23.services.BiddableKeyword;

                        /**
                         * Encodes the specified BiddableKeyword message. Does not implicitly {@link google.ads.googleads.v23.services.BiddableKeyword.verify|verify} messages.
                         * @param message BiddableKeyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IBiddableKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddableKeyword message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.BiddableKeyword.verify|verify} messages.
                         * @param message BiddableKeyword message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IBiddableKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddableKeyword message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BiddableKeyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.BiddableKeyword;

                        /**
                         * Decodes a BiddableKeyword message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BiddableKeyword
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.BiddableKeyword;

                        /**
                         * Verifies a BiddableKeyword message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddableKeyword message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BiddableKeyword
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.BiddableKeyword;

                        /**
                         * Creates a plain object from a BiddableKeyword message. Also converts values to other types if specified.
                         * @param message BiddableKeyword
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.BiddableKeyword, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddableKeyword to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BiddableKeyword
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CriterionBidModifier. */
                    interface ICriterionBidModifier {

                        /** CriterionBidModifier geo_target_constant */
                        geo_target_constant?: (string|null);

                        /** CriterionBidModifier bid_modifier */
                        bid_modifier?: (number|null);
                    }

                    /** Represents a CriterionBidModifier. */
                    class CriterionBidModifier implements ICriterionBidModifier {

                        /**
                         * Constructs a new CriterionBidModifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICriterionBidModifier);

                        /** CriterionBidModifier geo_target_constant. */
                        public geo_target_constant: string;

                        /** CriterionBidModifier bid_modifier. */
                        public bid_modifier?: (number|null);

                        /**
                         * Creates a new CriterionBidModifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionBidModifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICriterionBidModifier): google.ads.googleads.v23.services.CriterionBidModifier;

                        /**
                         * Encodes the specified CriterionBidModifier message. Does not implicitly {@link google.ads.googleads.v23.services.CriterionBidModifier.verify|verify} messages.
                         * @param message CriterionBidModifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICriterionBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionBidModifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CriterionBidModifier.verify|verify} messages.
                         * @param message CriterionBidModifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICriterionBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionBidModifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CriterionBidModifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CriterionBidModifier;

                        /**
                         * Decodes a CriterionBidModifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CriterionBidModifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CriterionBidModifier;

                        /**
                         * Verifies a CriterionBidModifier message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionBidModifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CriterionBidModifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CriterionBidModifier;

                        /**
                         * Creates a plain object from a CriterionBidModifier message. Also converts values to other types if specified.
                         * @param message CriterionBidModifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CriterionBidModifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionBidModifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CriterionBidModifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ManualCpcBiddingStrategy. */
                    interface IManualCpcBiddingStrategy {

                        /** ManualCpcBiddingStrategy daily_budget_micros */
                        daily_budget_micros?: (number|null);

                        /** ManualCpcBiddingStrategy max_cpc_bid_micros */
                        max_cpc_bid_micros?: (number|null);
                    }

                    /** Represents a ManualCpcBiddingStrategy. */
                    class ManualCpcBiddingStrategy implements IManualCpcBiddingStrategy {

                        /**
                         * Constructs a new ManualCpcBiddingStrategy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IManualCpcBiddingStrategy);

                        /** ManualCpcBiddingStrategy daily_budget_micros. */
                        public daily_budget_micros?: (number|null);

                        /** ManualCpcBiddingStrategy max_cpc_bid_micros. */
                        public max_cpc_bid_micros: number;

                        /**
                         * Creates a new ManualCpcBiddingStrategy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManualCpcBiddingStrategy instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IManualCpcBiddingStrategy): google.ads.googleads.v23.services.ManualCpcBiddingStrategy;

                        /**
                         * Encodes the specified ManualCpcBiddingStrategy message. Does not implicitly {@link google.ads.googleads.v23.services.ManualCpcBiddingStrategy.verify|verify} messages.
                         * @param message ManualCpcBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IManualCpcBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpcBiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ManualCpcBiddingStrategy.verify|verify} messages.
                         * @param message ManualCpcBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IManualCpcBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpcBiddingStrategy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ManualCpcBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ManualCpcBiddingStrategy;

                        /**
                         * Decodes a ManualCpcBiddingStrategy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ManualCpcBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ManualCpcBiddingStrategy;

                        /**
                         * Verifies a ManualCpcBiddingStrategy message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpcBiddingStrategy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ManualCpcBiddingStrategy
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ManualCpcBiddingStrategy;

                        /**
                         * Creates a plain object from a ManualCpcBiddingStrategy message. Also converts values to other types if specified.
                         * @param message ManualCpcBiddingStrategy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ManualCpcBiddingStrategy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpcBiddingStrategy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ManualCpcBiddingStrategy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MaximizeClicksBiddingStrategy. */
                    interface IMaximizeClicksBiddingStrategy {

                        /** MaximizeClicksBiddingStrategy daily_target_spend_micros */
                        daily_target_spend_micros?: (number|null);

                        /** MaximizeClicksBiddingStrategy max_cpc_bid_ceiling_micros */
                        max_cpc_bid_ceiling_micros?: (number|null);
                    }

                    /** Represents a MaximizeClicksBiddingStrategy. */
                    class MaximizeClicksBiddingStrategy implements IMaximizeClicksBiddingStrategy {

                        /**
                         * Constructs a new MaximizeClicksBiddingStrategy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMaximizeClicksBiddingStrategy);

                        /** MaximizeClicksBiddingStrategy daily_target_spend_micros. */
                        public daily_target_spend_micros: number;

                        /** MaximizeClicksBiddingStrategy max_cpc_bid_ceiling_micros. */
                        public max_cpc_bid_ceiling_micros?: (number|null);

                        /**
                         * Creates a new MaximizeClicksBiddingStrategy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MaximizeClicksBiddingStrategy instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMaximizeClicksBiddingStrategy): google.ads.googleads.v23.services.MaximizeClicksBiddingStrategy;

                        /**
                         * Encodes the specified MaximizeClicksBiddingStrategy message. Does not implicitly {@link google.ads.googleads.v23.services.MaximizeClicksBiddingStrategy.verify|verify} messages.
                         * @param message MaximizeClicksBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMaximizeClicksBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MaximizeClicksBiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MaximizeClicksBiddingStrategy.verify|verify} messages.
                         * @param message MaximizeClicksBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMaximizeClicksBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MaximizeClicksBiddingStrategy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MaximizeClicksBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MaximizeClicksBiddingStrategy;

                        /**
                         * Decodes a MaximizeClicksBiddingStrategy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MaximizeClicksBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MaximizeClicksBiddingStrategy;

                        /**
                         * Verifies a MaximizeClicksBiddingStrategy message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MaximizeClicksBiddingStrategy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MaximizeClicksBiddingStrategy
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MaximizeClicksBiddingStrategy;

                        /**
                         * Creates a plain object from a MaximizeClicksBiddingStrategy message. Also converts values to other types if specified.
                         * @param message MaximizeClicksBiddingStrategy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MaximizeClicksBiddingStrategy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MaximizeClicksBiddingStrategy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MaximizeClicksBiddingStrategy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MaximizeConversionsBiddingStrategy. */
                    interface IMaximizeConversionsBiddingStrategy {

                        /** MaximizeConversionsBiddingStrategy daily_target_spend_micros */
                        daily_target_spend_micros?: (number|null);
                    }

                    /** Represents a MaximizeConversionsBiddingStrategy. */
                    class MaximizeConversionsBiddingStrategy implements IMaximizeConversionsBiddingStrategy {

                        /**
                         * Constructs a new MaximizeConversionsBiddingStrategy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMaximizeConversionsBiddingStrategy);

                        /** MaximizeConversionsBiddingStrategy daily_target_spend_micros. */
                        public daily_target_spend_micros: number;

                        /**
                         * Creates a new MaximizeConversionsBiddingStrategy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MaximizeConversionsBiddingStrategy instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMaximizeConversionsBiddingStrategy): google.ads.googleads.v23.services.MaximizeConversionsBiddingStrategy;

                        /**
                         * Encodes the specified MaximizeConversionsBiddingStrategy message. Does not implicitly {@link google.ads.googleads.v23.services.MaximizeConversionsBiddingStrategy.verify|verify} messages.
                         * @param message MaximizeConversionsBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMaximizeConversionsBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MaximizeConversionsBiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MaximizeConversionsBiddingStrategy.verify|verify} messages.
                         * @param message MaximizeConversionsBiddingStrategy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMaximizeConversionsBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MaximizeConversionsBiddingStrategy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MaximizeConversionsBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MaximizeConversionsBiddingStrategy;

                        /**
                         * Decodes a MaximizeConversionsBiddingStrategy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MaximizeConversionsBiddingStrategy
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MaximizeConversionsBiddingStrategy;

                        /**
                         * Verifies a MaximizeConversionsBiddingStrategy message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MaximizeConversionsBiddingStrategy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MaximizeConversionsBiddingStrategy
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MaximizeConversionsBiddingStrategy;

                        /**
                         * Creates a plain object from a MaximizeConversionsBiddingStrategy message. Also converts values to other types if specified.
                         * @param message MaximizeConversionsBiddingStrategy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MaximizeConversionsBiddingStrategy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MaximizeConversionsBiddingStrategy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MaximizeConversionsBiddingStrategy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateKeywordForecastMetricsResponse. */
                    interface IGenerateKeywordForecastMetricsResponse {

                        /** GenerateKeywordForecastMetricsResponse campaign_forecast_metrics */
                        campaign_forecast_metrics?: (google.ads.googleads.v23.services.IKeywordForecastMetrics|null);
                    }

                    /** Represents a GenerateKeywordForecastMetricsResponse. */
                    class GenerateKeywordForecastMetricsResponse implements IGenerateKeywordForecastMetricsResponse {

                        /**
                         * Constructs a new GenerateKeywordForecastMetricsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsResponse);

                        /** GenerateKeywordForecastMetricsResponse campaign_forecast_metrics. */
                        public campaign_forecast_metrics?: (google.ads.googleads.v23.services.IKeywordForecastMetrics|null);

                        /**
                         * Creates a new GenerateKeywordForecastMetricsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordForecastMetricsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsResponse): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse;

                        /**
                         * Encodes the specified GenerateKeywordForecastMetricsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse.verify|verify} messages.
                         * @param message GenerateKeywordForecastMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordForecastMetricsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse.verify|verify} messages.
                         * @param message GenerateKeywordForecastMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateKeywordForecastMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordForecastMetricsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateKeywordForecastMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse;

                        /**
                         * Decodes a GenerateKeywordForecastMetricsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateKeywordForecastMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse;

                        /**
                         * Verifies a GenerateKeywordForecastMetricsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordForecastMetricsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateKeywordForecastMetricsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse;

                        /**
                         * Creates a plain object from a GenerateKeywordForecastMetricsResponse message. Also converts values to other types if specified.
                         * @param message GenerateKeywordForecastMetricsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateKeywordForecastMetricsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordForecastMetricsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateKeywordForecastMetricsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KeywordForecastMetrics. */
                    interface IKeywordForecastMetrics {

                        /** KeywordForecastMetrics impressions */
                        impressions?: (number|null);

                        /** KeywordForecastMetrics click_through_rate */
                        click_through_rate?: (number|null);

                        /** KeywordForecastMetrics average_cpc_micros */
                        average_cpc_micros?: (number|null);

                        /** KeywordForecastMetrics clicks */
                        clicks?: (number|null);

                        /** KeywordForecastMetrics cost_micros */
                        cost_micros?: (number|null);

                        /** KeywordForecastMetrics conversions */
                        conversions?: (number|null);

                        /** KeywordForecastMetrics conversion_rate */
                        conversion_rate?: (number|null);

                        /** KeywordForecastMetrics average_cpa_micros */
                        average_cpa_micros?: (number|null);
                    }

                    /** Represents a KeywordForecastMetrics. */
                    class KeywordForecastMetrics implements IKeywordForecastMetrics {

                        /**
                         * Constructs a new KeywordForecastMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IKeywordForecastMetrics);

                        /** KeywordForecastMetrics impressions. */
                        public impressions?: (number|null);

                        /** KeywordForecastMetrics click_through_rate. */
                        public click_through_rate?: (number|null);

                        /** KeywordForecastMetrics average_cpc_micros. */
                        public average_cpc_micros?: (number|null);

                        /** KeywordForecastMetrics clicks. */
                        public clicks?: (number|null);

                        /** KeywordForecastMetrics cost_micros. */
                        public cost_micros?: (number|null);

                        /** KeywordForecastMetrics conversions. */
                        public conversions?: (number|null);

                        /** KeywordForecastMetrics conversion_rate. */
                        public conversion_rate?: (number|null);

                        /** KeywordForecastMetrics average_cpa_micros. */
                        public average_cpa_micros?: (number|null);

                        /**
                         * Creates a new KeywordForecastMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordForecastMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IKeywordForecastMetrics): google.ads.googleads.v23.services.KeywordForecastMetrics;

                        /**
                         * Encodes the specified KeywordForecastMetrics message. Does not implicitly {@link google.ads.googleads.v23.services.KeywordForecastMetrics.verify|verify} messages.
                         * @param message KeywordForecastMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IKeywordForecastMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordForecastMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.KeywordForecastMetrics.verify|verify} messages.
                         * @param message KeywordForecastMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IKeywordForecastMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordForecastMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KeywordForecastMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.KeywordForecastMetrics;

                        /**
                         * Decodes a KeywordForecastMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordForecastMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.KeywordForecastMetrics;

                        /**
                         * Verifies a KeywordForecastMetrics message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordForecastMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KeywordForecastMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.KeywordForecastMetrics;

                        /**
                         * Creates a plain object from a KeywordForecastMetrics message. Also converts values to other types if specified.
                         * @param message KeywordForecastMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.KeywordForecastMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordForecastMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KeywordForecastMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a KeywordThemeConstantService */
                    class KeywordThemeConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordThemeConstantService 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 KeywordThemeConstantService 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): KeywordThemeConstantService;

                        /**
                         * Calls SuggestKeywordThemeConstants.
                         * @param request SuggestKeywordThemeConstantsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SuggestKeywordThemeConstantsResponse
                         */
                        public suggestKeywordThemeConstants(request: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsRequest, callback: google.ads.googleads.v23.services.KeywordThemeConstantService.SuggestKeywordThemeConstantsCallback): void;

                        /**
                         * Calls SuggestKeywordThemeConstants.
                         * @param request SuggestKeywordThemeConstantsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestKeywordThemeConstants(request: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsRequest): Promise<google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse>;
                    }

                    namespace KeywordThemeConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.KeywordThemeConstantService|suggestKeywordThemeConstants}.
                         * @param error Error, if any
                         * @param [response] SuggestKeywordThemeConstantsResponse
                         */
                        type SuggestKeywordThemeConstantsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse) => void;
                    }

                    /** Properties of a SuggestKeywordThemeConstantsRequest. */
                    interface ISuggestKeywordThemeConstantsRequest {

                        /** SuggestKeywordThemeConstantsRequest query_text */
                        query_text?: (string|null);

                        /** SuggestKeywordThemeConstantsRequest country_code */
                        country_code?: (string|null);

                        /** SuggestKeywordThemeConstantsRequest language_code */
                        language_code?: (string|null);
                    }

                    /** Represents a SuggestKeywordThemeConstantsRequest. */
                    class SuggestKeywordThemeConstantsRequest implements ISuggestKeywordThemeConstantsRequest {

                        /**
                         * Constructs a new SuggestKeywordThemeConstantsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsRequest);

                        /** SuggestKeywordThemeConstantsRequest query_text. */
                        public query_text: string;

                        /** SuggestKeywordThemeConstantsRequest country_code. */
                        public country_code: string;

                        /** SuggestKeywordThemeConstantsRequest language_code. */
                        public language_code: string;

                        /**
                         * Creates a new SuggestKeywordThemeConstantsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestKeywordThemeConstantsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsRequest): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsRequest;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemeConstantsRequest.verify|verify} messages.
                         * @param message SuggestKeywordThemeConstantsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemeConstantsRequest.verify|verify} messages.
                         * @param message SuggestKeywordThemeConstantsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestKeywordThemeConstantsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestKeywordThemeConstantsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsRequest;

                        /**
                         * Decodes a SuggestKeywordThemeConstantsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestKeywordThemeConstantsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsRequest;

                        /**
                         * Verifies a SuggestKeywordThemeConstantsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestKeywordThemeConstantsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestKeywordThemeConstantsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsRequest;

                        /**
                         * Creates a plain object from a SuggestKeywordThemeConstantsRequest message. Also converts values to other types if specified.
                         * @param message SuggestKeywordThemeConstantsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestKeywordThemeConstantsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestKeywordThemeConstantsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestKeywordThemeConstantsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SuggestKeywordThemeConstantsResponse. */
                    interface ISuggestKeywordThemeConstantsResponse {

                        /** SuggestKeywordThemeConstantsResponse keyword_theme_constants */
                        keyword_theme_constants?: (google.ads.googleads.v23.resources.IKeywordThemeConstant[]|null);
                    }

                    /** Represents a SuggestKeywordThemeConstantsResponse. */
                    class SuggestKeywordThemeConstantsResponse implements ISuggestKeywordThemeConstantsResponse {

                        /**
                         * Constructs a new SuggestKeywordThemeConstantsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsResponse);

                        /** SuggestKeywordThemeConstantsResponse keyword_theme_constants. */
                        public keyword_theme_constants: google.ads.googleads.v23.resources.IKeywordThemeConstant[];

                        /**
                         * Creates a new SuggestKeywordThemeConstantsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestKeywordThemeConstantsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsResponse): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse.verify|verify} messages.
                         * @param message SuggestKeywordThemeConstantsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse.verify|verify} messages.
                         * @param message SuggestKeywordThemeConstantsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestKeywordThemeConstantsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestKeywordThemeConstantsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestKeywordThemeConstantsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse;

                        /**
                         * Decodes a SuggestKeywordThemeConstantsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestKeywordThemeConstantsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse;

                        /**
                         * Verifies a SuggestKeywordThemeConstantsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestKeywordThemeConstantsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestKeywordThemeConstantsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse;

                        /**
                         * Creates a plain object from a SuggestKeywordThemeConstantsResponse message. Also converts values to other types if specified.
                         * @param message SuggestKeywordThemeConstantsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestKeywordThemeConstantsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestKeywordThemeConstantsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestKeywordThemeConstantsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a LocalServicesLeadService */
                    class LocalServicesLeadService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new LocalServicesLeadService 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 LocalServicesLeadService 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): LocalServicesLeadService;

                        /**
                         * Calls AppendLeadConversation.
                         * @param request AppendLeadConversationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AppendLeadConversationResponse
                         */
                        public appendLeadConversation(request: google.ads.googleads.v23.services.IAppendLeadConversationRequest, callback: google.ads.googleads.v23.services.LocalServicesLeadService.AppendLeadConversationCallback): void;

                        /**
                         * Calls AppendLeadConversation.
                         * @param request AppendLeadConversationRequest message or plain object
                         * @returns Promise
                         */
                        public appendLeadConversation(request: google.ads.googleads.v23.services.IAppendLeadConversationRequest): Promise<google.ads.googleads.v23.services.AppendLeadConversationResponse>;

                        /**
                         * Calls ProvideLeadFeedback.
                         * @param request ProvideLeadFeedbackRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ProvideLeadFeedbackResponse
                         */
                        public provideLeadFeedback(request: google.ads.googleads.v23.services.IProvideLeadFeedbackRequest, callback: google.ads.googleads.v23.services.LocalServicesLeadService.ProvideLeadFeedbackCallback): void;

                        /**
                         * Calls ProvideLeadFeedback.
                         * @param request ProvideLeadFeedbackRequest message or plain object
                         * @returns Promise
                         */
                        public provideLeadFeedback(request: google.ads.googleads.v23.services.IProvideLeadFeedbackRequest): Promise<google.ads.googleads.v23.services.ProvideLeadFeedbackResponse>;
                    }

                    namespace LocalServicesLeadService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.LocalServicesLeadService|appendLeadConversation}.
                         * @param error Error, if any
                         * @param [response] AppendLeadConversationResponse
                         */
                        type AppendLeadConversationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.AppendLeadConversationResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.LocalServicesLeadService|provideLeadFeedback}.
                         * @param error Error, if any
                         * @param [response] ProvideLeadFeedbackResponse
                         */
                        type ProvideLeadFeedbackCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ProvideLeadFeedbackResponse) => void;
                    }

                    /** Properties of an AppendLeadConversationRequest. */
                    interface IAppendLeadConversationRequest {

                        /** AppendLeadConversationRequest customer_id */
                        customer_id?: (string|null);

                        /** AppendLeadConversationRequest conversations */
                        conversations?: (google.ads.googleads.v23.services.IConversation[]|null);
                    }

                    /** Represents an AppendLeadConversationRequest. */
                    class AppendLeadConversationRequest implements IAppendLeadConversationRequest {

                        /**
                         * Constructs a new AppendLeadConversationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAppendLeadConversationRequest);

                        /** AppendLeadConversationRequest customer_id. */
                        public customer_id: string;

                        /** AppendLeadConversationRequest conversations. */
                        public conversations: google.ads.googleads.v23.services.IConversation[];

                        /**
                         * Creates a new AppendLeadConversationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppendLeadConversationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAppendLeadConversationRequest): google.ads.googleads.v23.services.AppendLeadConversationRequest;

                        /**
                         * Encodes the specified AppendLeadConversationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.AppendLeadConversationRequest.verify|verify} messages.
                         * @param message AppendLeadConversationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAppendLeadConversationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppendLeadConversationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AppendLeadConversationRequest.verify|verify} messages.
                         * @param message AppendLeadConversationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAppendLeadConversationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppendLeadConversationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppendLeadConversationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AppendLeadConversationRequest;

                        /**
                         * Decodes an AppendLeadConversationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppendLeadConversationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AppendLeadConversationRequest;

                        /**
                         * Verifies an AppendLeadConversationRequest message.
                         * @param message Plain 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 AppendLeadConversationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppendLeadConversationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AppendLeadConversationRequest;

                        /**
                         * Creates a plain object from an AppendLeadConversationRequest message. Also converts values to other types if specified.
                         * @param message AppendLeadConversationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AppendLeadConversationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppendLeadConversationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppendLeadConversationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AppendLeadConversationResponse. */
                    interface IAppendLeadConversationResponse {

                        /** AppendLeadConversationResponse responses */
                        responses?: (google.ads.googleads.v23.services.IConversationOrError[]|null);
                    }

                    /** Represents an AppendLeadConversationResponse. */
                    class AppendLeadConversationResponse implements IAppendLeadConversationResponse {

                        /**
                         * Constructs a new AppendLeadConversationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAppendLeadConversationResponse);

                        /** AppendLeadConversationResponse responses. */
                        public responses: google.ads.googleads.v23.services.IConversationOrError[];

                        /**
                         * Creates a new AppendLeadConversationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppendLeadConversationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAppendLeadConversationResponse): google.ads.googleads.v23.services.AppendLeadConversationResponse;

                        /**
                         * Encodes the specified AppendLeadConversationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.AppendLeadConversationResponse.verify|verify} messages.
                         * @param message AppendLeadConversationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAppendLeadConversationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppendLeadConversationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AppendLeadConversationResponse.verify|verify} messages.
                         * @param message AppendLeadConversationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAppendLeadConversationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppendLeadConversationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AppendLeadConversationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AppendLeadConversationResponse;

                        /**
                         * Decodes an AppendLeadConversationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppendLeadConversationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AppendLeadConversationResponse;

                        /**
                         * Verifies an AppendLeadConversationResponse message.
                         * @param message Plain 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 AppendLeadConversationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AppendLeadConversationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AppendLeadConversationResponse;

                        /**
                         * Creates a plain object from an AppendLeadConversationResponse message. Also converts values to other types if specified.
                         * @param message AppendLeadConversationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AppendLeadConversationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppendLeadConversationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AppendLeadConversationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Conversation. */
                    interface IConversation {

                        /** Conversation local_services_lead */
                        local_services_lead?: (string|null);

                        /** Conversation text */
                        text?: (string|null);
                    }

                    /** Represents a Conversation. */
                    class Conversation implements IConversation {

                        /**
                         * Constructs a new Conversation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversation);

                        /** Conversation local_services_lead. */
                        public local_services_lead: string;

                        /** Conversation text. */
                        public text: string;

                        /**
                         * Creates a new Conversation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Conversation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversation): google.ads.googleads.v23.services.Conversation;

                        /**
                         * Encodes the specified Conversation message. Does not implicitly {@link google.ads.googleads.v23.services.Conversation.verify|verify} messages.
                         * @param message Conversation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Conversation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.Conversation.verify|verify} messages.
                         * @param message Conversation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Conversation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Conversation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.Conversation;

                        /**
                         * Decodes a Conversation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Conversation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.Conversation;

                        /**
                         * Verifies a Conversation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Conversation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Conversation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.Conversation;

                        /**
                         * Creates a plain object from a Conversation message. Also converts values to other types if specified.
                         * @param message Conversation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.Conversation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Conversation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Conversation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversationOrError. */
                    interface IConversationOrError {

                        /** ConversationOrError local_services_lead_conversation */
                        local_services_lead_conversation?: (string|null);

                        /** ConversationOrError partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a ConversationOrError. */
                    class ConversationOrError implements IConversationOrError {

                        /**
                         * Constructs a new ConversationOrError.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversationOrError);

                        /** ConversationOrError local_services_lead_conversation. */
                        public local_services_lead_conversation?: (string|null);

                        /** ConversationOrError partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** ConversationOrError append_lead_conversation_response. */
                        public append_lead_conversation_response?: ("local_services_lead_conversation"|"partial_failure_error");

                        /**
                         * Creates a new ConversationOrError instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationOrError instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversationOrError): google.ads.googleads.v23.services.ConversationOrError;

                        /**
                         * Encodes the specified ConversationOrError message. Does not implicitly {@link google.ads.googleads.v23.services.ConversationOrError.verify|verify} messages.
                         * @param message ConversationOrError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversationOrError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationOrError message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversationOrError.verify|verify} messages.
                         * @param message ConversationOrError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversationOrError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationOrError message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationOrError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversationOrError;

                        /**
                         * Decodes a ConversationOrError message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationOrError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversationOrError;

                        /**
                         * Verifies a ConversationOrError message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversationOrError message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationOrError
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversationOrError;

                        /**
                         * Creates a plain object from a ConversationOrError message. Also converts values to other types if specified.
                         * @param message ConversationOrError
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversationOrError, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationOrError to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationOrError
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SurveySatisfied. */
                    interface ISurveySatisfied {

                        /** SurveySatisfied survey_satisfied_reason */
                        survey_satisfied_reason?: (google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum.SurveySatisfiedReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum.SurveySatisfiedReason|null);

                        /** SurveySatisfied other_reason_comment */
                        other_reason_comment?: (string|null);
                    }

                    /** Represents a SurveySatisfied. */
                    class SurveySatisfied implements ISurveySatisfied {

                        /**
                         * Constructs a new SurveySatisfied.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISurveySatisfied);

                        /** SurveySatisfied survey_satisfied_reason. */
                        public survey_satisfied_reason: (google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum.SurveySatisfiedReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadSurveySatisfiedReasonEnum.SurveySatisfiedReason);

                        /** SurveySatisfied other_reason_comment. */
                        public other_reason_comment: string;

                        /**
                         * Creates a new SurveySatisfied instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SurveySatisfied instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISurveySatisfied): google.ads.googleads.v23.services.SurveySatisfied;

                        /**
                         * Encodes the specified SurveySatisfied message. Does not implicitly {@link google.ads.googleads.v23.services.SurveySatisfied.verify|verify} messages.
                         * @param message SurveySatisfied message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISurveySatisfied, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SurveySatisfied message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SurveySatisfied.verify|verify} messages.
                         * @param message SurveySatisfied message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISurveySatisfied, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SurveySatisfied message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SurveySatisfied
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SurveySatisfied;

                        /**
                         * Decodes a SurveySatisfied message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SurveySatisfied
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SurveySatisfied;

                        /**
                         * Verifies a SurveySatisfied message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SurveySatisfied message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SurveySatisfied
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SurveySatisfied;

                        /**
                         * Creates a plain object from a SurveySatisfied message. Also converts values to other types if specified.
                         * @param message SurveySatisfied
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SurveySatisfied, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SurveySatisfied to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SurveySatisfied
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SurveyDissatisfied. */
                    interface ISurveyDissatisfied {

                        /** SurveyDissatisfied survey_dissatisfied_reason */
                        survey_dissatisfied_reason?: (google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum.SurveyDissatisfiedReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum.SurveyDissatisfiedReason|null);

                        /** SurveyDissatisfied other_reason_comment */
                        other_reason_comment?: (string|null);
                    }

                    /** Represents a SurveyDissatisfied. */
                    class SurveyDissatisfied implements ISurveyDissatisfied {

                        /**
                         * Constructs a new SurveyDissatisfied.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISurveyDissatisfied);

                        /** SurveyDissatisfied survey_dissatisfied_reason. */
                        public survey_dissatisfied_reason: (google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum.SurveyDissatisfiedReason|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadSurveyDissatisfiedReasonEnum.SurveyDissatisfiedReason);

                        /** SurveyDissatisfied other_reason_comment. */
                        public other_reason_comment: string;

                        /**
                         * Creates a new SurveyDissatisfied instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SurveyDissatisfied instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISurveyDissatisfied): google.ads.googleads.v23.services.SurveyDissatisfied;

                        /**
                         * Encodes the specified SurveyDissatisfied message. Does not implicitly {@link google.ads.googleads.v23.services.SurveyDissatisfied.verify|verify} messages.
                         * @param message SurveyDissatisfied message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISurveyDissatisfied, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SurveyDissatisfied message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SurveyDissatisfied.verify|verify} messages.
                         * @param message SurveyDissatisfied message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISurveyDissatisfied, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SurveyDissatisfied message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SurveyDissatisfied
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SurveyDissatisfied;

                        /**
                         * Decodes a SurveyDissatisfied message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SurveyDissatisfied
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SurveyDissatisfied;

                        /**
                         * Verifies a SurveyDissatisfied message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SurveyDissatisfied message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SurveyDissatisfied
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SurveyDissatisfied;

                        /**
                         * Creates a plain object from a SurveyDissatisfied message. Also converts values to other types if specified.
                         * @param message SurveyDissatisfied
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SurveyDissatisfied, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SurveyDissatisfied to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SurveyDissatisfied
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProvideLeadFeedbackRequest. */
                    interface IProvideLeadFeedbackRequest {

                        /** ProvideLeadFeedbackRequest resource_name */
                        resource_name?: (string|null);

                        /** ProvideLeadFeedbackRequest survey_answer */
                        survey_answer?: (google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum.SurveyAnswer|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum.SurveyAnswer|null);

                        /** ProvideLeadFeedbackRequest survey_satisfied */
                        survey_satisfied?: (google.ads.googleads.v23.services.ISurveySatisfied|null);

                        /** ProvideLeadFeedbackRequest survey_dissatisfied */
                        survey_dissatisfied?: (google.ads.googleads.v23.services.ISurveyDissatisfied|null);
                    }

                    /** Represents a ProvideLeadFeedbackRequest. */
                    class ProvideLeadFeedbackRequest implements IProvideLeadFeedbackRequest {

                        /**
                         * Constructs a new ProvideLeadFeedbackRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IProvideLeadFeedbackRequest);

                        /** ProvideLeadFeedbackRequest resource_name. */
                        public resource_name: string;

                        /** ProvideLeadFeedbackRequest survey_answer. */
                        public survey_answer: (google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum.SurveyAnswer|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadSurveyAnswerEnum.SurveyAnswer);

                        /** ProvideLeadFeedbackRequest survey_satisfied. */
                        public survey_satisfied?: (google.ads.googleads.v23.services.ISurveySatisfied|null);

                        /** ProvideLeadFeedbackRequest survey_dissatisfied. */
                        public survey_dissatisfied?: (google.ads.googleads.v23.services.ISurveyDissatisfied|null);

                        /** ProvideLeadFeedbackRequest survey_details. */
                        public survey_details?: ("survey_satisfied"|"survey_dissatisfied");

                        /**
                         * Creates a new ProvideLeadFeedbackRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProvideLeadFeedbackRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IProvideLeadFeedbackRequest): google.ads.googleads.v23.services.ProvideLeadFeedbackRequest;

                        /**
                         * Encodes the specified ProvideLeadFeedbackRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ProvideLeadFeedbackRequest.verify|verify} messages.
                         * @param message ProvideLeadFeedbackRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IProvideLeadFeedbackRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProvideLeadFeedbackRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ProvideLeadFeedbackRequest.verify|verify} messages.
                         * @param message ProvideLeadFeedbackRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IProvideLeadFeedbackRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProvideLeadFeedbackRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProvideLeadFeedbackRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ProvideLeadFeedbackRequest;

                        /**
                         * Decodes a ProvideLeadFeedbackRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProvideLeadFeedbackRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ProvideLeadFeedbackRequest;

                        /**
                         * Verifies a ProvideLeadFeedbackRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProvideLeadFeedbackRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProvideLeadFeedbackRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ProvideLeadFeedbackRequest;

                        /**
                         * Creates a plain object from a ProvideLeadFeedbackRequest message. Also converts values to other types if specified.
                         * @param message ProvideLeadFeedbackRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ProvideLeadFeedbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProvideLeadFeedbackRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProvideLeadFeedbackRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProvideLeadFeedbackResponse. */
                    interface IProvideLeadFeedbackResponse {

                        /** ProvideLeadFeedbackResponse credit_issuance_decision */
                        credit_issuance_decision?: (google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum.CreditIssuanceDecision|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum.CreditIssuanceDecision|null);
                    }

                    /** Represents a ProvideLeadFeedbackResponse. */
                    class ProvideLeadFeedbackResponse implements IProvideLeadFeedbackResponse {

                        /**
                         * Constructs a new ProvideLeadFeedbackResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IProvideLeadFeedbackResponse);

                        /** ProvideLeadFeedbackResponse credit_issuance_decision. */
                        public credit_issuance_decision: (google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum.CreditIssuanceDecision|keyof typeof google.ads.googleads.v23.enums.LocalServicesLeadCreditIssuanceDecisionEnum.CreditIssuanceDecision);

                        /**
                         * Creates a new ProvideLeadFeedbackResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProvideLeadFeedbackResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IProvideLeadFeedbackResponse): google.ads.googleads.v23.services.ProvideLeadFeedbackResponse;

                        /**
                         * Encodes the specified ProvideLeadFeedbackResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ProvideLeadFeedbackResponse.verify|verify} messages.
                         * @param message ProvideLeadFeedbackResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IProvideLeadFeedbackResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProvideLeadFeedbackResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ProvideLeadFeedbackResponse.verify|verify} messages.
                         * @param message ProvideLeadFeedbackResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IProvideLeadFeedbackResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProvideLeadFeedbackResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProvideLeadFeedbackResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ProvideLeadFeedbackResponse;

                        /**
                         * Decodes a ProvideLeadFeedbackResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProvideLeadFeedbackResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ProvideLeadFeedbackResponse;

                        /**
                         * Verifies a ProvideLeadFeedbackResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProvideLeadFeedbackResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProvideLeadFeedbackResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ProvideLeadFeedbackResponse;

                        /**
                         * Creates a plain object from a ProvideLeadFeedbackResponse message. Also converts values to other types if specified.
                         * @param message ProvideLeadFeedbackResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ProvideLeadFeedbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProvideLeadFeedbackResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProvideLeadFeedbackResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents an OfflineUserDataJobService */
                    class OfflineUserDataJobService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new OfflineUserDataJobService 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 OfflineUserDataJobService 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): OfflineUserDataJobService;

                        /**
                         * Calls CreateOfflineUserDataJob.
                         * @param request CreateOfflineUserDataJobRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateOfflineUserDataJobResponse
                         */
                        public createOfflineUserDataJob(request: google.ads.googleads.v23.services.ICreateOfflineUserDataJobRequest, callback: google.ads.googleads.v23.services.OfflineUserDataJobService.CreateOfflineUserDataJobCallback): void;

                        /**
                         * Calls CreateOfflineUserDataJob.
                         * @param request CreateOfflineUserDataJobRequest message or plain object
                         * @returns Promise
                         */
                        public createOfflineUserDataJob(request: google.ads.googleads.v23.services.ICreateOfflineUserDataJobRequest): Promise<google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse>;

                        /**
                         * Calls AddOfflineUserDataJobOperations.
                         * @param request AddOfflineUserDataJobOperationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AddOfflineUserDataJobOperationsResponse
                         */
                        public addOfflineUserDataJobOperations(request: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsRequest, callback: google.ads.googleads.v23.services.OfflineUserDataJobService.AddOfflineUserDataJobOperationsCallback): void;

                        /**
                         * Calls AddOfflineUserDataJobOperations.
                         * @param request AddOfflineUserDataJobOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public addOfflineUserDataJobOperations(request: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsRequest): Promise<google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse>;

                        /**
                         * Calls RunOfflineUserDataJob.
                         * @param request RunOfflineUserDataJobRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public runOfflineUserDataJob(request: google.ads.googleads.v23.services.IRunOfflineUserDataJobRequest, callback: google.ads.googleads.v23.services.OfflineUserDataJobService.RunOfflineUserDataJobCallback): void;

                        /**
                         * Calls RunOfflineUserDataJob.
                         * @param request RunOfflineUserDataJobRequest message or plain object
                         * @returns Promise
                         */
                        public runOfflineUserDataJob(request: google.ads.googleads.v23.services.IRunOfflineUserDataJobRequest): Promise<google.longrunning.Operation>;
                    }

                    namespace OfflineUserDataJobService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.OfflineUserDataJobService|createOfflineUserDataJob}.
                         * @param error Error, if any
                         * @param [response] CreateOfflineUserDataJobResponse
                         */
                        type CreateOfflineUserDataJobCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.OfflineUserDataJobService|addOfflineUserDataJobOperations}.
                         * @param error Error, if any
                         * @param [response] AddOfflineUserDataJobOperationsResponse
                         */
                        type AddOfflineUserDataJobOperationsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.OfflineUserDataJobService|runOfflineUserDataJob}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type RunOfflineUserDataJobCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                    }

                    /** Properties of a CreateOfflineUserDataJobRequest. */
                    interface ICreateOfflineUserDataJobRequest {

                        /** CreateOfflineUserDataJobRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateOfflineUserDataJobRequest job */
                        job?: (google.ads.googleads.v23.resources.IOfflineUserDataJob|null);

                        /** CreateOfflineUserDataJobRequest validate_only */
                        validate_only?: (boolean|null);

                        /** CreateOfflineUserDataJobRequest enable_match_rate_range_preview */
                        enable_match_rate_range_preview?: (boolean|null);
                    }

                    /** Represents a CreateOfflineUserDataJobRequest. */
                    class CreateOfflineUserDataJobRequest implements ICreateOfflineUserDataJobRequest {

                        /**
                         * Constructs a new CreateOfflineUserDataJobRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateOfflineUserDataJobRequest);

                        /** CreateOfflineUserDataJobRequest customer_id. */
                        public customer_id: string;

                        /** CreateOfflineUserDataJobRequest job. */
                        public job?: (google.ads.googleads.v23.resources.IOfflineUserDataJob|null);

                        /** CreateOfflineUserDataJobRequest validate_only. */
                        public validate_only: boolean;

                        /** CreateOfflineUserDataJobRequest enable_match_rate_range_preview. */
                        public enable_match_rate_range_preview: boolean;

                        /**
                         * Creates a new CreateOfflineUserDataJobRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateOfflineUserDataJobRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateOfflineUserDataJobRequest): google.ads.googleads.v23.services.CreateOfflineUserDataJobRequest;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobRequest message. Does not implicitly {@link google.ads.googleads.v23.services.CreateOfflineUserDataJobRequest.verify|verify} messages.
                         * @param message CreateOfflineUserDataJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateOfflineUserDataJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateOfflineUserDataJobRequest.verify|verify} messages.
                         * @param message CreateOfflineUserDataJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateOfflineUserDataJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateOfflineUserDataJobRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateOfflineUserDataJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateOfflineUserDataJobRequest;

                        /**
                         * Decodes a CreateOfflineUserDataJobRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateOfflineUserDataJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateOfflineUserDataJobRequest;

                        /**
                         * Verifies a CreateOfflineUserDataJobRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateOfflineUserDataJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateOfflineUserDataJobRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateOfflineUserDataJobRequest;

                        /**
                         * Creates a plain object from a CreateOfflineUserDataJobRequest message. Also converts values to other types if specified.
                         * @param message CreateOfflineUserDataJobRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateOfflineUserDataJobRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateOfflineUserDataJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateOfflineUserDataJobRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateOfflineUserDataJobResponse. */
                    interface ICreateOfflineUserDataJobResponse {

                        /** CreateOfflineUserDataJobResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a CreateOfflineUserDataJobResponse. */
                    class CreateOfflineUserDataJobResponse implements ICreateOfflineUserDataJobResponse {

                        /**
                         * Constructs a new CreateOfflineUserDataJobResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateOfflineUserDataJobResponse);

                        /** CreateOfflineUserDataJobResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new CreateOfflineUserDataJobResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateOfflineUserDataJobResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateOfflineUserDataJobResponse): google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobResponse message. Does not implicitly {@link google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse.verify|verify} messages.
                         * @param message CreateOfflineUserDataJobResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateOfflineUserDataJobResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse.verify|verify} messages.
                         * @param message CreateOfflineUserDataJobResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateOfflineUserDataJobResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateOfflineUserDataJobResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateOfflineUserDataJobResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse;

                        /**
                         * Decodes a CreateOfflineUserDataJobResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateOfflineUserDataJobResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse;

                        /**
                         * Verifies a CreateOfflineUserDataJobResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateOfflineUserDataJobResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateOfflineUserDataJobResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse;

                        /**
                         * Creates a plain object from a CreateOfflineUserDataJobResponse message. Also converts values to other types if specified.
                         * @param message CreateOfflineUserDataJobResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateOfflineUserDataJobResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateOfflineUserDataJobResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateOfflineUserDataJobResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RunOfflineUserDataJobRequest. */
                    interface IRunOfflineUserDataJobRequest {

                        /** RunOfflineUserDataJobRequest resource_name */
                        resource_name?: (string|null);

                        /** RunOfflineUserDataJobRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a RunOfflineUserDataJobRequest. */
                    class RunOfflineUserDataJobRequest implements IRunOfflineUserDataJobRequest {

                        /**
                         * Constructs a new RunOfflineUserDataJobRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRunOfflineUserDataJobRequest);

                        /** RunOfflineUserDataJobRequest resource_name. */
                        public resource_name: string;

                        /** RunOfflineUserDataJobRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new RunOfflineUserDataJobRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RunOfflineUserDataJobRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRunOfflineUserDataJobRequest): google.ads.googleads.v23.services.RunOfflineUserDataJobRequest;

                        /**
                         * Encodes the specified RunOfflineUserDataJobRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RunOfflineUserDataJobRequest.verify|verify} messages.
                         * @param message RunOfflineUserDataJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRunOfflineUserDataJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RunOfflineUserDataJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RunOfflineUserDataJobRequest.verify|verify} messages.
                         * @param message RunOfflineUserDataJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRunOfflineUserDataJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RunOfflineUserDataJobRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RunOfflineUserDataJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RunOfflineUserDataJobRequest;

                        /**
                         * Decodes a RunOfflineUserDataJobRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RunOfflineUserDataJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RunOfflineUserDataJobRequest;

                        /**
                         * Verifies a RunOfflineUserDataJobRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RunOfflineUserDataJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RunOfflineUserDataJobRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RunOfflineUserDataJobRequest;

                        /**
                         * Creates a plain object from a RunOfflineUserDataJobRequest message. Also converts values to other types if specified.
                         * @param message RunOfflineUserDataJobRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RunOfflineUserDataJobRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RunOfflineUserDataJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RunOfflineUserDataJobRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddOfflineUserDataJobOperationsRequest. */
                    interface IAddOfflineUserDataJobOperationsRequest {

                        /** AddOfflineUserDataJobOperationsRequest resource_name */
                        resource_name?: (string|null);

                        /** AddOfflineUserDataJobOperationsRequest enable_partial_failure */
                        enable_partial_failure?: (boolean|null);

                        /** AddOfflineUserDataJobOperationsRequest enable_warnings */
                        enable_warnings?: (boolean|null);

                        /** AddOfflineUserDataJobOperationsRequest operations */
                        operations?: (google.ads.googleads.v23.services.IOfflineUserDataJobOperation[]|null);

                        /** AddOfflineUserDataJobOperationsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents an AddOfflineUserDataJobOperationsRequest. */
                    class AddOfflineUserDataJobOperationsRequest implements IAddOfflineUserDataJobOperationsRequest {

                        /**
                         * Constructs a new AddOfflineUserDataJobOperationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsRequest);

                        /** AddOfflineUserDataJobOperationsRequest resource_name. */
                        public resource_name: string;

                        /** AddOfflineUserDataJobOperationsRequest enable_partial_failure. */
                        public enable_partial_failure?: (boolean|null);

                        /** AddOfflineUserDataJobOperationsRequest enable_warnings. */
                        public enable_warnings?: (boolean|null);

                        /** AddOfflineUserDataJobOperationsRequest operations. */
                        public operations: google.ads.googleads.v23.services.IOfflineUserDataJobOperation[];

                        /** AddOfflineUserDataJobOperationsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new AddOfflineUserDataJobOperationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddOfflineUserDataJobOperationsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsRequest): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsRequest;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsRequest.verify|verify} messages.
                         * @param message AddOfflineUserDataJobOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsRequest.verify|verify} messages.
                         * @param message AddOfflineUserDataJobOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddOfflineUserDataJobOperationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddOfflineUserDataJobOperationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsRequest;

                        /**
                         * Decodes an AddOfflineUserDataJobOperationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddOfflineUserDataJobOperationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsRequest;

                        /**
                         * Verifies an AddOfflineUserDataJobOperationsRequest message.
                         * @param message Plain 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 AddOfflineUserDataJobOperationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddOfflineUserDataJobOperationsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsRequest;

                        /**
                         * Creates a plain object from an AddOfflineUserDataJobOperationsRequest message. Also converts values to other types if specified.
                         * @param message AddOfflineUserDataJobOperationsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddOfflineUserDataJobOperationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddOfflineUserDataJobOperationsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OfflineUserDataJobOperation. */
                    interface IOfflineUserDataJobOperation {

                        /** OfflineUserDataJobOperation create */
                        create?: (google.ads.googleads.v23.common.IUserData|null);

                        /** OfflineUserDataJobOperation remove */
                        remove?: (google.ads.googleads.v23.common.IUserData|null);

                        /** OfflineUserDataJobOperation remove_all */
                        remove_all?: (boolean|null);
                    }

                    /** Represents an OfflineUserDataJobOperation. */
                    class OfflineUserDataJobOperation implements IOfflineUserDataJobOperation {

                        /**
                         * Constructs a new OfflineUserDataJobOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IOfflineUserDataJobOperation);

                        /** OfflineUserDataJobOperation create. */
                        public create?: (google.ads.googleads.v23.common.IUserData|null);

                        /** OfflineUserDataJobOperation remove. */
                        public remove?: (google.ads.googleads.v23.common.IUserData|null);

                        /** OfflineUserDataJobOperation remove_all. */
                        public remove_all?: (boolean|null);

                        /** OfflineUserDataJobOperation operation. */
                        public operation?: ("create"|"remove"|"remove_all");

                        /**
                         * Creates a new OfflineUserDataJobOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserDataJobOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IOfflineUserDataJobOperation): google.ads.googleads.v23.services.OfflineUserDataJobOperation;

                        /**
                         * Encodes the specified OfflineUserDataJobOperation message. Does not implicitly {@link google.ads.googleads.v23.services.OfflineUserDataJobOperation.verify|verify} messages.
                         * @param message OfflineUserDataJobOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IOfflineUserDataJobOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.OfflineUserDataJobOperation.verify|verify} messages.
                         * @param message OfflineUserDataJobOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IOfflineUserDataJobOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OfflineUserDataJobOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.OfflineUserDataJobOperation;

                        /**
                         * Decodes an OfflineUserDataJobOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OfflineUserDataJobOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.OfflineUserDataJobOperation;

                        /**
                         * Verifies an OfflineUserDataJobOperation message.
                         * @param message Plain 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 OfflineUserDataJobOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OfflineUserDataJobOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.OfflineUserDataJobOperation;

                        /**
                         * Creates a plain object from an OfflineUserDataJobOperation message. Also converts values to other types if specified.
                         * @param message OfflineUserDataJobOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.OfflineUserDataJobOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OfflineUserDataJobOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddOfflineUserDataJobOperationsResponse. */
                    interface IAddOfflineUserDataJobOperationsResponse {

                        /** AddOfflineUserDataJobOperationsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** AddOfflineUserDataJobOperationsResponse warning */
                        warning?: (google.rpc.IStatus|null);
                    }

                    /** Represents an AddOfflineUserDataJobOperationsResponse. */
                    class AddOfflineUserDataJobOperationsResponse implements IAddOfflineUserDataJobOperationsResponse {

                        /**
                         * Constructs a new AddOfflineUserDataJobOperationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsResponse);

                        /** AddOfflineUserDataJobOperationsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** AddOfflineUserDataJobOperationsResponse warning. */
                        public warning?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new AddOfflineUserDataJobOperationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddOfflineUserDataJobOperationsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsResponse): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse.verify|verify} messages.
                         * @param message AddOfflineUserDataJobOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse.verify|verify} messages.
                         * @param message AddOfflineUserDataJobOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAddOfflineUserDataJobOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddOfflineUserDataJobOperationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddOfflineUserDataJobOperationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse;

                        /**
                         * Decodes an AddOfflineUserDataJobOperationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddOfflineUserDataJobOperationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse;

                        /**
                         * Verifies an AddOfflineUserDataJobOperationsResponse message.
                         * @param message Plain 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 AddOfflineUserDataJobOperationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddOfflineUserDataJobOperationsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse;

                        /**
                         * Creates a plain object from an AddOfflineUserDataJobOperationsResponse message. Also converts values to other types if specified.
                         * @param message AddOfflineUserDataJobOperationsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AddOfflineUserDataJobOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddOfflineUserDataJobOperationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddOfflineUserDataJobOperationsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a PaymentsAccountService */
                    class PaymentsAccountService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new PaymentsAccountService 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 PaymentsAccountService 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): PaymentsAccountService;

                        /**
                         * Calls ListPaymentsAccounts.
                         * @param request ListPaymentsAccountsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListPaymentsAccountsResponse
                         */
                        public listPaymentsAccounts(request: google.ads.googleads.v23.services.IListPaymentsAccountsRequest, callback: google.ads.googleads.v23.services.PaymentsAccountService.ListPaymentsAccountsCallback): void;

                        /**
                         * Calls ListPaymentsAccounts.
                         * @param request ListPaymentsAccountsRequest message or plain object
                         * @returns Promise
                         */
                        public listPaymentsAccounts(request: google.ads.googleads.v23.services.IListPaymentsAccountsRequest): Promise<google.ads.googleads.v23.services.ListPaymentsAccountsResponse>;
                    }

                    namespace PaymentsAccountService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.PaymentsAccountService|listPaymentsAccounts}.
                         * @param error Error, if any
                         * @param [response] ListPaymentsAccountsResponse
                         */
                        type ListPaymentsAccountsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListPaymentsAccountsResponse) => void;
                    }

                    /** Properties of a ListPaymentsAccountsRequest. */
                    interface IListPaymentsAccountsRequest {

                        /** ListPaymentsAccountsRequest customer_id */
                        customer_id?: (string|null);
                    }

                    /** Represents a ListPaymentsAccountsRequest. */
                    class ListPaymentsAccountsRequest implements IListPaymentsAccountsRequest {

                        /**
                         * Constructs a new ListPaymentsAccountsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPaymentsAccountsRequest);

                        /** ListPaymentsAccountsRequest customer_id. */
                        public customer_id: string;

                        /**
                         * Creates a new ListPaymentsAccountsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPaymentsAccountsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPaymentsAccountsRequest): google.ads.googleads.v23.services.ListPaymentsAccountsRequest;

                        /**
                         * Encodes the specified ListPaymentsAccountsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListPaymentsAccountsRequest.verify|verify} messages.
                         * @param message ListPaymentsAccountsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPaymentsAccountsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPaymentsAccountsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPaymentsAccountsRequest.verify|verify} messages.
                         * @param message ListPaymentsAccountsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPaymentsAccountsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPaymentsAccountsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPaymentsAccountsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPaymentsAccountsRequest;

                        /**
                         * Decodes a ListPaymentsAccountsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPaymentsAccountsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPaymentsAccountsRequest;

                        /**
                         * Verifies a ListPaymentsAccountsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPaymentsAccountsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPaymentsAccountsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPaymentsAccountsRequest;

                        /**
                         * Creates a plain object from a ListPaymentsAccountsRequest message. Also converts values to other types if specified.
                         * @param message ListPaymentsAccountsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPaymentsAccountsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPaymentsAccountsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPaymentsAccountsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPaymentsAccountsResponse. */
                    interface IListPaymentsAccountsResponse {

                        /** ListPaymentsAccountsResponse payments_accounts */
                        payments_accounts?: (google.ads.googleads.v23.resources.IPaymentsAccount[]|null);
                    }

                    /** Represents a ListPaymentsAccountsResponse. */
                    class ListPaymentsAccountsResponse implements IListPaymentsAccountsResponse {

                        /**
                         * Constructs a new ListPaymentsAccountsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPaymentsAccountsResponse);

                        /** ListPaymentsAccountsResponse payments_accounts. */
                        public payments_accounts: google.ads.googleads.v23.resources.IPaymentsAccount[];

                        /**
                         * Creates a new ListPaymentsAccountsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPaymentsAccountsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPaymentsAccountsResponse): google.ads.googleads.v23.services.ListPaymentsAccountsResponse;

                        /**
                         * Encodes the specified ListPaymentsAccountsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListPaymentsAccountsResponse.verify|verify} messages.
                         * @param message ListPaymentsAccountsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPaymentsAccountsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPaymentsAccountsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPaymentsAccountsResponse.verify|verify} messages.
                         * @param message ListPaymentsAccountsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPaymentsAccountsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPaymentsAccountsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPaymentsAccountsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPaymentsAccountsResponse;

                        /**
                         * Decodes a ListPaymentsAccountsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPaymentsAccountsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPaymentsAccountsResponse;

                        /**
                         * Verifies a ListPaymentsAccountsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPaymentsAccountsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPaymentsAccountsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPaymentsAccountsResponse;

                        /**
                         * Creates a plain object from a ListPaymentsAccountsResponse message. Also converts values to other types if specified.
                         * @param message ListPaymentsAccountsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPaymentsAccountsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPaymentsAccountsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPaymentsAccountsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ProductLinkInvitationService */
                    class ProductLinkInvitationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ProductLinkInvitationService 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 ProductLinkInvitationService 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): ProductLinkInvitationService;

                        /**
                         * Calls CreateProductLinkInvitation.
                         * @param request CreateProductLinkInvitationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateProductLinkInvitationResponse
                         */
                        public createProductLinkInvitation(request: google.ads.googleads.v23.services.ICreateProductLinkInvitationRequest, callback: google.ads.googleads.v23.services.ProductLinkInvitationService.CreateProductLinkInvitationCallback): void;

                        /**
                         * Calls CreateProductLinkInvitation.
                         * @param request CreateProductLinkInvitationRequest message or plain object
                         * @returns Promise
                         */
                        public createProductLinkInvitation(request: google.ads.googleads.v23.services.ICreateProductLinkInvitationRequest): Promise<google.ads.googleads.v23.services.CreateProductLinkInvitationResponse>;

                        /**
                         * Calls UpdateProductLinkInvitation.
                         * @param request UpdateProductLinkInvitationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateProductLinkInvitationResponse
                         */
                        public updateProductLinkInvitation(request: google.ads.googleads.v23.services.IUpdateProductLinkInvitationRequest, callback: google.ads.googleads.v23.services.ProductLinkInvitationService.UpdateProductLinkInvitationCallback): void;

                        /**
                         * Calls UpdateProductLinkInvitation.
                         * @param request UpdateProductLinkInvitationRequest message or plain object
                         * @returns Promise
                         */
                        public updateProductLinkInvitation(request: google.ads.googleads.v23.services.IUpdateProductLinkInvitationRequest): Promise<google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse>;

                        /**
                         * Calls RemoveProductLinkInvitation.
                         * @param request RemoveProductLinkInvitationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RemoveProductLinkInvitationResponse
                         */
                        public removeProductLinkInvitation(request: google.ads.googleads.v23.services.IRemoveProductLinkInvitationRequest, callback: google.ads.googleads.v23.services.ProductLinkInvitationService.RemoveProductLinkInvitationCallback): void;

                        /**
                         * Calls RemoveProductLinkInvitation.
                         * @param request RemoveProductLinkInvitationRequest message or plain object
                         * @returns Promise
                         */
                        public removeProductLinkInvitation(request: google.ads.googleads.v23.services.IRemoveProductLinkInvitationRequest): Promise<google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse>;
                    }

                    namespace ProductLinkInvitationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ProductLinkInvitationService|createProductLinkInvitation}.
                         * @param error Error, if any
                         * @param [response] CreateProductLinkInvitationResponse
                         */
                        type CreateProductLinkInvitationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.CreateProductLinkInvitationResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ProductLinkInvitationService|updateProductLinkInvitation}.
                         * @param error Error, if any
                         * @param [response] UpdateProductLinkInvitationResponse
                         */
                        type UpdateProductLinkInvitationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ProductLinkInvitationService|removeProductLinkInvitation}.
                         * @param error Error, if any
                         * @param [response] RemoveProductLinkInvitationResponse
                         */
                        type RemoveProductLinkInvitationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse) => void;
                    }

                    /** Properties of a CreateProductLinkInvitationRequest. */
                    interface ICreateProductLinkInvitationRequest {

                        /** CreateProductLinkInvitationRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateProductLinkInvitationRequest product_link_invitation */
                        product_link_invitation?: (google.ads.googleads.v23.resources.IProductLinkInvitation|null);
                    }

                    /** Represents a CreateProductLinkInvitationRequest. */
                    class CreateProductLinkInvitationRequest implements ICreateProductLinkInvitationRequest {

                        /**
                         * Constructs a new CreateProductLinkInvitationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateProductLinkInvitationRequest);

                        /** CreateProductLinkInvitationRequest customer_id. */
                        public customer_id: string;

                        /** CreateProductLinkInvitationRequest product_link_invitation. */
                        public product_link_invitation?: (google.ads.googleads.v23.resources.IProductLinkInvitation|null);

                        /**
                         * Creates a new CreateProductLinkInvitationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateProductLinkInvitationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateProductLinkInvitationRequest): google.ads.googleads.v23.services.CreateProductLinkInvitationRequest;

                        /**
                         * Encodes the specified CreateProductLinkInvitationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkInvitationRequest.verify|verify} messages.
                         * @param message CreateProductLinkInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateProductLinkInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateProductLinkInvitationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkInvitationRequest.verify|verify} messages.
                         * @param message CreateProductLinkInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateProductLinkInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateProductLinkInvitationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateProductLinkInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateProductLinkInvitationRequest;

                        /**
                         * Decodes a CreateProductLinkInvitationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateProductLinkInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateProductLinkInvitationRequest;

                        /**
                         * Verifies a CreateProductLinkInvitationRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateProductLinkInvitationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateProductLinkInvitationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateProductLinkInvitationRequest;

                        /**
                         * Creates a plain object from a CreateProductLinkInvitationRequest message. Also converts values to other types if specified.
                         * @param message CreateProductLinkInvitationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateProductLinkInvitationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateProductLinkInvitationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateProductLinkInvitationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateProductLinkInvitationResponse. */
                    interface ICreateProductLinkInvitationResponse {

                        /** CreateProductLinkInvitationResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a CreateProductLinkInvitationResponse. */
                    class CreateProductLinkInvitationResponse implements ICreateProductLinkInvitationResponse {

                        /**
                         * Constructs a new CreateProductLinkInvitationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateProductLinkInvitationResponse);

                        /** CreateProductLinkInvitationResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new CreateProductLinkInvitationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateProductLinkInvitationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateProductLinkInvitationResponse): google.ads.googleads.v23.services.CreateProductLinkInvitationResponse;

                        /**
                         * Encodes the specified CreateProductLinkInvitationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkInvitationResponse.verify|verify} messages.
                         * @param message CreateProductLinkInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateProductLinkInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateProductLinkInvitationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkInvitationResponse.verify|verify} messages.
                         * @param message CreateProductLinkInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateProductLinkInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateProductLinkInvitationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateProductLinkInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateProductLinkInvitationResponse;

                        /**
                         * Decodes a CreateProductLinkInvitationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateProductLinkInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateProductLinkInvitationResponse;

                        /**
                         * Verifies a CreateProductLinkInvitationResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateProductLinkInvitationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateProductLinkInvitationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateProductLinkInvitationResponse;

                        /**
                         * Creates a plain object from a CreateProductLinkInvitationResponse message. Also converts values to other types if specified.
                         * @param message CreateProductLinkInvitationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateProductLinkInvitationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateProductLinkInvitationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateProductLinkInvitationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateProductLinkInvitationRequest. */
                    interface IUpdateProductLinkInvitationRequest {

                        /** UpdateProductLinkInvitationRequest customer_id */
                        customer_id?: (string|null);

                        /** UpdateProductLinkInvitationRequest product_link_invitation_status */
                        product_link_invitation_status?: (google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus|keyof typeof google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus|null);

                        /** UpdateProductLinkInvitationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an UpdateProductLinkInvitationRequest. */
                    class UpdateProductLinkInvitationRequest implements IUpdateProductLinkInvitationRequest {

                        /**
                         * Constructs a new UpdateProductLinkInvitationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUpdateProductLinkInvitationRequest);

                        /** UpdateProductLinkInvitationRequest customer_id. */
                        public customer_id: string;

                        /** UpdateProductLinkInvitationRequest product_link_invitation_status. */
                        public product_link_invitation_status: (google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus|keyof typeof google.ads.googleads.v23.enums.ProductLinkInvitationStatusEnum.ProductLinkInvitationStatus);

                        /** UpdateProductLinkInvitationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new UpdateProductLinkInvitationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateProductLinkInvitationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUpdateProductLinkInvitationRequest): google.ads.googleads.v23.services.UpdateProductLinkInvitationRequest;

                        /**
                         * Encodes the specified UpdateProductLinkInvitationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.UpdateProductLinkInvitationRequest.verify|verify} messages.
                         * @param message UpdateProductLinkInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUpdateProductLinkInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateProductLinkInvitationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UpdateProductLinkInvitationRequest.verify|verify} messages.
                         * @param message UpdateProductLinkInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUpdateProductLinkInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateProductLinkInvitationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateProductLinkInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UpdateProductLinkInvitationRequest;

                        /**
                         * Decodes an UpdateProductLinkInvitationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateProductLinkInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UpdateProductLinkInvitationRequest;

                        /**
                         * Verifies an UpdateProductLinkInvitationRequest message.
                         * @param message Plain 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 UpdateProductLinkInvitationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateProductLinkInvitationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UpdateProductLinkInvitationRequest;

                        /**
                         * Creates a plain object from an UpdateProductLinkInvitationRequest message. Also converts values to other types if specified.
                         * @param message UpdateProductLinkInvitationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UpdateProductLinkInvitationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateProductLinkInvitationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateProductLinkInvitationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateProductLinkInvitationResponse. */
                    interface IUpdateProductLinkInvitationResponse {

                        /** UpdateProductLinkInvitationResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an UpdateProductLinkInvitationResponse. */
                    class UpdateProductLinkInvitationResponse implements IUpdateProductLinkInvitationResponse {

                        /**
                         * Constructs a new UpdateProductLinkInvitationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUpdateProductLinkInvitationResponse);

                        /** UpdateProductLinkInvitationResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new UpdateProductLinkInvitationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateProductLinkInvitationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUpdateProductLinkInvitationResponse): google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse;

                        /**
                         * Encodes the specified UpdateProductLinkInvitationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse.verify|verify} messages.
                         * @param message UpdateProductLinkInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUpdateProductLinkInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateProductLinkInvitationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse.verify|verify} messages.
                         * @param message UpdateProductLinkInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUpdateProductLinkInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateProductLinkInvitationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateProductLinkInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse;

                        /**
                         * Decodes an UpdateProductLinkInvitationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateProductLinkInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse;

                        /**
                         * Verifies an UpdateProductLinkInvitationResponse message.
                         * @param message Plain 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 UpdateProductLinkInvitationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateProductLinkInvitationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse;

                        /**
                         * Creates a plain object from an UpdateProductLinkInvitationResponse message. Also converts values to other types if specified.
                         * @param message UpdateProductLinkInvitationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UpdateProductLinkInvitationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateProductLinkInvitationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateProductLinkInvitationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveProductLinkInvitationRequest. */
                    interface IRemoveProductLinkInvitationRequest {

                        /** RemoveProductLinkInvitationRequest customer_id */
                        customer_id?: (string|null);

                        /** RemoveProductLinkInvitationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a RemoveProductLinkInvitationRequest. */
                    class RemoveProductLinkInvitationRequest implements IRemoveProductLinkInvitationRequest {

                        /**
                         * Constructs a new RemoveProductLinkInvitationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveProductLinkInvitationRequest);

                        /** RemoveProductLinkInvitationRequest customer_id. */
                        public customer_id: string;

                        /** RemoveProductLinkInvitationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new RemoveProductLinkInvitationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveProductLinkInvitationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveProductLinkInvitationRequest): google.ads.googleads.v23.services.RemoveProductLinkInvitationRequest;

                        /**
                         * Encodes the specified RemoveProductLinkInvitationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkInvitationRequest.verify|verify} messages.
                         * @param message RemoveProductLinkInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveProductLinkInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveProductLinkInvitationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkInvitationRequest.verify|verify} messages.
                         * @param message RemoveProductLinkInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveProductLinkInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveProductLinkInvitationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveProductLinkInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveProductLinkInvitationRequest;

                        /**
                         * Decodes a RemoveProductLinkInvitationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveProductLinkInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveProductLinkInvitationRequest;

                        /**
                         * Verifies a RemoveProductLinkInvitationRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveProductLinkInvitationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveProductLinkInvitationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveProductLinkInvitationRequest;

                        /**
                         * Creates a plain object from a RemoveProductLinkInvitationRequest message. Also converts values to other types if specified.
                         * @param message RemoveProductLinkInvitationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveProductLinkInvitationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveProductLinkInvitationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveProductLinkInvitationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveProductLinkInvitationResponse. */
                    interface IRemoveProductLinkInvitationResponse {

                        /** RemoveProductLinkInvitationResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a RemoveProductLinkInvitationResponse. */
                    class RemoveProductLinkInvitationResponse implements IRemoveProductLinkInvitationResponse {

                        /**
                         * Constructs a new RemoveProductLinkInvitationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveProductLinkInvitationResponse);

                        /** RemoveProductLinkInvitationResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new RemoveProductLinkInvitationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveProductLinkInvitationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveProductLinkInvitationResponse): google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse;

                        /**
                         * Encodes the specified RemoveProductLinkInvitationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse.verify|verify} messages.
                         * @param message RemoveProductLinkInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveProductLinkInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveProductLinkInvitationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse.verify|verify} messages.
                         * @param message RemoveProductLinkInvitationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveProductLinkInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveProductLinkInvitationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveProductLinkInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse;

                        /**
                         * Decodes a RemoveProductLinkInvitationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveProductLinkInvitationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse;

                        /**
                         * Verifies a RemoveProductLinkInvitationResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveProductLinkInvitationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveProductLinkInvitationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse;

                        /**
                         * Creates a plain object from a RemoveProductLinkInvitationResponse message. Also converts values to other types if specified.
                         * @param message RemoveProductLinkInvitationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveProductLinkInvitationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveProductLinkInvitationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveProductLinkInvitationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ProductLinkService */
                    class ProductLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ProductLinkService 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 ProductLinkService 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): ProductLinkService;

                        /**
                         * Calls CreateProductLink.
                         * @param request CreateProductLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateProductLinkResponse
                         */
                        public createProductLink(request: google.ads.googleads.v23.services.ICreateProductLinkRequest, callback: google.ads.googleads.v23.services.ProductLinkService.CreateProductLinkCallback): void;

                        /**
                         * Calls CreateProductLink.
                         * @param request CreateProductLinkRequest message or plain object
                         * @returns Promise
                         */
                        public createProductLink(request: google.ads.googleads.v23.services.ICreateProductLinkRequest): Promise<google.ads.googleads.v23.services.CreateProductLinkResponse>;

                        /**
                         * Calls RemoveProductLink.
                         * @param request RemoveProductLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RemoveProductLinkResponse
                         */
                        public removeProductLink(request: google.ads.googleads.v23.services.IRemoveProductLinkRequest, callback: google.ads.googleads.v23.services.ProductLinkService.RemoveProductLinkCallback): void;

                        /**
                         * Calls RemoveProductLink.
                         * @param request RemoveProductLinkRequest message or plain object
                         * @returns Promise
                         */
                        public removeProductLink(request: google.ads.googleads.v23.services.IRemoveProductLinkRequest): Promise<google.ads.googleads.v23.services.RemoveProductLinkResponse>;
                    }

                    namespace ProductLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ProductLinkService|createProductLink}.
                         * @param error Error, if any
                         * @param [response] CreateProductLinkResponse
                         */
                        type CreateProductLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.CreateProductLinkResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ProductLinkService|removeProductLink}.
                         * @param error Error, if any
                         * @param [response] RemoveProductLinkResponse
                         */
                        type RemoveProductLinkCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.RemoveProductLinkResponse) => void;
                    }

                    /** Properties of a CreateProductLinkRequest. */
                    interface ICreateProductLinkRequest {

                        /** CreateProductLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateProductLinkRequest product_link */
                        product_link?: (google.ads.googleads.v23.resources.IProductLink|null);
                    }

                    /** Represents a CreateProductLinkRequest. */
                    class CreateProductLinkRequest implements ICreateProductLinkRequest {

                        /**
                         * Constructs a new CreateProductLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateProductLinkRequest);

                        /** CreateProductLinkRequest customer_id. */
                        public customer_id: string;

                        /** CreateProductLinkRequest product_link. */
                        public product_link?: (google.ads.googleads.v23.resources.IProductLink|null);

                        /**
                         * Creates a new CreateProductLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateProductLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateProductLinkRequest): google.ads.googleads.v23.services.CreateProductLinkRequest;

                        /**
                         * Encodes the specified CreateProductLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkRequest.verify|verify} messages.
                         * @param message CreateProductLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateProductLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateProductLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkRequest.verify|verify} messages.
                         * @param message CreateProductLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateProductLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateProductLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateProductLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateProductLinkRequest;

                        /**
                         * Decodes a CreateProductLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateProductLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateProductLinkRequest;

                        /**
                         * Verifies a CreateProductLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateProductLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateProductLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateProductLinkRequest;

                        /**
                         * Creates a plain object from a CreateProductLinkRequest message. Also converts values to other types if specified.
                         * @param message CreateProductLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateProductLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateProductLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateProductLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateProductLinkResponse. */
                    interface ICreateProductLinkResponse {

                        /** CreateProductLinkResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a CreateProductLinkResponse. */
                    class CreateProductLinkResponse implements ICreateProductLinkResponse {

                        /**
                         * Constructs a new CreateProductLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICreateProductLinkResponse);

                        /** CreateProductLinkResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new CreateProductLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateProductLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICreateProductLinkResponse): google.ads.googleads.v23.services.CreateProductLinkResponse;

                        /**
                         * Encodes the specified CreateProductLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkResponse.verify|verify} messages.
                         * @param message CreateProductLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICreateProductLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateProductLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CreateProductLinkResponse.verify|verify} messages.
                         * @param message CreateProductLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICreateProductLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateProductLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateProductLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CreateProductLinkResponse;

                        /**
                         * Decodes a CreateProductLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateProductLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CreateProductLinkResponse;

                        /**
                         * Verifies a CreateProductLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateProductLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateProductLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CreateProductLinkResponse;

                        /**
                         * Creates a plain object from a CreateProductLinkResponse message. Also converts values to other types if specified.
                         * @param message CreateProductLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CreateProductLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateProductLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateProductLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveProductLinkRequest. */
                    interface IRemoveProductLinkRequest {

                        /** RemoveProductLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** RemoveProductLinkRequest resource_name */
                        resource_name?: (string|null);

                        /** RemoveProductLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a RemoveProductLinkRequest. */
                    class RemoveProductLinkRequest implements IRemoveProductLinkRequest {

                        /**
                         * Constructs a new RemoveProductLinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveProductLinkRequest);

                        /** RemoveProductLinkRequest customer_id. */
                        public customer_id: string;

                        /** RemoveProductLinkRequest resource_name. */
                        public resource_name: string;

                        /** RemoveProductLinkRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new RemoveProductLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveProductLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveProductLinkRequest): google.ads.googleads.v23.services.RemoveProductLinkRequest;

                        /**
                         * Encodes the specified RemoveProductLinkRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkRequest.verify|verify} messages.
                         * @param message RemoveProductLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveProductLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveProductLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkRequest.verify|verify} messages.
                         * @param message RemoveProductLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveProductLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveProductLinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveProductLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveProductLinkRequest;

                        /**
                         * Decodes a RemoveProductLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveProductLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveProductLinkRequest;

                        /**
                         * Verifies a RemoveProductLinkRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveProductLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveProductLinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveProductLinkRequest;

                        /**
                         * Creates a plain object from a RemoveProductLinkRequest message. Also converts values to other types if specified.
                         * @param message RemoveProductLinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveProductLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveProductLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveProductLinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveProductLinkResponse. */
                    interface IRemoveProductLinkResponse {

                        /** RemoveProductLinkResponse resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a RemoveProductLinkResponse. */
                    class RemoveProductLinkResponse implements IRemoveProductLinkResponse {

                        /**
                         * Constructs a new RemoveProductLinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRemoveProductLinkResponse);

                        /** RemoveProductLinkResponse resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new RemoveProductLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveProductLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRemoveProductLinkResponse): google.ads.googleads.v23.services.RemoveProductLinkResponse;

                        /**
                         * Encodes the specified RemoveProductLinkResponse message. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkResponse.verify|verify} messages.
                         * @param message RemoveProductLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRemoveProductLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveProductLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RemoveProductLinkResponse.verify|verify} messages.
                         * @param message RemoveProductLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRemoveProductLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveProductLinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveProductLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RemoveProductLinkResponse;

                        /**
                         * Decodes a RemoveProductLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveProductLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RemoveProductLinkResponse;

                        /**
                         * Verifies a RemoveProductLinkResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemoveProductLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveProductLinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RemoveProductLinkResponse;

                        /**
                         * Creates a plain object from a RemoveProductLinkResponse message. Also converts values to other types if specified.
                         * @param message RemoveProductLinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RemoveProductLinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveProductLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveProductLinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ReachPlanService */
                    class ReachPlanService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ReachPlanService 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 ReachPlanService 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): ReachPlanService;

                        /**
                         * Calls GenerateConversionRates.
                         * @param request GenerateConversionRatesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateConversionRatesResponse
                         */
                        public generateConversionRates(request: google.ads.googleads.v23.services.IGenerateConversionRatesRequest, callback: google.ads.googleads.v23.services.ReachPlanService.GenerateConversionRatesCallback): void;

                        /**
                         * Calls GenerateConversionRates.
                         * @param request GenerateConversionRatesRequest message or plain object
                         * @returns Promise
                         */
                        public generateConversionRates(request: google.ads.googleads.v23.services.IGenerateConversionRatesRequest): Promise<google.ads.googleads.v23.services.GenerateConversionRatesResponse>;

                        /**
                         * Calls ListPlannableLocations.
                         * @param request ListPlannableLocationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListPlannableLocationsResponse
                         */
                        public listPlannableLocations(request: google.ads.googleads.v23.services.IListPlannableLocationsRequest, callback: google.ads.googleads.v23.services.ReachPlanService.ListPlannableLocationsCallback): void;

                        /**
                         * Calls ListPlannableLocations.
                         * @param request ListPlannableLocationsRequest message or plain object
                         * @returns Promise
                         */
                        public listPlannableLocations(request: google.ads.googleads.v23.services.IListPlannableLocationsRequest): Promise<google.ads.googleads.v23.services.ListPlannableLocationsResponse>;

                        /**
                         * Calls ListPlannableProducts.
                         * @param request ListPlannableProductsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListPlannableProductsResponse
                         */
                        public listPlannableProducts(request: google.ads.googleads.v23.services.IListPlannableProductsRequest, callback: google.ads.googleads.v23.services.ReachPlanService.ListPlannableProductsCallback): void;

                        /**
                         * Calls ListPlannableProducts.
                         * @param request ListPlannableProductsRequest message or plain object
                         * @returns Promise
                         */
                        public listPlannableProducts(request: google.ads.googleads.v23.services.IListPlannableProductsRequest): Promise<google.ads.googleads.v23.services.ListPlannableProductsResponse>;

                        /**
                         * Calls GenerateReachForecast.
                         * @param request GenerateReachForecastRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateReachForecastResponse
                         */
                        public generateReachForecast(request: google.ads.googleads.v23.services.IGenerateReachForecastRequest, callback: google.ads.googleads.v23.services.ReachPlanService.GenerateReachForecastCallback): void;

                        /**
                         * Calls GenerateReachForecast.
                         * @param request GenerateReachForecastRequest message or plain object
                         * @returns Promise
                         */
                        public generateReachForecast(request: google.ads.googleads.v23.services.IGenerateReachForecastRequest): Promise<google.ads.googleads.v23.services.GenerateReachForecastResponse>;

                        /**
                         * Calls ListPlannableUserLists.
                         * @param request ListPlannableUserListsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListPlannableUserListsResponse
                         */
                        public listPlannableUserLists(request: google.ads.googleads.v23.services.IListPlannableUserListsRequest, callback: google.ads.googleads.v23.services.ReachPlanService.ListPlannableUserListsCallback): void;

                        /**
                         * Calls ListPlannableUserLists.
                         * @param request ListPlannableUserListsRequest message or plain object
                         * @returns Promise
                         */
                        public listPlannableUserLists(request: google.ads.googleads.v23.services.IListPlannableUserListsRequest): Promise<google.ads.googleads.v23.services.ListPlannableUserListsResponse>;

                        /**
                         * Calls ListPlannableUserInterests.
                         * @param request ListPlannableUserInterestsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListPlannableUserInterestsResponse
                         */
                        public listPlannableUserInterests(request: google.ads.googleads.v23.services.IListPlannableUserInterestsRequest, callback: google.ads.googleads.v23.services.ReachPlanService.ListPlannableUserInterestsCallback): void;

                        /**
                         * Calls ListPlannableUserInterests.
                         * @param request ListPlannableUserInterestsRequest message or plain object
                         * @returns Promise
                         */
                        public listPlannableUserInterests(request: google.ads.googleads.v23.services.IListPlannableUserInterestsRequest): Promise<google.ads.googleads.v23.services.ListPlannableUserInterestsResponse>;
                    }

                    namespace ReachPlanService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ReachPlanService|generateConversionRates}.
                         * @param error Error, if any
                         * @param [response] GenerateConversionRatesResponse
                         */
                        type GenerateConversionRatesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateConversionRatesResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ReachPlanService|listPlannableLocations}.
                         * @param error Error, if any
                         * @param [response] ListPlannableLocationsResponse
                         */
                        type ListPlannableLocationsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListPlannableLocationsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ReachPlanService|listPlannableProducts}.
                         * @param error Error, if any
                         * @param [response] ListPlannableProductsResponse
                         */
                        type ListPlannableProductsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListPlannableProductsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ReachPlanService|generateReachForecast}.
                         * @param error Error, if any
                         * @param [response] GenerateReachForecastResponse
                         */
                        type GenerateReachForecastCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateReachForecastResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ReachPlanService|listPlannableUserLists}.
                         * @param error Error, if any
                         * @param [response] ListPlannableUserListsResponse
                         */
                        type ListPlannableUserListsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListPlannableUserListsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ReachPlanService|listPlannableUserInterests}.
                         * @param error Error, if any
                         * @param [response] ListPlannableUserInterestsResponse
                         */
                        type ListPlannableUserInterestsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ListPlannableUserInterestsResponse) => void;
                    }

                    /** Properties of a GenerateConversionRatesRequest. */
                    interface IGenerateConversionRatesRequest {

                        /** GenerateConversionRatesRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateConversionRatesRequest customer_reach_group */
                        customer_reach_group?: (string|null);

                        /** GenerateConversionRatesRequest reach_application_info */
                        reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateConversionRatesRequest. */
                    class GenerateConversionRatesRequest implements IGenerateConversionRatesRequest {

                        /**
                         * Constructs a new GenerateConversionRatesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateConversionRatesRequest);

                        /** GenerateConversionRatesRequest customer_id. */
                        public customer_id: string;

                        /** GenerateConversionRatesRequest customer_reach_group. */
                        public customer_reach_group?: (string|null);

                        /** GenerateConversionRatesRequest reach_application_info. */
                        public reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateConversionRatesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateConversionRatesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateConversionRatesRequest): google.ads.googleads.v23.services.GenerateConversionRatesRequest;

                        /**
                         * Encodes the specified GenerateConversionRatesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateConversionRatesRequest.verify|verify} messages.
                         * @param message GenerateConversionRatesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateConversionRatesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateConversionRatesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateConversionRatesRequest.verify|verify} messages.
                         * @param message GenerateConversionRatesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateConversionRatesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateConversionRatesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateConversionRatesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateConversionRatesRequest;

                        /**
                         * Decodes a GenerateConversionRatesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateConversionRatesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateConversionRatesRequest;

                        /**
                         * Verifies a GenerateConversionRatesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateConversionRatesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateConversionRatesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateConversionRatesRequest;

                        /**
                         * Creates a plain object from a GenerateConversionRatesRequest message. Also converts values to other types if specified.
                         * @param message GenerateConversionRatesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateConversionRatesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateConversionRatesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateConversionRatesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateConversionRatesResponse. */
                    interface IGenerateConversionRatesResponse {

                        /** GenerateConversionRatesResponse conversion_rate_suggestions */
                        conversion_rate_suggestions?: (google.ads.googleads.v23.services.IConversionRateSuggestion[]|null);
                    }

                    /** Represents a GenerateConversionRatesResponse. */
                    class GenerateConversionRatesResponse implements IGenerateConversionRatesResponse {

                        /**
                         * Constructs a new GenerateConversionRatesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateConversionRatesResponse);

                        /** GenerateConversionRatesResponse conversion_rate_suggestions. */
                        public conversion_rate_suggestions: google.ads.googleads.v23.services.IConversionRateSuggestion[];

                        /**
                         * Creates a new GenerateConversionRatesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateConversionRatesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateConversionRatesResponse): google.ads.googleads.v23.services.GenerateConversionRatesResponse;

                        /**
                         * Encodes the specified GenerateConversionRatesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateConversionRatesResponse.verify|verify} messages.
                         * @param message GenerateConversionRatesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateConversionRatesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateConversionRatesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateConversionRatesResponse.verify|verify} messages.
                         * @param message GenerateConversionRatesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateConversionRatesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateConversionRatesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateConversionRatesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateConversionRatesResponse;

                        /**
                         * Decodes a GenerateConversionRatesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateConversionRatesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateConversionRatesResponse;

                        /**
                         * Verifies a GenerateConversionRatesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateConversionRatesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateConversionRatesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateConversionRatesResponse;

                        /**
                         * Creates a plain object from a GenerateConversionRatesResponse message. Also converts values to other types if specified.
                         * @param message GenerateConversionRatesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateConversionRatesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateConversionRatesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateConversionRatesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversionRateSuggestion. */
                    interface IConversionRateSuggestion {

                        /** ConversionRateSuggestion conversion_rate_model */
                        conversion_rate_model?: (google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum.ReachPlanConversionRateModel|keyof typeof google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum.ReachPlanConversionRateModel|null);

                        /** ConversionRateSuggestion plannable_product_code */
                        plannable_product_code?: (string|null);

                        /** ConversionRateSuggestion surface_targeting */
                        surface_targeting?: (google.ads.googleads.v23.services.ISurfaceTargeting|null);

                        /** ConversionRateSuggestion conversion_rate */
                        conversion_rate?: (number|null);
                    }

                    /** Represents a ConversionRateSuggestion. */
                    class ConversionRateSuggestion implements IConversionRateSuggestion {

                        /**
                         * Constructs a new ConversionRateSuggestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IConversionRateSuggestion);

                        /** ConversionRateSuggestion conversion_rate_model. */
                        public conversion_rate_model: (google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum.ReachPlanConversionRateModel|keyof typeof google.ads.googleads.v23.enums.ReachPlanConversionRateModelEnum.ReachPlanConversionRateModel);

                        /** ConversionRateSuggestion plannable_product_code. */
                        public plannable_product_code: string;

                        /** ConversionRateSuggestion surface_targeting. */
                        public surface_targeting?: (google.ads.googleads.v23.services.ISurfaceTargeting|null);

                        /** ConversionRateSuggestion conversion_rate. */
                        public conversion_rate: number;

                        /**
                         * Creates a new ConversionRateSuggestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionRateSuggestion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IConversionRateSuggestion): google.ads.googleads.v23.services.ConversionRateSuggestion;

                        /**
                         * Encodes the specified ConversionRateSuggestion message. Does not implicitly {@link google.ads.googleads.v23.services.ConversionRateSuggestion.verify|verify} messages.
                         * @param message ConversionRateSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IConversionRateSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionRateSuggestion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ConversionRateSuggestion.verify|verify} messages.
                         * @param message ConversionRateSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IConversionRateSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionRateSuggestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversionRateSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ConversionRateSuggestion;

                        /**
                         * Decodes a ConversionRateSuggestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversionRateSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ConversionRateSuggestion;

                        /**
                         * Verifies a ConversionRateSuggestion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionRateSuggestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversionRateSuggestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ConversionRateSuggestion;

                        /**
                         * Creates a plain object from a ConversionRateSuggestion message. Also converts values to other types if specified.
                         * @param message ConversionRateSuggestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ConversionRateSuggestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionRateSuggestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversionRateSuggestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableLocationsRequest. */
                    interface IListPlannableLocationsRequest {

                        /** ListPlannableLocationsRequest reach_application_info */
                        reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListPlannableLocationsRequest. */
                    class ListPlannableLocationsRequest implements IListPlannableLocationsRequest {

                        /**
                         * Constructs a new ListPlannableLocationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableLocationsRequest);

                        /** ListPlannableLocationsRequest reach_application_info. */
                        public reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListPlannableLocationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableLocationsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableLocationsRequest): google.ads.googleads.v23.services.ListPlannableLocationsRequest;

                        /**
                         * Encodes the specified ListPlannableLocationsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableLocationsRequest.verify|verify} messages.
                         * @param message ListPlannableLocationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableLocationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableLocationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableLocationsRequest.verify|verify} messages.
                         * @param message ListPlannableLocationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableLocationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableLocationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableLocationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableLocationsRequest;

                        /**
                         * Decodes a ListPlannableLocationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableLocationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableLocationsRequest;

                        /**
                         * Verifies a ListPlannableLocationsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableLocationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableLocationsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableLocationsRequest;

                        /**
                         * Creates a plain object from a ListPlannableLocationsRequest message. Also converts values to other types if specified.
                         * @param message ListPlannableLocationsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableLocationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableLocationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableLocationsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableLocationsResponse. */
                    interface IListPlannableLocationsResponse {

                        /** ListPlannableLocationsResponse plannable_locations */
                        plannable_locations?: (google.ads.googleads.v23.services.IPlannableLocation[]|null);
                    }

                    /** Represents a ListPlannableLocationsResponse. */
                    class ListPlannableLocationsResponse implements IListPlannableLocationsResponse {

                        /**
                         * Constructs a new ListPlannableLocationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableLocationsResponse);

                        /** ListPlannableLocationsResponse plannable_locations. */
                        public plannable_locations: google.ads.googleads.v23.services.IPlannableLocation[];

                        /**
                         * Creates a new ListPlannableLocationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableLocationsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableLocationsResponse): google.ads.googleads.v23.services.ListPlannableLocationsResponse;

                        /**
                         * Encodes the specified ListPlannableLocationsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableLocationsResponse.verify|verify} messages.
                         * @param message ListPlannableLocationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableLocationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableLocationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableLocationsResponse.verify|verify} messages.
                         * @param message ListPlannableLocationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableLocationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableLocationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableLocationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableLocationsResponse;

                        /**
                         * Decodes a ListPlannableLocationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableLocationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableLocationsResponse;

                        /**
                         * Verifies a ListPlannableLocationsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableLocationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableLocationsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableLocationsResponse;

                        /**
                         * Creates a plain object from a ListPlannableLocationsResponse message. Also converts values to other types if specified.
                         * @param message ListPlannableLocationsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableLocationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableLocationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableLocationsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannableLocation. */
                    interface IPlannableLocation {

                        /** PlannableLocation id */
                        id?: (string|null);

                        /** PlannableLocation name */
                        name?: (string|null);

                        /** PlannableLocation parent_country_id */
                        parent_country_id?: (number|null);

                        /** PlannableLocation country_code */
                        country_code?: (string|null);

                        /** PlannableLocation location_type */
                        location_type?: (string|null);
                    }

                    /** Represents a PlannableLocation. */
                    class PlannableLocation implements IPlannableLocation {

                        /**
                         * Constructs a new PlannableLocation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannableLocation);

                        /** PlannableLocation id. */
                        public id?: (string|null);

                        /** PlannableLocation name. */
                        public name?: (string|null);

                        /** PlannableLocation parent_country_id. */
                        public parent_country_id?: (number|null);

                        /** PlannableLocation country_code. */
                        public country_code?: (string|null);

                        /** PlannableLocation location_type. */
                        public location_type?: (string|null);

                        /**
                         * Creates a new PlannableLocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannableLocation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannableLocation): google.ads.googleads.v23.services.PlannableLocation;

                        /**
                         * Encodes the specified PlannableLocation message. Does not implicitly {@link google.ads.googleads.v23.services.PlannableLocation.verify|verify} messages.
                         * @param message PlannableLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannableLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannableLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannableLocation.verify|verify} messages.
                         * @param message PlannableLocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannableLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannableLocation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannableLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannableLocation;

                        /**
                         * Decodes a PlannableLocation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannableLocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannableLocation;

                        /**
                         * Verifies a PlannableLocation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannableLocation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannableLocation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannableLocation;

                        /**
                         * Creates a plain object from a PlannableLocation message. Also converts values to other types if specified.
                         * @param message PlannableLocation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannableLocation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannableLocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannableLocation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableProductsRequest. */
                    interface IListPlannableProductsRequest {

                        /** ListPlannableProductsRequest plannable_location_id */
                        plannable_location_id?: (string|null);

                        /** ListPlannableProductsRequest reach_application_info */
                        reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListPlannableProductsRequest. */
                    class ListPlannableProductsRequest implements IListPlannableProductsRequest {

                        /**
                         * Constructs a new ListPlannableProductsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableProductsRequest);

                        /** ListPlannableProductsRequest plannable_location_id. */
                        public plannable_location_id: string;

                        /** ListPlannableProductsRequest reach_application_info. */
                        public reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListPlannableProductsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableProductsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableProductsRequest): google.ads.googleads.v23.services.ListPlannableProductsRequest;

                        /**
                         * Encodes the specified ListPlannableProductsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableProductsRequest.verify|verify} messages.
                         * @param message ListPlannableProductsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableProductsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableProductsRequest.verify|verify} messages.
                         * @param message ListPlannableProductsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableProductsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableProductsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableProductsRequest;

                        /**
                         * Decodes a ListPlannableProductsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableProductsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableProductsRequest;

                        /**
                         * Verifies a ListPlannableProductsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableProductsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableProductsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableProductsRequest;

                        /**
                         * Creates a plain object from a ListPlannableProductsRequest message. Also converts values to other types if specified.
                         * @param message ListPlannableProductsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableProductsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableProductsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableProductsResponse. */
                    interface IListPlannableProductsResponse {

                        /** ListPlannableProductsResponse product_metadata */
                        product_metadata?: (google.ads.googleads.v23.services.IProductMetadata[]|null);
                    }

                    /** Represents a ListPlannableProductsResponse. */
                    class ListPlannableProductsResponse implements IListPlannableProductsResponse {

                        /**
                         * Constructs a new ListPlannableProductsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableProductsResponse);

                        /** ListPlannableProductsResponse product_metadata. */
                        public product_metadata: google.ads.googleads.v23.services.IProductMetadata[];

                        /**
                         * Creates a new ListPlannableProductsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableProductsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableProductsResponse): google.ads.googleads.v23.services.ListPlannableProductsResponse;

                        /**
                         * Encodes the specified ListPlannableProductsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableProductsResponse.verify|verify} messages.
                         * @param message ListPlannableProductsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableProductsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableProductsResponse.verify|verify} messages.
                         * @param message ListPlannableProductsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableProductsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableProductsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableProductsResponse;

                        /**
                         * Decodes a ListPlannableProductsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableProductsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableProductsResponse;

                        /**
                         * Verifies a ListPlannableProductsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableProductsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableProductsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableProductsResponse;

                        /**
                         * Creates a plain object from a ListPlannableProductsResponse message. Also converts values to other types if specified.
                         * @param message ListPlannableProductsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableProductsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableProductsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProductMetadata. */
                    interface IProductMetadata {

                        /** ProductMetadata plannable_product_code */
                        plannable_product_code?: (string|null);

                        /** ProductMetadata plannable_product_name */
                        plannable_product_name?: (string|null);

                        /** ProductMetadata plannable_targeting */
                        plannable_targeting?: (google.ads.googleads.v23.services.IPlannableTargeting|null);
                    }

                    /** Represents a ProductMetadata. */
                    class ProductMetadata implements IProductMetadata {

                        /**
                         * Constructs a new ProductMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IProductMetadata);

                        /** ProductMetadata plannable_product_code. */
                        public plannable_product_code?: (string|null);

                        /** ProductMetadata plannable_product_name. */
                        public plannable_product_name: string;

                        /** ProductMetadata plannable_targeting. */
                        public plannable_targeting?: (google.ads.googleads.v23.services.IPlannableTargeting|null);

                        /**
                         * Creates a new ProductMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IProductMetadata): google.ads.googleads.v23.services.ProductMetadata;

                        /**
                         * Encodes the specified ProductMetadata message. Does not implicitly {@link google.ads.googleads.v23.services.ProductMetadata.verify|verify} messages.
                         * @param message ProductMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IProductMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ProductMetadata.verify|verify} messages.
                         * @param message ProductMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IProductMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ProductMetadata;

                        /**
                         * Decodes a ProductMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ProductMetadata;

                        /**
                         * Verifies a ProductMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ProductMetadata;

                        /**
                         * Creates a plain object from a ProductMetadata message. Also converts values to other types if specified.
                         * @param message ProductMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ProductMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableUserListsRequest. */
                    interface IListPlannableUserListsRequest {

                        /** ListPlannableUserListsRequest customer_id */
                        customer_id?: (string|null);

                        /** ListPlannableUserListsRequest customer_reach_group */
                        customer_reach_group?: (string|null);

                        /** ListPlannableUserListsRequest reach_application_info */
                        reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListPlannableUserListsRequest. */
                    class ListPlannableUserListsRequest implements IListPlannableUserListsRequest {

                        /**
                         * Constructs a new ListPlannableUserListsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableUserListsRequest);

                        /** ListPlannableUserListsRequest customer_id. */
                        public customer_id: string;

                        /** ListPlannableUserListsRequest customer_reach_group. */
                        public customer_reach_group?: (string|null);

                        /** ListPlannableUserListsRequest reach_application_info. */
                        public reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListPlannableUserListsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableUserListsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableUserListsRequest): google.ads.googleads.v23.services.ListPlannableUserListsRequest;

                        /**
                         * Encodes the specified ListPlannableUserListsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserListsRequest.verify|verify} messages.
                         * @param message ListPlannableUserListsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableUserListsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableUserListsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserListsRequest.verify|verify} messages.
                         * @param message ListPlannableUserListsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableUserListsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableUserListsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableUserListsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableUserListsRequest;

                        /**
                         * Decodes a ListPlannableUserListsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableUserListsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableUserListsRequest;

                        /**
                         * Verifies a ListPlannableUserListsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableUserListsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableUserListsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableUserListsRequest;

                        /**
                         * Creates a plain object from a ListPlannableUserListsRequest message. Also converts values to other types if specified.
                         * @param message ListPlannableUserListsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableUserListsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableUserListsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableUserListsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableUserListsResponse. */
                    interface IListPlannableUserListsResponse {

                        /** ListPlannableUserListsResponse plannable_user_lists */
                        plannable_user_lists?: (google.ads.googleads.v23.services.IPlannableUserList[]|null);
                    }

                    /** Represents a ListPlannableUserListsResponse. */
                    class ListPlannableUserListsResponse implements IListPlannableUserListsResponse {

                        /**
                         * Constructs a new ListPlannableUserListsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableUserListsResponse);

                        /** ListPlannableUserListsResponse plannable_user_lists. */
                        public plannable_user_lists: google.ads.googleads.v23.services.IPlannableUserList[];

                        /**
                         * Creates a new ListPlannableUserListsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableUserListsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableUserListsResponse): google.ads.googleads.v23.services.ListPlannableUserListsResponse;

                        /**
                         * Encodes the specified ListPlannableUserListsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserListsResponse.verify|verify} messages.
                         * @param message ListPlannableUserListsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableUserListsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableUserListsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserListsResponse.verify|verify} messages.
                         * @param message ListPlannableUserListsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableUserListsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableUserListsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableUserListsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableUserListsResponse;

                        /**
                         * Decodes a ListPlannableUserListsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableUserListsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableUserListsResponse;

                        /**
                         * Verifies a ListPlannableUserListsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableUserListsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableUserListsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableUserListsResponse;

                        /**
                         * Creates a plain object from a ListPlannableUserListsResponse message. Also converts values to other types if specified.
                         * @param message ListPlannableUserListsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableUserListsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableUserListsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableUserListsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannableUserList. */
                    interface IPlannableUserList {

                        /** PlannableUserList user_list_info */
                        user_list_info?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** PlannableUserList display_name */
                        display_name?: (string|null);

                        /** PlannableUserList user_list_type */
                        user_list_type?: (google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|null);

                        /** PlannableUserList plannable_status */
                        plannable_status?: (google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum.ReachPlanPlannableUserListStatus|keyof typeof google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum.ReachPlanPlannableUserListStatus|null);

                        /** PlannableUserList plannable_user_list_metadata */
                        plannable_user_list_metadata?: (google.ads.googleads.v23.services.IPlannableUserListMetadata|null);
                    }

                    /** Represents a PlannableUserList. */
                    class PlannableUserList implements IPlannableUserList {

                        /**
                         * Constructs a new PlannableUserList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannableUserList);

                        /** PlannableUserList user_list_info. */
                        public user_list_info?: (google.ads.googleads.v23.common.IUserListInfo|null);

                        /** PlannableUserList display_name. */
                        public display_name: string;

                        /** PlannableUserList user_list_type. */
                        public user_list_type: (google.ads.googleads.v23.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v23.enums.UserListTypeEnum.UserListType);

                        /** PlannableUserList plannable_status. */
                        public plannable_status: (google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum.ReachPlanPlannableUserListStatus|keyof typeof google.ads.googleads.v23.enums.ReachPlanPlannableUserListStatusEnum.ReachPlanPlannableUserListStatus);

                        /** PlannableUserList plannable_user_list_metadata. */
                        public plannable_user_list_metadata?: (google.ads.googleads.v23.services.IPlannableUserListMetadata|null);

                        /**
                         * Creates a new PlannableUserList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannableUserList instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannableUserList): google.ads.googleads.v23.services.PlannableUserList;

                        /**
                         * Encodes the specified PlannableUserList message. Does not implicitly {@link google.ads.googleads.v23.services.PlannableUserList.verify|verify} messages.
                         * @param message PlannableUserList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannableUserList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannableUserList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannableUserList.verify|verify} messages.
                         * @param message PlannableUserList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannableUserList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannableUserList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannableUserList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannableUserList;

                        /**
                         * Decodes a PlannableUserList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannableUserList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannableUserList;

                        /**
                         * Verifies a PlannableUserList message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannableUserList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannableUserList
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannableUserList;

                        /**
                         * Creates a plain object from a PlannableUserList message. Also converts values to other types if specified.
                         * @param message PlannableUserList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannableUserList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannableUserList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannableUserList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannableUserListMetadata. */
                    interface IPlannableUserListMetadata {

                        /** PlannableUserListMetadata user_list_crm_data_source_type */
                        user_list_crm_data_source_type?: (google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|keyof typeof google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|null);
                    }

                    /** Represents a PlannableUserListMetadata. */
                    class PlannableUserListMetadata implements IPlannableUserListMetadata {

                        /**
                         * Constructs a new PlannableUserListMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannableUserListMetadata);

                        /** PlannableUserListMetadata user_list_crm_data_source_type. */
                        public user_list_crm_data_source_type: (google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|keyof typeof google.ads.googleads.v23.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType);

                        /**
                         * Creates a new PlannableUserListMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannableUserListMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannableUserListMetadata): google.ads.googleads.v23.services.PlannableUserListMetadata;

                        /**
                         * Encodes the specified PlannableUserListMetadata message. Does not implicitly {@link google.ads.googleads.v23.services.PlannableUserListMetadata.verify|verify} messages.
                         * @param message PlannableUserListMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannableUserListMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannableUserListMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannableUserListMetadata.verify|verify} messages.
                         * @param message PlannableUserListMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannableUserListMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannableUserListMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannableUserListMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannableUserListMetadata;

                        /**
                         * Decodes a PlannableUserListMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannableUserListMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannableUserListMetadata;

                        /**
                         * Verifies a PlannableUserListMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannableUserListMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannableUserListMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannableUserListMetadata;

                        /**
                         * Creates a plain object from a PlannableUserListMetadata message. Also converts values to other types if specified.
                         * @param message PlannableUserListMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannableUserListMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannableUserListMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannableUserListMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannableTargeting. */
                    interface IPlannableTargeting {

                        /** PlannableTargeting age_ranges */
                        age_ranges?: (google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange[]|null);

                        /** PlannableTargeting genders */
                        genders?: (google.ads.googleads.v23.common.IGenderInfo[]|null);

                        /** PlannableTargeting devices */
                        devices?: (google.ads.googleads.v23.common.IDeviceInfo[]|null);

                        /** PlannableTargeting networks */
                        networks?: (google.ads.googleads.v23.enums.ReachPlanNetworkEnum.ReachPlanNetwork[]|null);

                        /** PlannableTargeting youtube_select_lineups */
                        youtube_select_lineups?: (google.ads.googleads.v23.services.IYouTubeSelectLineUp[]|null);

                        /** PlannableTargeting surface_targeting */
                        surface_targeting?: (google.ads.googleads.v23.services.ISurfaceTargetingCombinations|null);
                    }

                    /** Represents a PlannableTargeting. */
                    class PlannableTargeting implements IPlannableTargeting {

                        /**
                         * Constructs a new PlannableTargeting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannableTargeting);

                        /** PlannableTargeting age_ranges. */
                        public age_ranges: google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange[];

                        /** PlannableTargeting genders. */
                        public genders: google.ads.googleads.v23.common.IGenderInfo[];

                        /** PlannableTargeting devices. */
                        public devices: google.ads.googleads.v23.common.IDeviceInfo[];

                        /** PlannableTargeting networks. */
                        public networks: google.ads.googleads.v23.enums.ReachPlanNetworkEnum.ReachPlanNetwork[];

                        /** PlannableTargeting youtube_select_lineups. */
                        public youtube_select_lineups: google.ads.googleads.v23.services.IYouTubeSelectLineUp[];

                        /** PlannableTargeting surface_targeting. */
                        public surface_targeting?: (google.ads.googleads.v23.services.ISurfaceTargetingCombinations|null);

                        /**
                         * Creates a new PlannableTargeting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannableTargeting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannableTargeting): google.ads.googleads.v23.services.PlannableTargeting;

                        /**
                         * Encodes the specified PlannableTargeting message. Does not implicitly {@link google.ads.googleads.v23.services.PlannableTargeting.verify|verify} messages.
                         * @param message PlannableTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannableTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannableTargeting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannableTargeting.verify|verify} messages.
                         * @param message PlannableTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannableTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannableTargeting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannableTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannableTargeting;

                        /**
                         * Decodes a PlannableTargeting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannableTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannableTargeting;

                        /**
                         * Verifies a PlannableTargeting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannableTargeting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannableTargeting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannableTargeting;

                        /**
                         * Creates a plain object from a PlannableTargeting message. Also converts values to other types if specified.
                         * @param message PlannableTargeting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannableTargeting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannableTargeting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannableTargeting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableUserInterestsRequest. */
                    interface IListPlannableUserInterestsRequest {

                        /** ListPlannableUserInterestsRequest customer_id */
                        customer_id?: (string|null);

                        /** ListPlannableUserInterestsRequest user_interest_taxonomy_types */
                        user_interest_taxonomy_types?: (google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType[]|null);

                        /** ListPlannableUserInterestsRequest name_query */
                        name_query?: (string|null);

                        /** ListPlannableUserInterestsRequest path_query */
                        path_query?: (string|null);

                        /** ListPlannableUserInterestsRequest reach_application_info */
                        reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a ListPlannableUserInterestsRequest. */
                    class ListPlannableUserInterestsRequest implements IListPlannableUserInterestsRequest {

                        /**
                         * Constructs a new ListPlannableUserInterestsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableUserInterestsRequest);

                        /** ListPlannableUserInterestsRequest customer_id. */
                        public customer_id: string;

                        /** ListPlannableUserInterestsRequest user_interest_taxonomy_types. */
                        public user_interest_taxonomy_types: google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType[];

                        /** ListPlannableUserInterestsRequest name_query. */
                        public name_query?: (string|null);

                        /** ListPlannableUserInterestsRequest path_query. */
                        public path_query?: (string|null);

                        /** ListPlannableUserInterestsRequest reach_application_info. */
                        public reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new ListPlannableUserInterestsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableUserInterestsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableUserInterestsRequest): google.ads.googleads.v23.services.ListPlannableUserInterestsRequest;

                        /**
                         * Encodes the specified ListPlannableUserInterestsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserInterestsRequest.verify|verify} messages.
                         * @param message ListPlannableUserInterestsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableUserInterestsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableUserInterestsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserInterestsRequest.verify|verify} messages.
                         * @param message ListPlannableUserInterestsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableUserInterestsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableUserInterestsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableUserInterestsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableUserInterestsRequest;

                        /**
                         * Decodes a ListPlannableUserInterestsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableUserInterestsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableUserInterestsRequest;

                        /**
                         * Verifies a ListPlannableUserInterestsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableUserInterestsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableUserInterestsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableUserInterestsRequest;

                        /**
                         * Creates a plain object from a ListPlannableUserInterestsRequest message. Also converts values to other types if specified.
                         * @param message ListPlannableUserInterestsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableUserInterestsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableUserInterestsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableUserInterestsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListPlannableUserInterestsResponse. */
                    interface IListPlannableUserInterestsResponse {

                        /** ListPlannableUserInterestsResponse plannable_user_interests */
                        plannable_user_interests?: (google.ads.googleads.v23.services.IPlannableUserInterest[]|null);
                    }

                    /** Represents a ListPlannableUserInterestsResponse. */
                    class ListPlannableUserInterestsResponse implements IListPlannableUserInterestsResponse {

                        /**
                         * Constructs a new ListPlannableUserInterestsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IListPlannableUserInterestsResponse);

                        /** ListPlannableUserInterestsResponse plannable_user_interests. */
                        public plannable_user_interests: google.ads.googleads.v23.services.IPlannableUserInterest[];

                        /**
                         * Creates a new ListPlannableUserInterestsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableUserInterestsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IListPlannableUserInterestsResponse): google.ads.googleads.v23.services.ListPlannableUserInterestsResponse;

                        /**
                         * Encodes the specified ListPlannableUserInterestsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserInterestsResponse.verify|verify} messages.
                         * @param message ListPlannableUserInterestsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IListPlannableUserInterestsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableUserInterestsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ListPlannableUserInterestsResponse.verify|verify} messages.
                         * @param message ListPlannableUserInterestsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IListPlannableUserInterestsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableUserInterestsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListPlannableUserInterestsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ListPlannableUserInterestsResponse;

                        /**
                         * Decodes a ListPlannableUserInterestsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListPlannableUserInterestsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ListPlannableUserInterestsResponse;

                        /**
                         * Verifies a ListPlannableUserInterestsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableUserInterestsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListPlannableUserInterestsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ListPlannableUserInterestsResponse;

                        /**
                         * Creates a plain object from a ListPlannableUserInterestsResponse message. Also converts values to other types if specified.
                         * @param message ListPlannableUserInterestsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ListPlannableUserInterestsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableUserInterestsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListPlannableUserInterestsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannableUserInterest. */
                    interface IPlannableUserInterest {

                        /** PlannableUserInterest user_interest */
                        user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** PlannableUserInterest user_interest_type */
                        user_interest_type?: (google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|keyof typeof google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|null);

                        /** PlannableUserInterest user_interest_display_name */
                        user_interest_display_name?: (string|null);

                        /** PlannableUserInterest user_interest_path */
                        user_interest_path?: (string|null);
                    }

                    /** Represents a PlannableUserInterest. */
                    class PlannableUserInterest implements IPlannableUserInterest {

                        /**
                         * Constructs a new PlannableUserInterest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannableUserInterest);

                        /** PlannableUserInterest user_interest. */
                        public user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo|null);

                        /** PlannableUserInterest user_interest_type. */
                        public user_interest_type: (google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|keyof typeof google.ads.googleads.v23.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType);

                        /** PlannableUserInterest user_interest_display_name. */
                        public user_interest_display_name: string;

                        /** PlannableUserInterest user_interest_path. */
                        public user_interest_path: string;

                        /**
                         * Creates a new PlannableUserInterest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannableUserInterest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannableUserInterest): google.ads.googleads.v23.services.PlannableUserInterest;

                        /**
                         * Encodes the specified PlannableUserInterest message. Does not implicitly {@link google.ads.googleads.v23.services.PlannableUserInterest.verify|verify} messages.
                         * @param message PlannableUserInterest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannableUserInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannableUserInterest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannableUserInterest.verify|verify} messages.
                         * @param message PlannableUserInterest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannableUserInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannableUserInterest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannableUserInterest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannableUserInterest;

                        /**
                         * Decodes a PlannableUserInterest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannableUserInterest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannableUserInterest;

                        /**
                         * Verifies a PlannableUserInterest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannableUserInterest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannableUserInterest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannableUserInterest;

                        /**
                         * Creates a plain object from a PlannableUserInterest message. Also converts values to other types if specified.
                         * @param message PlannableUserInterest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannableUserInterest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannableUserInterest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannableUserInterest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateReachForecastRequest. */
                    interface IGenerateReachForecastRequest {

                        /** GenerateReachForecastRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateReachForecastRequest currency_code */
                        currency_code?: (string|null);

                        /** GenerateReachForecastRequest campaign_duration */
                        campaign_duration?: (google.ads.googleads.v23.services.ICampaignDuration|null);

                        /** GenerateReachForecastRequest cookie_frequency_cap */
                        cookie_frequency_cap?: (number|null);

                        /** GenerateReachForecastRequest cookie_frequency_cap_setting */
                        cookie_frequency_cap_setting?: (google.ads.googleads.v23.services.IFrequencyCap|null);

                        /** GenerateReachForecastRequest min_effective_frequency */
                        min_effective_frequency?: (number|null);

                        /** GenerateReachForecastRequest effective_frequency_limit */
                        effective_frequency_limit?: (google.ads.googleads.v23.services.IEffectiveFrequencyLimit|null);

                        /** GenerateReachForecastRequest targeting */
                        targeting?: (google.ads.googleads.v23.services.ITargeting|null);

                        /** GenerateReachForecastRequest planned_products */
                        planned_products?: (google.ads.googleads.v23.services.IPlannedProduct[]|null);

                        /** GenerateReachForecastRequest forecast_metric_options */
                        forecast_metric_options?: (google.ads.googleads.v23.services.IForecastMetricOptions|null);

                        /** GenerateReachForecastRequest customer_reach_group */
                        customer_reach_group?: (string|null);

                        /** GenerateReachForecastRequest reach_application_info */
                        reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);
                    }

                    /** Represents a GenerateReachForecastRequest. */
                    class GenerateReachForecastRequest implements IGenerateReachForecastRequest {

                        /**
                         * Constructs a new GenerateReachForecastRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateReachForecastRequest);

                        /** GenerateReachForecastRequest customer_id. */
                        public customer_id: string;

                        /** GenerateReachForecastRequest currency_code. */
                        public currency_code?: (string|null);

                        /** GenerateReachForecastRequest campaign_duration. */
                        public campaign_duration?: (google.ads.googleads.v23.services.ICampaignDuration|null);

                        /** GenerateReachForecastRequest cookie_frequency_cap. */
                        public cookie_frequency_cap?: (number|null);

                        /** GenerateReachForecastRequest cookie_frequency_cap_setting. */
                        public cookie_frequency_cap_setting?: (google.ads.googleads.v23.services.IFrequencyCap|null);

                        /** GenerateReachForecastRequest min_effective_frequency. */
                        public min_effective_frequency?: (number|null);

                        /** GenerateReachForecastRequest effective_frequency_limit. */
                        public effective_frequency_limit?: (google.ads.googleads.v23.services.IEffectiveFrequencyLimit|null);

                        /** GenerateReachForecastRequest targeting. */
                        public targeting?: (google.ads.googleads.v23.services.ITargeting|null);

                        /** GenerateReachForecastRequest planned_products. */
                        public planned_products: google.ads.googleads.v23.services.IPlannedProduct[];

                        /** GenerateReachForecastRequest forecast_metric_options. */
                        public forecast_metric_options?: (google.ads.googleads.v23.services.IForecastMetricOptions|null);

                        /** GenerateReachForecastRequest customer_reach_group. */
                        public customer_reach_group?: (string|null);

                        /** GenerateReachForecastRequest reach_application_info. */
                        public reach_application_info?: (google.ads.googleads.v23.common.IAdditionalApplicationInfo|null);

                        /**
                         * Creates a new GenerateReachForecastRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateReachForecastRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateReachForecastRequest): google.ads.googleads.v23.services.GenerateReachForecastRequest;

                        /**
                         * Encodes the specified GenerateReachForecastRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateReachForecastRequest.verify|verify} messages.
                         * @param message GenerateReachForecastRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateReachForecastRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateReachForecastRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateReachForecastRequest.verify|verify} messages.
                         * @param message GenerateReachForecastRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateReachForecastRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateReachForecastRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateReachForecastRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateReachForecastRequest;

                        /**
                         * Decodes a GenerateReachForecastRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateReachForecastRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateReachForecastRequest;

                        /**
                         * Verifies a GenerateReachForecastRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateReachForecastRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateReachForecastRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateReachForecastRequest;

                        /**
                         * Creates a plain object from a GenerateReachForecastRequest message. Also converts values to other types if specified.
                         * @param message GenerateReachForecastRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateReachForecastRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateReachForecastRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateReachForecastRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EffectiveFrequencyLimit. */
                    interface IEffectiveFrequencyLimit {

                        /** EffectiveFrequencyLimit effective_frequency_breakdown_limit */
                        effective_frequency_breakdown_limit?: (number|null);
                    }

                    /** Represents an EffectiveFrequencyLimit. */
                    class EffectiveFrequencyLimit implements IEffectiveFrequencyLimit {

                        /**
                         * Constructs a new EffectiveFrequencyLimit.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IEffectiveFrequencyLimit);

                        /** EffectiveFrequencyLimit effective_frequency_breakdown_limit. */
                        public effective_frequency_breakdown_limit: number;

                        /**
                         * Creates a new EffectiveFrequencyLimit instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EffectiveFrequencyLimit instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IEffectiveFrequencyLimit): google.ads.googleads.v23.services.EffectiveFrequencyLimit;

                        /**
                         * Encodes the specified EffectiveFrequencyLimit message. Does not implicitly {@link google.ads.googleads.v23.services.EffectiveFrequencyLimit.verify|verify} messages.
                         * @param message EffectiveFrequencyLimit message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IEffectiveFrequencyLimit, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EffectiveFrequencyLimit message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.EffectiveFrequencyLimit.verify|verify} messages.
                         * @param message EffectiveFrequencyLimit message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IEffectiveFrequencyLimit, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EffectiveFrequencyLimit message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EffectiveFrequencyLimit
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.EffectiveFrequencyLimit;

                        /**
                         * Decodes an EffectiveFrequencyLimit message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EffectiveFrequencyLimit
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.EffectiveFrequencyLimit;

                        /**
                         * Verifies an EffectiveFrequencyLimit message.
                         * @param message Plain 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 EffectiveFrequencyLimit message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EffectiveFrequencyLimit
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.EffectiveFrequencyLimit;

                        /**
                         * Creates a plain object from an EffectiveFrequencyLimit message. Also converts values to other types if specified.
                         * @param message EffectiveFrequencyLimit
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.EffectiveFrequencyLimit, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EffectiveFrequencyLimit to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EffectiveFrequencyLimit
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FrequencyCap. */
                    interface IFrequencyCap {

                        /** FrequencyCap impressions */
                        impressions?: (number|null);

                        /** FrequencyCap time_unit */
                        time_unit?: (google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|null);
                    }

                    /** Represents a FrequencyCap. */
                    class FrequencyCap implements IFrequencyCap {

                        /**
                         * Constructs a new FrequencyCap.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IFrequencyCap);

                        /** FrequencyCap impressions. */
                        public impressions: number;

                        /** FrequencyCap time_unit. */
                        public time_unit: (google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v23.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit);

                        /**
                         * Creates a new FrequencyCap instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCap instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IFrequencyCap): google.ads.googleads.v23.services.FrequencyCap;

                        /**
                         * Encodes the specified FrequencyCap message. Does not implicitly {@link google.ads.googleads.v23.services.FrequencyCap.verify|verify} messages.
                         * @param message FrequencyCap message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IFrequencyCap, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCap message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.FrequencyCap.verify|verify} messages.
                         * @param message FrequencyCap message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IFrequencyCap, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCap message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequencyCap
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.FrequencyCap;

                        /**
                         * Decodes a FrequencyCap message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequencyCap
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.FrequencyCap;

                        /**
                         * Verifies a FrequencyCap message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCap message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequencyCap
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.FrequencyCap;

                        /**
                         * Creates a plain object from a FrequencyCap message. Also converts values to other types if specified.
                         * @param message FrequencyCap
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.FrequencyCap, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCap to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequencyCap
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Targeting. */
                    interface ITargeting {

                        /** Targeting plannable_location_id */
                        plannable_location_id?: (string|null);

                        /** Targeting plannable_location_ids */
                        plannable_location_ids?: (string[]|null);

                        /** Targeting age_range */
                        age_range?: (google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange|keyof typeof google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange|null);

                        /** Targeting genders */
                        genders?: (google.ads.googleads.v23.common.IGenderInfo[]|null);

                        /** Targeting devices */
                        devices?: (google.ads.googleads.v23.common.IDeviceInfo[]|null);

                        /** Targeting network */
                        network?: (google.ads.googleads.v23.enums.ReachPlanNetworkEnum.ReachPlanNetwork|keyof typeof google.ads.googleads.v23.enums.ReachPlanNetworkEnum.ReachPlanNetwork|null);

                        /** Targeting audience_targeting */
                        audience_targeting?: (google.ads.googleads.v23.services.IAudienceTargeting|null);
                    }

                    /** Represents a Targeting. */
                    class Targeting implements ITargeting {

                        /**
                         * Constructs a new Targeting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ITargeting);

                        /** Targeting plannable_location_id. */
                        public plannable_location_id?: (string|null);

                        /** Targeting plannable_location_ids. */
                        public plannable_location_ids: string[];

                        /** Targeting age_range. */
                        public age_range: (google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange|keyof typeof google.ads.googleads.v23.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange);

                        /** Targeting genders. */
                        public genders: google.ads.googleads.v23.common.IGenderInfo[];

                        /** Targeting devices. */
                        public devices: google.ads.googleads.v23.common.IDeviceInfo[];

                        /** Targeting network. */
                        public network: (google.ads.googleads.v23.enums.ReachPlanNetworkEnum.ReachPlanNetwork|keyof typeof google.ads.googleads.v23.enums.ReachPlanNetworkEnum.ReachPlanNetwork);

                        /** Targeting audience_targeting. */
                        public audience_targeting?: (google.ads.googleads.v23.services.IAudienceTargeting|null);

                        /**
                         * Creates a new Targeting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Targeting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ITargeting): google.ads.googleads.v23.services.Targeting;

                        /**
                         * Encodes the specified Targeting message. Does not implicitly {@link google.ads.googleads.v23.services.Targeting.verify|verify} messages.
                         * @param message Targeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ITargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Targeting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.Targeting.verify|verify} messages.
                         * @param message Targeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ITargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Targeting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Targeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.Targeting;

                        /**
                         * Decodes a Targeting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Targeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.Targeting;

                        /**
                         * Verifies a Targeting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Targeting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Targeting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.Targeting;

                        /**
                         * Creates a plain object from a Targeting message. Also converts values to other types if specified.
                         * @param message Targeting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.Targeting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Targeting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Targeting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CampaignDuration. */
                    interface ICampaignDuration {

                        /** CampaignDuration duration_in_days */
                        duration_in_days?: (number|null);

                        /** CampaignDuration date_range */
                        date_range?: (google.ads.googleads.v23.common.IDateRange|null);
                    }

                    /** Represents a CampaignDuration. */
                    class CampaignDuration implements ICampaignDuration {

                        /**
                         * Constructs a new CampaignDuration.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ICampaignDuration);

                        /** CampaignDuration duration_in_days. */
                        public duration_in_days?: (number|null);

                        /** CampaignDuration date_range. */
                        public date_range?: (google.ads.googleads.v23.common.IDateRange|null);

                        /**
                         * Creates a new CampaignDuration instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignDuration instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ICampaignDuration): google.ads.googleads.v23.services.CampaignDuration;

                        /**
                         * Encodes the specified CampaignDuration message. Does not implicitly {@link google.ads.googleads.v23.services.CampaignDuration.verify|verify} messages.
                         * @param message CampaignDuration message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ICampaignDuration, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDuration message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.CampaignDuration.verify|verify} messages.
                         * @param message CampaignDuration message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ICampaignDuration, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDuration message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CampaignDuration
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.CampaignDuration;

                        /**
                         * Decodes a CampaignDuration message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignDuration
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.CampaignDuration;

                        /**
                         * Verifies a CampaignDuration message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDuration message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CampaignDuration
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.CampaignDuration;

                        /**
                         * Creates a plain object from a CampaignDuration message. Also converts values to other types if specified.
                         * @param message CampaignDuration
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.CampaignDuration, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDuration to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CampaignDuration
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannedProduct. */
                    interface IPlannedProduct {

                        /** PlannedProduct plannable_product_code */
                        plannable_product_code?: (string|null);

                        /** PlannedProduct budget_micros */
                        budget_micros?: (number|null);

                        /** PlannedProduct conversion_rate */
                        conversion_rate?: (number|null);

                        /** PlannedProduct advanced_product_targeting */
                        advanced_product_targeting?: (google.ads.googleads.v23.services.IAdvancedProductTargeting|null);
                    }

                    /** Represents a PlannedProduct. */
                    class PlannedProduct implements IPlannedProduct {

                        /**
                         * Constructs a new PlannedProduct.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannedProduct);

                        /** PlannedProduct plannable_product_code. */
                        public plannable_product_code?: (string|null);

                        /** PlannedProduct budget_micros. */
                        public budget_micros?: (number|null);

                        /** PlannedProduct conversion_rate. */
                        public conversion_rate?: (number|null);

                        /** PlannedProduct advanced_product_targeting. */
                        public advanced_product_targeting?: (google.ads.googleads.v23.services.IAdvancedProductTargeting|null);

                        /**
                         * Creates a new PlannedProduct instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannedProduct instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannedProduct): google.ads.googleads.v23.services.PlannedProduct;

                        /**
                         * Encodes the specified PlannedProduct message. Does not implicitly {@link google.ads.googleads.v23.services.PlannedProduct.verify|verify} messages.
                         * @param message PlannedProduct message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannedProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannedProduct message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannedProduct.verify|verify} messages.
                         * @param message PlannedProduct message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannedProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannedProduct message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannedProduct
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannedProduct;

                        /**
                         * Decodes a PlannedProduct message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannedProduct
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannedProduct;

                        /**
                         * Verifies a PlannedProduct message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannedProduct message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannedProduct
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannedProduct;

                        /**
                         * Creates a plain object from a PlannedProduct message. Also converts values to other types if specified.
                         * @param message PlannedProduct
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannedProduct, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannedProduct to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannedProduct
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateReachForecastResponse. */
                    interface IGenerateReachForecastResponse {

                        /** GenerateReachForecastResponse on_target_audience_metrics */
                        on_target_audience_metrics?: (google.ads.googleads.v23.services.IOnTargetAudienceMetrics|null);

                        /** GenerateReachForecastResponse reach_curve */
                        reach_curve?: (google.ads.googleads.v23.services.IReachCurve|null);
                    }

                    /** Represents a GenerateReachForecastResponse. */
                    class GenerateReachForecastResponse implements IGenerateReachForecastResponse {

                        /**
                         * Constructs a new GenerateReachForecastResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateReachForecastResponse);

                        /** GenerateReachForecastResponse on_target_audience_metrics. */
                        public on_target_audience_metrics?: (google.ads.googleads.v23.services.IOnTargetAudienceMetrics|null);

                        /** GenerateReachForecastResponse reach_curve. */
                        public reach_curve?: (google.ads.googleads.v23.services.IReachCurve|null);

                        /**
                         * Creates a new GenerateReachForecastResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateReachForecastResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateReachForecastResponse): google.ads.googleads.v23.services.GenerateReachForecastResponse;

                        /**
                         * Encodes the specified GenerateReachForecastResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateReachForecastResponse.verify|verify} messages.
                         * @param message GenerateReachForecastResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateReachForecastResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateReachForecastResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateReachForecastResponse.verify|verify} messages.
                         * @param message GenerateReachForecastResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateReachForecastResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateReachForecastResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateReachForecastResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateReachForecastResponse;

                        /**
                         * Decodes a GenerateReachForecastResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateReachForecastResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateReachForecastResponse;

                        /**
                         * Verifies a GenerateReachForecastResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateReachForecastResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateReachForecastResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateReachForecastResponse;

                        /**
                         * Creates a plain object from a GenerateReachForecastResponse message. Also converts values to other types if specified.
                         * @param message GenerateReachForecastResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateReachForecastResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateReachForecastResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateReachForecastResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ReachCurve. */
                    interface IReachCurve {

                        /** ReachCurve reach_forecasts */
                        reach_forecasts?: (google.ads.googleads.v23.services.IReachForecast[]|null);
                    }

                    /** Represents a ReachCurve. */
                    class ReachCurve implements IReachCurve {

                        /**
                         * Constructs a new ReachCurve.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IReachCurve);

                        /** ReachCurve reach_forecasts. */
                        public reach_forecasts: google.ads.googleads.v23.services.IReachForecast[];

                        /**
                         * Creates a new ReachCurve instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachCurve instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IReachCurve): google.ads.googleads.v23.services.ReachCurve;

                        /**
                         * Encodes the specified ReachCurve message. Does not implicitly {@link google.ads.googleads.v23.services.ReachCurve.verify|verify} messages.
                         * @param message ReachCurve message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IReachCurve, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachCurve message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ReachCurve.verify|verify} messages.
                         * @param message ReachCurve message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IReachCurve, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachCurve message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachCurve
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ReachCurve;

                        /**
                         * Decodes a ReachCurve message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachCurve
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ReachCurve;

                        /**
                         * Verifies a ReachCurve message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachCurve message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachCurve
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ReachCurve;

                        /**
                         * Creates a plain object from a ReachCurve message. Also converts values to other types if specified.
                         * @param message ReachCurve
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ReachCurve, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachCurve to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachCurve
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ReachForecast. */
                    interface IReachForecast {

                        /** ReachForecast cost_micros */
                        cost_micros?: (number|null);

                        /** ReachForecast forecast */
                        forecast?: (google.ads.googleads.v23.services.IForecast|null);

                        /** ReachForecast planned_product_reach_forecasts */
                        planned_product_reach_forecasts?: (google.ads.googleads.v23.services.IPlannedProductReachForecast[]|null);
                    }

                    /** Represents a ReachForecast. */
                    class ReachForecast implements IReachForecast {

                        /**
                         * Constructs a new ReachForecast.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IReachForecast);

                        /** ReachForecast cost_micros. */
                        public cost_micros: number;

                        /** ReachForecast forecast. */
                        public forecast?: (google.ads.googleads.v23.services.IForecast|null);

                        /** ReachForecast planned_product_reach_forecasts. */
                        public planned_product_reach_forecasts: google.ads.googleads.v23.services.IPlannedProductReachForecast[];

                        /**
                         * Creates a new ReachForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IReachForecast): google.ads.googleads.v23.services.ReachForecast;

                        /**
                         * Encodes the specified ReachForecast message. Does not implicitly {@link google.ads.googleads.v23.services.ReachForecast.verify|verify} messages.
                         * @param message ReachForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IReachForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ReachForecast.verify|verify} messages.
                         * @param message ReachForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IReachForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachForecast message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReachForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ReachForecast;

                        /**
                         * Decodes a ReachForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ReachForecast;

                        /**
                         * Verifies a ReachForecast message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachForecast message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReachForecast
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ReachForecast;

                        /**
                         * Creates a plain object from a ReachForecast message. Also converts values to other types if specified.
                         * @param message ReachForecast
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ReachForecast, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReachForecast
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Forecast. */
                    interface IForecast {

                        /** Forecast on_target_reach */
                        on_target_reach?: (number|null);

                        /** Forecast total_reach */
                        total_reach?: (number|null);

                        /** Forecast on_target_impressions */
                        on_target_impressions?: (number|null);

                        /** Forecast total_impressions */
                        total_impressions?: (number|null);

                        /** Forecast viewable_impressions */
                        viewable_impressions?: (number|null);

                        /** Forecast effective_frequency_breakdowns */
                        effective_frequency_breakdowns?: (google.ads.googleads.v23.services.IEffectiveFrequencyBreakdown[]|null);

                        /** Forecast on_target_coview_reach */
                        on_target_coview_reach?: (number|null);

                        /** Forecast total_coview_reach */
                        total_coview_reach?: (number|null);

                        /** Forecast on_target_coview_impressions */
                        on_target_coview_impressions?: (number|null);

                        /** Forecast total_coview_impressions */
                        total_coview_impressions?: (number|null);

                        /** Forecast conversions */
                        conversions?: (number|null);

                        /** Forecast trueview_views */
                        trueview_views?: (number|null);
                    }

                    /** Represents a Forecast. */
                    class Forecast implements IForecast {

                        /**
                         * Constructs a new Forecast.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IForecast);

                        /** Forecast on_target_reach. */
                        public on_target_reach?: (number|null);

                        /** Forecast total_reach. */
                        public total_reach?: (number|null);

                        /** Forecast on_target_impressions. */
                        public on_target_impressions?: (number|null);

                        /** Forecast total_impressions. */
                        public total_impressions?: (number|null);

                        /** Forecast viewable_impressions. */
                        public viewable_impressions?: (number|null);

                        /** Forecast effective_frequency_breakdowns. */
                        public effective_frequency_breakdowns: google.ads.googleads.v23.services.IEffectiveFrequencyBreakdown[];

                        /** Forecast on_target_coview_reach. */
                        public on_target_coview_reach?: (number|null);

                        /** Forecast total_coview_reach. */
                        public total_coview_reach?: (number|null);

                        /** Forecast on_target_coview_impressions. */
                        public on_target_coview_impressions?: (number|null);

                        /** Forecast total_coview_impressions. */
                        public total_coview_impressions?: (number|null);

                        /** Forecast conversions. */
                        public conversions?: (number|null);

                        /** Forecast trueview_views. */
                        public trueview_views?: (number|null);

                        /**
                         * Creates a new Forecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Forecast instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IForecast): google.ads.googleads.v23.services.Forecast;

                        /**
                         * Encodes the specified Forecast message. Does not implicitly {@link google.ads.googleads.v23.services.Forecast.verify|verify} messages.
                         * @param message Forecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Forecast message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.Forecast.verify|verify} messages.
                         * @param message Forecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Forecast message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Forecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.Forecast;

                        /**
                         * Decodes a Forecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Forecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.Forecast;

                        /**
                         * Verifies a Forecast message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Forecast message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Forecast
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.Forecast;

                        /**
                         * Creates a plain object from a Forecast message. Also converts values to other types if specified.
                         * @param message Forecast
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.Forecast, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Forecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Forecast
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannedProductReachForecast. */
                    interface IPlannedProductReachForecast {

                        /** PlannedProductReachForecast plannable_product_code */
                        plannable_product_code?: (string|null);

                        /** PlannedProductReachForecast cost_micros */
                        cost_micros?: (number|null);

                        /** PlannedProductReachForecast planned_product_forecast */
                        planned_product_forecast?: (google.ads.googleads.v23.services.IPlannedProductForecast|null);
                    }

                    /** Represents a PlannedProductReachForecast. */
                    class PlannedProductReachForecast implements IPlannedProductReachForecast {

                        /**
                         * Constructs a new PlannedProductReachForecast.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannedProductReachForecast);

                        /** PlannedProductReachForecast plannable_product_code. */
                        public plannable_product_code: string;

                        /** PlannedProductReachForecast cost_micros. */
                        public cost_micros: number;

                        /** PlannedProductReachForecast planned_product_forecast. */
                        public planned_product_forecast?: (google.ads.googleads.v23.services.IPlannedProductForecast|null);

                        /**
                         * Creates a new PlannedProductReachForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannedProductReachForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannedProductReachForecast): google.ads.googleads.v23.services.PlannedProductReachForecast;

                        /**
                         * Encodes the specified PlannedProductReachForecast message. Does not implicitly {@link google.ads.googleads.v23.services.PlannedProductReachForecast.verify|verify} messages.
                         * @param message PlannedProductReachForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannedProductReachForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannedProductReachForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannedProductReachForecast.verify|verify} messages.
                         * @param message PlannedProductReachForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannedProductReachForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannedProductReachForecast message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannedProductReachForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannedProductReachForecast;

                        /**
                         * Decodes a PlannedProductReachForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannedProductReachForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannedProductReachForecast;

                        /**
                         * Verifies a PlannedProductReachForecast message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannedProductReachForecast message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannedProductReachForecast
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannedProductReachForecast;

                        /**
                         * Creates a plain object from a PlannedProductReachForecast message. Also converts values to other types if specified.
                         * @param message PlannedProductReachForecast
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannedProductReachForecast, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannedProductReachForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannedProductReachForecast
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PlannedProductForecast. */
                    interface IPlannedProductForecast {

                        /** PlannedProductForecast on_target_reach */
                        on_target_reach?: (number|null);

                        /** PlannedProductForecast total_reach */
                        total_reach?: (number|null);

                        /** PlannedProductForecast on_target_impressions */
                        on_target_impressions?: (number|null);

                        /** PlannedProductForecast total_impressions */
                        total_impressions?: (number|null);

                        /** PlannedProductForecast viewable_impressions */
                        viewable_impressions?: (number|null);

                        /** PlannedProductForecast on_target_coview_reach */
                        on_target_coview_reach?: (number|null);

                        /** PlannedProductForecast total_coview_reach */
                        total_coview_reach?: (number|null);

                        /** PlannedProductForecast on_target_coview_impressions */
                        on_target_coview_impressions?: (number|null);

                        /** PlannedProductForecast total_coview_impressions */
                        total_coview_impressions?: (number|null);

                        /** PlannedProductForecast average_frequency */
                        average_frequency?: (number|null);

                        /** PlannedProductForecast conversions */
                        conversions?: (number|null);

                        /** PlannedProductForecast trueview_views */
                        trueview_views?: (number|null);
                    }

                    /** Represents a PlannedProductForecast. */
                    class PlannedProductForecast implements IPlannedProductForecast {

                        /**
                         * Constructs a new PlannedProductForecast.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IPlannedProductForecast);

                        /** PlannedProductForecast on_target_reach. */
                        public on_target_reach: number;

                        /** PlannedProductForecast total_reach. */
                        public total_reach: number;

                        /** PlannedProductForecast on_target_impressions. */
                        public on_target_impressions: number;

                        /** PlannedProductForecast total_impressions. */
                        public total_impressions: number;

                        /** PlannedProductForecast viewable_impressions. */
                        public viewable_impressions?: (number|null);

                        /** PlannedProductForecast on_target_coview_reach. */
                        public on_target_coview_reach?: (number|null);

                        /** PlannedProductForecast total_coview_reach. */
                        public total_coview_reach?: (number|null);

                        /** PlannedProductForecast on_target_coview_impressions. */
                        public on_target_coview_impressions?: (number|null);

                        /** PlannedProductForecast total_coview_impressions. */
                        public total_coview_impressions?: (number|null);

                        /** PlannedProductForecast average_frequency. */
                        public average_frequency?: (number|null);

                        /** PlannedProductForecast conversions. */
                        public conversions?: (number|null);

                        /** PlannedProductForecast trueview_views. */
                        public trueview_views?: (number|null);

                        /**
                         * Creates a new PlannedProductForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannedProductForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IPlannedProductForecast): google.ads.googleads.v23.services.PlannedProductForecast;

                        /**
                         * Encodes the specified PlannedProductForecast message. Does not implicitly {@link google.ads.googleads.v23.services.PlannedProductForecast.verify|verify} messages.
                         * @param message PlannedProductForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IPlannedProductForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannedProductForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.PlannedProductForecast.verify|verify} messages.
                         * @param message PlannedProductForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IPlannedProductForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannedProductForecast message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PlannedProductForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.PlannedProductForecast;

                        /**
                         * Decodes a PlannedProductForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlannedProductForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.PlannedProductForecast;

                        /**
                         * Verifies a PlannedProductForecast message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannedProductForecast message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PlannedProductForecast
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.PlannedProductForecast;

                        /**
                         * Creates a plain object from a PlannedProductForecast message. Also converts values to other types if specified.
                         * @param message PlannedProductForecast
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.PlannedProductForecast, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannedProductForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PlannedProductForecast
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OnTargetAudienceMetrics. */
                    interface IOnTargetAudienceMetrics {

                        /** OnTargetAudienceMetrics youtube_audience_size */
                        youtube_audience_size?: (number|null);

                        /** OnTargetAudienceMetrics census_audience_size */
                        census_audience_size?: (number|null);
                    }

                    /** Represents an OnTargetAudienceMetrics. */
                    class OnTargetAudienceMetrics implements IOnTargetAudienceMetrics {

                        /**
                         * Constructs a new OnTargetAudienceMetrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IOnTargetAudienceMetrics);

                        /** OnTargetAudienceMetrics youtube_audience_size. */
                        public youtube_audience_size?: (number|null);

                        /** OnTargetAudienceMetrics census_audience_size. */
                        public census_audience_size?: (number|null);

                        /**
                         * Creates a new OnTargetAudienceMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OnTargetAudienceMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IOnTargetAudienceMetrics): google.ads.googleads.v23.services.OnTargetAudienceMetrics;

                        /**
                         * Encodes the specified OnTargetAudienceMetrics message. Does not implicitly {@link google.ads.googleads.v23.services.OnTargetAudienceMetrics.verify|verify} messages.
                         * @param message OnTargetAudienceMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IOnTargetAudienceMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OnTargetAudienceMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.OnTargetAudienceMetrics.verify|verify} messages.
                         * @param message OnTargetAudienceMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IOnTargetAudienceMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OnTargetAudienceMetrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OnTargetAudienceMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.OnTargetAudienceMetrics;

                        /**
                         * Decodes an OnTargetAudienceMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OnTargetAudienceMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.OnTargetAudienceMetrics;

                        /**
                         * Verifies an OnTargetAudienceMetrics message.
                         * @param message Plain 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 OnTargetAudienceMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OnTargetAudienceMetrics
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.OnTargetAudienceMetrics;

                        /**
                         * Creates a plain object from an OnTargetAudienceMetrics message. Also converts values to other types if specified.
                         * @param message OnTargetAudienceMetrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.OnTargetAudienceMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OnTargetAudienceMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OnTargetAudienceMetrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EffectiveFrequencyBreakdown. */
                    interface IEffectiveFrequencyBreakdown {

                        /** EffectiveFrequencyBreakdown effective_frequency */
                        effective_frequency?: (number|null);

                        /** EffectiveFrequencyBreakdown on_target_reach */
                        on_target_reach?: (number|null);

                        /** EffectiveFrequencyBreakdown total_reach */
                        total_reach?: (number|null);

                        /** EffectiveFrequencyBreakdown effective_coview_reach */
                        effective_coview_reach?: (number|null);

                        /** EffectiveFrequencyBreakdown on_target_effective_coview_reach */
                        on_target_effective_coview_reach?: (number|null);
                    }

                    /** Represents an EffectiveFrequencyBreakdown. */
                    class EffectiveFrequencyBreakdown implements IEffectiveFrequencyBreakdown {

                        /**
                         * Constructs a new EffectiveFrequencyBreakdown.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IEffectiveFrequencyBreakdown);

                        /** EffectiveFrequencyBreakdown effective_frequency. */
                        public effective_frequency: number;

                        /** EffectiveFrequencyBreakdown on_target_reach. */
                        public on_target_reach: number;

                        /** EffectiveFrequencyBreakdown total_reach. */
                        public total_reach: number;

                        /** EffectiveFrequencyBreakdown effective_coview_reach. */
                        public effective_coview_reach?: (number|null);

                        /** EffectiveFrequencyBreakdown on_target_effective_coview_reach. */
                        public on_target_effective_coview_reach?: (number|null);

                        /**
                         * Creates a new EffectiveFrequencyBreakdown instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EffectiveFrequencyBreakdown instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IEffectiveFrequencyBreakdown): google.ads.googleads.v23.services.EffectiveFrequencyBreakdown;

                        /**
                         * Encodes the specified EffectiveFrequencyBreakdown message. Does not implicitly {@link google.ads.googleads.v23.services.EffectiveFrequencyBreakdown.verify|verify} messages.
                         * @param message EffectiveFrequencyBreakdown message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IEffectiveFrequencyBreakdown, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EffectiveFrequencyBreakdown message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.EffectiveFrequencyBreakdown.verify|verify} messages.
                         * @param message EffectiveFrequencyBreakdown message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IEffectiveFrequencyBreakdown, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EffectiveFrequencyBreakdown message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EffectiveFrequencyBreakdown
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.EffectiveFrequencyBreakdown;

                        /**
                         * Decodes an EffectiveFrequencyBreakdown message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EffectiveFrequencyBreakdown
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.EffectiveFrequencyBreakdown;

                        /**
                         * Verifies an EffectiveFrequencyBreakdown message.
                         * @param message Plain 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 EffectiveFrequencyBreakdown message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EffectiveFrequencyBreakdown
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.EffectiveFrequencyBreakdown;

                        /**
                         * Creates a plain object from an EffectiveFrequencyBreakdown message. Also converts values to other types if specified.
                         * @param message EffectiveFrequencyBreakdown
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.EffectiveFrequencyBreakdown, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EffectiveFrequencyBreakdown to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EffectiveFrequencyBreakdown
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ForecastMetricOptions. */
                    interface IForecastMetricOptions {

                        /** ForecastMetricOptions include_coview */
                        include_coview?: (boolean|null);
                    }

                    /** Represents a ForecastMetricOptions. */
                    class ForecastMetricOptions implements IForecastMetricOptions {

                        /**
                         * Constructs a new ForecastMetricOptions.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IForecastMetricOptions);

                        /** ForecastMetricOptions include_coview. */
                        public include_coview: boolean;

                        /**
                         * Creates a new ForecastMetricOptions instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ForecastMetricOptions instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IForecastMetricOptions): google.ads.googleads.v23.services.ForecastMetricOptions;

                        /**
                         * Encodes the specified ForecastMetricOptions message. Does not implicitly {@link google.ads.googleads.v23.services.ForecastMetricOptions.verify|verify} messages.
                         * @param message ForecastMetricOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IForecastMetricOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ForecastMetricOptions message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ForecastMetricOptions.verify|verify} messages.
                         * @param message ForecastMetricOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IForecastMetricOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ForecastMetricOptions message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ForecastMetricOptions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ForecastMetricOptions;

                        /**
                         * Decodes a ForecastMetricOptions message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ForecastMetricOptions
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ForecastMetricOptions;

                        /**
                         * Verifies a ForecastMetricOptions message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ForecastMetricOptions message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ForecastMetricOptions
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ForecastMetricOptions;

                        /**
                         * Creates a plain object from a ForecastMetricOptions message. Also converts values to other types if specified.
                         * @param message ForecastMetricOptions
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ForecastMetricOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ForecastMetricOptions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ForecastMetricOptions
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AudienceTargeting. */
                    interface IAudienceTargeting {

                        /** AudienceTargeting user_interest */
                        user_interest?: (google.ads.googleads.v23.common.IUserInterestInfo[]|null);

                        /** AudienceTargeting user_lists */
                        user_lists?: (google.ads.googleads.v23.common.IUserListInfo[]|null);
                    }

                    /** Represents an AudienceTargeting. */
                    class AudienceTargeting implements IAudienceTargeting {

                        /**
                         * Constructs a new AudienceTargeting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAudienceTargeting);

                        /** AudienceTargeting user_interest. */
                        public user_interest: google.ads.googleads.v23.common.IUserInterestInfo[];

                        /** AudienceTargeting user_lists. */
                        public user_lists: google.ads.googleads.v23.common.IUserListInfo[];

                        /**
                         * Creates a new AudienceTargeting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AudienceTargeting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAudienceTargeting): google.ads.googleads.v23.services.AudienceTargeting;

                        /**
                         * Encodes the specified AudienceTargeting message. Does not implicitly {@link google.ads.googleads.v23.services.AudienceTargeting.verify|verify} messages.
                         * @param message AudienceTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAudienceTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AudienceTargeting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AudienceTargeting.verify|verify} messages.
                         * @param message AudienceTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAudienceTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AudienceTargeting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AudienceTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AudienceTargeting;

                        /**
                         * Decodes an AudienceTargeting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AudienceTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AudienceTargeting;

                        /**
                         * Verifies an AudienceTargeting message.
                         * @param message Plain 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 AudienceTargeting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AudienceTargeting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AudienceTargeting;

                        /**
                         * Creates a plain object from an AudienceTargeting message. Also converts values to other types if specified.
                         * @param message AudienceTargeting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AudienceTargeting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AudienceTargeting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AudienceTargeting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AdvancedProductTargeting. */
                    interface IAdvancedProductTargeting {

                        /** AdvancedProductTargeting surface_targeting_settings */
                        surface_targeting_settings?: (google.ads.googleads.v23.services.ISurfaceTargeting|null);

                        /** AdvancedProductTargeting target_frequency_settings */
                        target_frequency_settings?: (google.ads.googleads.v23.services.ITargetFrequencySettings|null);

                        /** AdvancedProductTargeting youtube_select_settings */
                        youtube_select_settings?: (google.ads.googleads.v23.services.IYouTubeSelectSettings|null);
                    }

                    /** Represents an AdvancedProductTargeting. */
                    class AdvancedProductTargeting implements IAdvancedProductTargeting {

                        /**
                         * Constructs a new AdvancedProductTargeting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAdvancedProductTargeting);

                        /** AdvancedProductTargeting surface_targeting_settings. */
                        public surface_targeting_settings?: (google.ads.googleads.v23.services.ISurfaceTargeting|null);

                        /** AdvancedProductTargeting target_frequency_settings. */
                        public target_frequency_settings?: (google.ads.googleads.v23.services.ITargetFrequencySettings|null);

                        /** AdvancedProductTargeting youtube_select_settings. */
                        public youtube_select_settings?: (google.ads.googleads.v23.services.IYouTubeSelectSettings|null);

                        /** AdvancedProductTargeting advanced_targeting. */
                        public advanced_targeting?: "youtube_select_settings";

                        /**
                         * Creates a new AdvancedProductTargeting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdvancedProductTargeting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAdvancedProductTargeting): google.ads.googleads.v23.services.AdvancedProductTargeting;

                        /**
                         * Encodes the specified AdvancedProductTargeting message. Does not implicitly {@link google.ads.googleads.v23.services.AdvancedProductTargeting.verify|verify} messages.
                         * @param message AdvancedProductTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAdvancedProductTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdvancedProductTargeting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AdvancedProductTargeting.verify|verify} messages.
                         * @param message AdvancedProductTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAdvancedProductTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdvancedProductTargeting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AdvancedProductTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AdvancedProductTargeting;

                        /**
                         * Decodes an AdvancedProductTargeting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdvancedProductTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AdvancedProductTargeting;

                        /**
                         * Verifies an AdvancedProductTargeting message.
                         * @param message Plain 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 AdvancedProductTargeting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AdvancedProductTargeting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AdvancedProductTargeting;

                        /**
                         * Creates a plain object from an AdvancedProductTargeting message. Also converts values to other types if specified.
                         * @param message AdvancedProductTargeting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AdvancedProductTargeting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdvancedProductTargeting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AdvancedProductTargeting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeSelectSettings. */
                    interface IYouTubeSelectSettings {

                        /** YouTubeSelectSettings lineup_id */
                        lineup_id?: (number|null);
                    }

                    /** Represents a YouTubeSelectSettings. */
                    class YouTubeSelectSettings implements IYouTubeSelectSettings {

                        /**
                         * Constructs a new YouTubeSelectSettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IYouTubeSelectSettings);

                        /** YouTubeSelectSettings lineup_id. */
                        public lineup_id: number;

                        /**
                         * Creates a new YouTubeSelectSettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeSelectSettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IYouTubeSelectSettings): google.ads.googleads.v23.services.YouTubeSelectSettings;

                        /**
                         * Encodes the specified YouTubeSelectSettings message. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeSelectSettings.verify|verify} messages.
                         * @param message YouTubeSelectSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IYouTubeSelectSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeSelectSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeSelectSettings.verify|verify} messages.
                         * @param message YouTubeSelectSettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IYouTubeSelectSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeSelectSettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeSelectSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.YouTubeSelectSettings;

                        /**
                         * Decodes a YouTubeSelectSettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeSelectSettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.YouTubeSelectSettings;

                        /**
                         * Verifies a YouTubeSelectSettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeSelectSettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeSelectSettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.YouTubeSelectSettings;

                        /**
                         * Creates a plain object from a YouTubeSelectSettings message. Also converts values to other types if specified.
                         * @param message YouTubeSelectSettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.YouTubeSelectSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeSelectSettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeSelectSettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a YouTubeSelectLineUp. */
                    interface IYouTubeSelectLineUp {

                        /** YouTubeSelectLineUp lineup_id */
                        lineup_id?: (number|null);

                        /** YouTubeSelectLineUp lineup_name */
                        lineup_name?: (string|null);
                    }

                    /** Represents a YouTubeSelectLineUp. */
                    class YouTubeSelectLineUp implements IYouTubeSelectLineUp {

                        /**
                         * Constructs a new YouTubeSelectLineUp.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IYouTubeSelectLineUp);

                        /** YouTubeSelectLineUp lineup_id. */
                        public lineup_id: number;

                        /** YouTubeSelectLineUp lineup_name. */
                        public lineup_name: string;

                        /**
                         * Creates a new YouTubeSelectLineUp instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeSelectLineUp instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IYouTubeSelectLineUp): google.ads.googleads.v23.services.YouTubeSelectLineUp;

                        /**
                         * Encodes the specified YouTubeSelectLineUp message. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeSelectLineUp.verify|verify} messages.
                         * @param message YouTubeSelectLineUp message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IYouTubeSelectLineUp, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeSelectLineUp message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.YouTubeSelectLineUp.verify|verify} messages.
                         * @param message YouTubeSelectLineUp message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IYouTubeSelectLineUp, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeSelectLineUp message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns YouTubeSelectLineUp
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.YouTubeSelectLineUp;

                        /**
                         * Decodes a YouTubeSelectLineUp message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns YouTubeSelectLineUp
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.YouTubeSelectLineUp;

                        /**
                         * Verifies a YouTubeSelectLineUp message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeSelectLineUp message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns YouTubeSelectLineUp
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.YouTubeSelectLineUp;

                        /**
                         * Creates a plain object from a YouTubeSelectLineUp message. Also converts values to other types if specified.
                         * @param message YouTubeSelectLineUp
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.YouTubeSelectLineUp, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeSelectLineUp to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for YouTubeSelectLineUp
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SurfaceTargetingCombinations. */
                    interface ISurfaceTargetingCombinations {

                        /** SurfaceTargetingCombinations default_targeting */
                        default_targeting?: (google.ads.googleads.v23.services.ISurfaceTargeting|null);

                        /** SurfaceTargetingCombinations available_targeting_combinations */
                        available_targeting_combinations?: (google.ads.googleads.v23.services.ISurfaceTargeting[]|null);
                    }

                    /** Represents a SurfaceTargetingCombinations. */
                    class SurfaceTargetingCombinations implements ISurfaceTargetingCombinations {

                        /**
                         * Constructs a new SurfaceTargetingCombinations.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISurfaceTargetingCombinations);

                        /** SurfaceTargetingCombinations default_targeting. */
                        public default_targeting?: (google.ads.googleads.v23.services.ISurfaceTargeting|null);

                        /** SurfaceTargetingCombinations available_targeting_combinations. */
                        public available_targeting_combinations: google.ads.googleads.v23.services.ISurfaceTargeting[];

                        /**
                         * Creates a new SurfaceTargetingCombinations instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SurfaceTargetingCombinations instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISurfaceTargetingCombinations): google.ads.googleads.v23.services.SurfaceTargetingCombinations;

                        /**
                         * Encodes the specified SurfaceTargetingCombinations message. Does not implicitly {@link google.ads.googleads.v23.services.SurfaceTargetingCombinations.verify|verify} messages.
                         * @param message SurfaceTargetingCombinations message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISurfaceTargetingCombinations, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SurfaceTargetingCombinations message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SurfaceTargetingCombinations.verify|verify} messages.
                         * @param message SurfaceTargetingCombinations message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISurfaceTargetingCombinations, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SurfaceTargetingCombinations message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SurfaceTargetingCombinations
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SurfaceTargetingCombinations;

                        /**
                         * Decodes a SurfaceTargetingCombinations message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SurfaceTargetingCombinations
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SurfaceTargetingCombinations;

                        /**
                         * Verifies a SurfaceTargetingCombinations message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SurfaceTargetingCombinations message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SurfaceTargetingCombinations
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SurfaceTargetingCombinations;

                        /**
                         * Creates a plain object from a SurfaceTargetingCombinations message. Also converts values to other types if specified.
                         * @param message SurfaceTargetingCombinations
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SurfaceTargetingCombinations, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SurfaceTargetingCombinations to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SurfaceTargetingCombinations
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SurfaceTargeting. */
                    interface ISurfaceTargeting {

                        /** SurfaceTargeting surfaces */
                        surfaces?: (google.ads.googleads.v23.enums.ReachPlanSurfaceEnum.ReachPlanSurface[]|null);
                    }

                    /** Represents a SurfaceTargeting. */
                    class SurfaceTargeting implements ISurfaceTargeting {

                        /**
                         * Constructs a new SurfaceTargeting.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISurfaceTargeting);

                        /** SurfaceTargeting surfaces. */
                        public surfaces: google.ads.googleads.v23.enums.ReachPlanSurfaceEnum.ReachPlanSurface[];

                        /**
                         * Creates a new SurfaceTargeting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SurfaceTargeting instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISurfaceTargeting): google.ads.googleads.v23.services.SurfaceTargeting;

                        /**
                         * Encodes the specified SurfaceTargeting message. Does not implicitly {@link google.ads.googleads.v23.services.SurfaceTargeting.verify|verify} messages.
                         * @param message SurfaceTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISurfaceTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SurfaceTargeting message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SurfaceTargeting.verify|verify} messages.
                         * @param message SurfaceTargeting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISurfaceTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SurfaceTargeting message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SurfaceTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SurfaceTargeting;

                        /**
                         * Decodes a SurfaceTargeting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SurfaceTargeting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SurfaceTargeting;

                        /**
                         * Verifies a SurfaceTargeting message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SurfaceTargeting message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SurfaceTargeting
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SurfaceTargeting;

                        /**
                         * Creates a plain object from a SurfaceTargeting message. Also converts values to other types if specified.
                         * @param message SurfaceTargeting
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SurfaceTargeting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SurfaceTargeting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SurfaceTargeting
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TargetFrequencySettings. */
                    interface ITargetFrequencySettings {

                        /** TargetFrequencySettings time_unit */
                        time_unit?: (google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit|keyof typeof google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit|null);

                        /** TargetFrequencySettings target_frequency */
                        target_frequency?: (number|null);
                    }

                    /** Represents a TargetFrequencySettings. */
                    class TargetFrequencySettings implements ITargetFrequencySettings {

                        /**
                         * Constructs a new TargetFrequencySettings.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ITargetFrequencySettings);

                        /** TargetFrequencySettings time_unit. */
                        public time_unit: (google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit|keyof typeof google.ads.googleads.v23.enums.TargetFrequencyTimeUnitEnum.TargetFrequencyTimeUnit);

                        /** TargetFrequencySettings target_frequency. */
                        public target_frequency: number;

                        /**
                         * Creates a new TargetFrequencySettings instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetFrequencySettings instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ITargetFrequencySettings): google.ads.googleads.v23.services.TargetFrequencySettings;

                        /**
                         * Encodes the specified TargetFrequencySettings message. Does not implicitly {@link google.ads.googleads.v23.services.TargetFrequencySettings.verify|verify} messages.
                         * @param message TargetFrequencySettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ITargetFrequencySettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetFrequencySettings message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.TargetFrequencySettings.verify|verify} messages.
                         * @param message TargetFrequencySettings message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ITargetFrequencySettings, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetFrequencySettings message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TargetFrequencySettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.TargetFrequencySettings;

                        /**
                         * Decodes a TargetFrequencySettings message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TargetFrequencySettings
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.TargetFrequencySettings;

                        /**
                         * Verifies a TargetFrequencySettings message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetFrequencySettings message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TargetFrequencySettings
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.TargetFrequencySettings;

                        /**
                         * Creates a plain object from a TargetFrequencySettings message. Also converts values to other types if specified.
                         * @param message TargetFrequencySettings
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.TargetFrequencySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetFrequencySettings to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TargetFrequencySettings
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a RecommendationService */
                    class RecommendationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new RecommendationService 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 RecommendationService 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): RecommendationService;

                        /**
                         * Calls ApplyRecommendation.
                         * @param request ApplyRecommendationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ApplyRecommendationResponse
                         */
                        public applyRecommendation(request: google.ads.googleads.v23.services.IApplyRecommendationRequest, callback: google.ads.googleads.v23.services.RecommendationService.ApplyRecommendationCallback): void;

                        /**
                         * Calls ApplyRecommendation.
                         * @param request ApplyRecommendationRequest message or plain object
                         * @returns Promise
                         */
                        public applyRecommendation(request: google.ads.googleads.v23.services.IApplyRecommendationRequest): Promise<google.ads.googleads.v23.services.ApplyRecommendationResponse>;

                        /**
                         * Calls DismissRecommendation.
                         * @param request DismissRecommendationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DismissRecommendationResponse
                         */
                        public dismissRecommendation(request: google.ads.googleads.v23.services.IDismissRecommendationRequest, callback: google.ads.googleads.v23.services.RecommendationService.DismissRecommendationCallback): void;

                        /**
                         * Calls DismissRecommendation.
                         * @param request DismissRecommendationRequest message or plain object
                         * @returns Promise
                         */
                        public dismissRecommendation(request: google.ads.googleads.v23.services.IDismissRecommendationRequest): Promise<google.ads.googleads.v23.services.DismissRecommendationResponse>;

                        /**
                         * Calls GenerateRecommendations.
                         * @param request GenerateRecommendationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateRecommendationsResponse
                         */
                        public generateRecommendations(request: google.ads.googleads.v23.services.IGenerateRecommendationsRequest, callback: google.ads.googleads.v23.services.RecommendationService.GenerateRecommendationsCallback): void;

                        /**
                         * Calls GenerateRecommendations.
                         * @param request GenerateRecommendationsRequest message or plain object
                         * @returns Promise
                         */
                        public generateRecommendations(request: google.ads.googleads.v23.services.IGenerateRecommendationsRequest): Promise<google.ads.googleads.v23.services.GenerateRecommendationsResponse>;
                    }

                    namespace RecommendationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.RecommendationService|applyRecommendation}.
                         * @param error Error, if any
                         * @param [response] ApplyRecommendationResponse
                         */
                        type ApplyRecommendationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.ApplyRecommendationResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.RecommendationService|dismissRecommendation}.
                         * @param error Error, if any
                         * @param [response] DismissRecommendationResponse
                         */
                        type DismissRecommendationCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.DismissRecommendationResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.RecommendationService|generateRecommendations}.
                         * @param error Error, if any
                         * @param [response] GenerateRecommendationsResponse
                         */
                        type GenerateRecommendationsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateRecommendationsResponse) => void;
                    }

                    /** Properties of an ApplyRecommendationRequest. */
                    interface IApplyRecommendationRequest {

                        /** ApplyRecommendationRequest customer_id */
                        customer_id?: (string|null);

                        /** ApplyRecommendationRequest operations */
                        operations?: (google.ads.googleads.v23.services.IApplyRecommendationOperation[]|null);

                        /** ApplyRecommendationRequest partial_failure */
                        partial_failure?: (boolean|null);
                    }

                    /** Represents an ApplyRecommendationRequest. */
                    class ApplyRecommendationRequest implements IApplyRecommendationRequest {

                        /**
                         * Constructs a new ApplyRecommendationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IApplyRecommendationRequest);

                        /** ApplyRecommendationRequest customer_id. */
                        public customer_id: string;

                        /** ApplyRecommendationRequest operations. */
                        public operations: google.ads.googleads.v23.services.IApplyRecommendationOperation[];

                        /** ApplyRecommendationRequest partial_failure. */
                        public partial_failure: boolean;

                        /**
                         * Creates a new ApplyRecommendationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplyRecommendationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IApplyRecommendationRequest): google.ads.googleads.v23.services.ApplyRecommendationRequest;

                        /**
                         * Encodes the specified ApplyRecommendationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationRequest.verify|verify} messages.
                         * @param message ApplyRecommendationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IApplyRecommendationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationRequest.verify|verify} messages.
                         * @param message ApplyRecommendationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IApplyRecommendationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApplyRecommendationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationRequest;

                        /**
                         * Decodes an ApplyRecommendationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApplyRecommendationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationRequest;

                        /**
                         * Verifies an ApplyRecommendationRequest message.
                         * @param message Plain 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 ApplyRecommendationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApplyRecommendationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationRequest;

                        /**
                         * Creates a plain object from an ApplyRecommendationRequest message. Also converts values to other types if specified.
                         * @param message ApplyRecommendationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApplyRecommendationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ApplyRecommendationOperation. */
                    interface IApplyRecommendationOperation {

                        /** ApplyRecommendationOperation resource_name */
                        resource_name?: (string|null);

                        /** ApplyRecommendationOperation campaign_budget */
                        campaign_budget?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICampaignBudgetParameters|null);

                        /** ApplyRecommendationOperation text_ad */
                        text_ad?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ITextAdParameters|null);

                        /** ApplyRecommendationOperation keyword */
                        keyword?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IKeywordParameters|null);

                        /** ApplyRecommendationOperation target_cpa_opt_in */
                        target_cpa_opt_in?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetCpaOptInParameters|null);

                        /** ApplyRecommendationOperation target_roas_opt_in */
                        target_roas_opt_in?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetRoasOptInParameters|null);

                        /** ApplyRecommendationOperation callout_extension */
                        callout_extension?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutExtensionParameters|null);

                        /** ApplyRecommendationOperation call_extension */
                        call_extension?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallExtensionParameters|null);

                        /** ApplyRecommendationOperation sitelink_extension */
                        sitelink_extension?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkExtensionParameters|null);

                        /** ApplyRecommendationOperation move_unused_budget */
                        move_unused_budget?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad */
                        responsive_search_ad?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters|null);

                        /** ApplyRecommendationOperation use_broad_match_keyword */
                        use_broad_match_keyword?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IUseBroadMatchKeywordParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad_asset */
                        responsive_search_ad_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdAssetParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad_improve_ad_strength */
                        responsive_search_ad_improve_ad_strength?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdImproveAdStrengthParameters|null);

                        /** ApplyRecommendationOperation raise_target_cpa_bid_too_low */
                        raise_target_cpa_bid_too_low?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaBidTooLowParameters|null);

                        /** ApplyRecommendationOperation forecasting_set_target_roas */
                        forecasting_set_target_roas?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters|null);

                        /** ApplyRecommendationOperation callout_asset */
                        callout_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutAssetParameters|null);

                        /** ApplyRecommendationOperation call_asset */
                        call_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallAssetParameters|null);

                        /** ApplyRecommendationOperation sitelink_asset */
                        sitelink_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkAssetParameters|null);

                        /** ApplyRecommendationOperation raise_target_cpa */
                        raise_target_cpa?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaParameters|null);

                        /** ApplyRecommendationOperation lower_target_roas */
                        lower_target_roas?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ILowerTargetRoasParameters|null);

                        /** ApplyRecommendationOperation forecasting_set_target_cpa */
                        forecasting_set_target_cpa?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters|null);

                        /** ApplyRecommendationOperation set_target_cpa */
                        set_target_cpa?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters|null);

                        /** ApplyRecommendationOperation set_target_roas */
                        set_target_roas?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters|null);

                        /** ApplyRecommendationOperation lead_form_asset */
                        lead_form_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ILeadFormAssetParameters|null);
                    }

                    /** Represents an ApplyRecommendationOperation. */
                    class ApplyRecommendationOperation implements IApplyRecommendationOperation {

                        /**
                         * Constructs a new ApplyRecommendationOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IApplyRecommendationOperation);

                        /** ApplyRecommendationOperation resource_name. */
                        public resource_name: string;

                        /** ApplyRecommendationOperation campaign_budget. */
                        public campaign_budget?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICampaignBudgetParameters|null);

                        /** ApplyRecommendationOperation text_ad. */
                        public text_ad?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ITextAdParameters|null);

                        /** ApplyRecommendationOperation keyword. */
                        public keyword?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IKeywordParameters|null);

                        /** ApplyRecommendationOperation target_cpa_opt_in. */
                        public target_cpa_opt_in?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetCpaOptInParameters|null);

                        /** ApplyRecommendationOperation target_roas_opt_in. */
                        public target_roas_opt_in?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetRoasOptInParameters|null);

                        /** ApplyRecommendationOperation callout_extension. */
                        public callout_extension?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutExtensionParameters|null);

                        /** ApplyRecommendationOperation call_extension. */
                        public call_extension?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallExtensionParameters|null);

                        /** ApplyRecommendationOperation sitelink_extension. */
                        public sitelink_extension?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkExtensionParameters|null);

                        /** ApplyRecommendationOperation move_unused_budget. */
                        public move_unused_budget?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad. */
                        public responsive_search_ad?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters|null);

                        /** ApplyRecommendationOperation use_broad_match_keyword. */
                        public use_broad_match_keyword?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IUseBroadMatchKeywordParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad_asset. */
                        public responsive_search_ad_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdAssetParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad_improve_ad_strength. */
                        public responsive_search_ad_improve_ad_strength?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdImproveAdStrengthParameters|null);

                        /** ApplyRecommendationOperation raise_target_cpa_bid_too_low. */
                        public raise_target_cpa_bid_too_low?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaBidTooLowParameters|null);

                        /** ApplyRecommendationOperation forecasting_set_target_roas. */
                        public forecasting_set_target_roas?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters|null);

                        /** ApplyRecommendationOperation callout_asset. */
                        public callout_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutAssetParameters|null);

                        /** ApplyRecommendationOperation call_asset. */
                        public call_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallAssetParameters|null);

                        /** ApplyRecommendationOperation sitelink_asset. */
                        public sitelink_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkAssetParameters|null);

                        /** ApplyRecommendationOperation raise_target_cpa. */
                        public raise_target_cpa?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaParameters|null);

                        /** ApplyRecommendationOperation lower_target_roas. */
                        public lower_target_roas?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ILowerTargetRoasParameters|null);

                        /** ApplyRecommendationOperation forecasting_set_target_cpa. */
                        public forecasting_set_target_cpa?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters|null);

                        /** ApplyRecommendationOperation set_target_cpa. */
                        public set_target_cpa?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters|null);

                        /** ApplyRecommendationOperation set_target_roas. */
                        public set_target_roas?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters|null);

                        /** ApplyRecommendationOperation lead_form_asset. */
                        public lead_form_asset?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.ILeadFormAssetParameters|null);

                        /** ApplyRecommendationOperation apply_parameters. */
                        public apply_parameters?: ("campaign_budget"|"text_ad"|"keyword"|"target_cpa_opt_in"|"target_roas_opt_in"|"callout_extension"|"call_extension"|"sitelink_extension"|"move_unused_budget"|"responsive_search_ad"|"use_broad_match_keyword"|"responsive_search_ad_asset"|"responsive_search_ad_improve_ad_strength"|"raise_target_cpa_bid_too_low"|"forecasting_set_target_roas"|"callout_asset"|"call_asset"|"sitelink_asset"|"raise_target_cpa"|"lower_target_roas"|"forecasting_set_target_cpa"|"set_target_cpa"|"set_target_roas"|"lead_form_asset");

                        /**
                         * Creates a new ApplyRecommendationOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplyRecommendationOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IApplyRecommendationOperation): google.ads.googleads.v23.services.ApplyRecommendationOperation;

                        /**
                         * Encodes the specified ApplyRecommendationOperation message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.verify|verify} messages.
                         * @param message ApplyRecommendationOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IApplyRecommendationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.verify|verify} messages.
                         * @param message ApplyRecommendationOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IApplyRecommendationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApplyRecommendationOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation;

                        /**
                         * Decodes an ApplyRecommendationOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApplyRecommendationOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation;

                        /**
                         * Verifies an ApplyRecommendationOperation message.
                         * @param message Plain 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 ApplyRecommendationOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApplyRecommendationOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation;

                        /**
                         * Creates a plain object from an ApplyRecommendationOperation message. Also converts values to other types if specified.
                         * @param message ApplyRecommendationOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApplyRecommendationOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ApplyRecommendationOperation {

                        /** Properties of a CampaignBudgetParameters. */
                        interface ICampaignBudgetParameters {

                            /** CampaignBudgetParameters new_budget_amount_micros */
                            new_budget_amount_micros?: (number|null);
                        }

                        /** Represents a CampaignBudgetParameters. */
                        class CampaignBudgetParameters implements ICampaignBudgetParameters {

                            /**
                             * Constructs a new CampaignBudgetParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICampaignBudgetParameters);

                            /** CampaignBudgetParameters new_budget_amount_micros. */
                            public new_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new CampaignBudgetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignBudgetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICampaignBudgetParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.CampaignBudgetParameters;

                            /**
                             * Encodes the specified CampaignBudgetParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CampaignBudgetParameters.verify|verify} messages.
                             * @param message CampaignBudgetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICampaignBudgetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignBudgetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CampaignBudgetParameters.verify|verify} messages.
                             * @param message CampaignBudgetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICampaignBudgetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignBudgetParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CampaignBudgetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.CampaignBudgetParameters;

                            /**
                             * Decodes a CampaignBudgetParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CampaignBudgetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.CampaignBudgetParameters;

                            /**
                             * Verifies a CampaignBudgetParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignBudgetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CampaignBudgetParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.CampaignBudgetParameters;

                            /**
                             * Creates a plain object from a CampaignBudgetParameters message. Also converts values to other types if specified.
                             * @param message CampaignBudgetParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.CampaignBudgetParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignBudgetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CampaignBudgetParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ForecastingSetTargetRoasParameters. */
                        interface IForecastingSetTargetRoasParameters {

                            /** ForecastingSetTargetRoasParameters target_roas */
                            target_roas?: (number|null);

                            /** ForecastingSetTargetRoasParameters campaign_budget_amount_micros */
                            campaign_budget_amount_micros?: (number|null);
                        }

                        /** Represents a ForecastingSetTargetRoasParameters. */
                        class ForecastingSetTargetRoasParameters implements IForecastingSetTargetRoasParameters {

                            /**
                             * Constructs a new ForecastingSetTargetRoasParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters);

                            /** ForecastingSetTargetRoasParameters target_roas. */
                            public target_roas?: (number|null);

                            /** ForecastingSetTargetRoasParameters campaign_budget_amount_micros. */
                            public campaign_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new ForecastingSetTargetRoasParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ForecastingSetTargetRoasParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters;

                            /**
                             * Encodes the specified ForecastingSetTargetRoasParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.verify|verify} messages.
                             * @param message ForecastingSetTargetRoasParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ForecastingSetTargetRoasParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.verify|verify} messages.
                             * @param message ForecastingSetTargetRoasParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetRoasParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ForecastingSetTargetRoasParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ForecastingSetTargetRoasParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters;

                            /**
                             * Decodes a ForecastingSetTargetRoasParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ForecastingSetTargetRoasParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters;

                            /**
                             * Verifies a ForecastingSetTargetRoasParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ForecastingSetTargetRoasParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ForecastingSetTargetRoasParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters;

                            /**
                             * Creates a plain object from a ForecastingSetTargetRoasParameters message. Also converts values to other types if specified.
                             * @param message ForecastingSetTargetRoasParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ForecastingSetTargetRoasParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ForecastingSetTargetRoasParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TextAdParameters. */
                        interface ITextAdParameters {

                            /** TextAdParameters ad */
                            ad?: (google.ads.googleads.v23.resources.IAd|null);
                        }

                        /** Represents a TextAdParameters. */
                        class TextAdParameters implements ITextAdParameters {

                            /**
                             * Constructs a new TextAdParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITextAdParameters);

                            /** TextAdParameters ad. */
                            public ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /**
                             * Creates a new TextAdParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TextAdParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITextAdParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.TextAdParameters;

                            /**
                             * Encodes the specified TextAdParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.TextAdParameters.verify|verify} messages.
                             * @param message TextAdParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITextAdParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TextAdParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.TextAdParameters.verify|verify} messages.
                             * @param message TextAdParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITextAdParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TextAdParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TextAdParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.TextAdParameters;

                            /**
                             * Decodes a TextAdParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TextAdParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.TextAdParameters;

                            /**
                             * Verifies a TextAdParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TextAdParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TextAdParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.TextAdParameters;

                            /**
                             * Creates a plain object from a TextAdParameters message. Also converts values to other types if specified.
                             * @param message TextAdParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.TextAdParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TextAdParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TextAdParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a KeywordParameters. */
                        interface IKeywordParameters {

                            /** KeywordParameters ad_group */
                            ad_group?: (string|null);

                            /** KeywordParameters match_type */
                            match_type?: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|null);

                            /** KeywordParameters cpc_bid_micros */
                            cpc_bid_micros?: (number|null);
                        }

                        /** Represents a KeywordParameters. */
                        class KeywordParameters implements IKeywordParameters {

                            /**
                             * Constructs a new KeywordParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IKeywordParameters);

                            /** KeywordParameters ad_group. */
                            public ad_group?: (string|null);

                            /** KeywordParameters match_type. */
                            public match_type: (google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v23.enums.KeywordMatchTypeEnum.KeywordMatchType);

                            /** KeywordParameters cpc_bid_micros. */
                            public cpc_bid_micros?: (number|null);

                            /**
                             * Creates a new KeywordParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns KeywordParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IKeywordParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.KeywordParameters;

                            /**
                             * Encodes the specified KeywordParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.KeywordParameters.verify|verify} messages.
                             * @param message KeywordParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IKeywordParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified KeywordParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.KeywordParameters.verify|verify} messages.
                             * @param message KeywordParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IKeywordParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a KeywordParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns KeywordParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.KeywordParameters;

                            /**
                             * Decodes a KeywordParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns KeywordParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.KeywordParameters;

                            /**
                             * Verifies a KeywordParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a KeywordParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns KeywordParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.KeywordParameters;

                            /**
                             * Creates a plain object from a KeywordParameters message. Also converts values to other types if specified.
                             * @param message KeywordParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.KeywordParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this KeywordParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for KeywordParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetCpaOptInParameters. */
                        interface ITargetCpaOptInParameters {

                            /** TargetCpaOptInParameters target_cpa_micros */
                            target_cpa_micros?: (number|null);

                            /** TargetCpaOptInParameters new_campaign_budget_amount_micros */
                            new_campaign_budget_amount_micros?: (number|null);
                        }

                        /** Represents a TargetCpaOptInParameters. */
                        class TargetCpaOptInParameters implements ITargetCpaOptInParameters {

                            /**
                             * Constructs a new TargetCpaOptInParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetCpaOptInParameters);

                            /** TargetCpaOptInParameters target_cpa_micros. */
                            public target_cpa_micros?: (number|null);

                            /** TargetCpaOptInParameters new_campaign_budget_amount_micros. */
                            public new_campaign_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new TargetCpaOptInParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetCpaOptInParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetCpaOptInParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetCpaOptInParameters;

                            /**
                             * Encodes the specified TargetCpaOptInParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetCpaOptInParameters.verify|verify} messages.
                             * @param message TargetCpaOptInParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetCpaOptInParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetCpaOptInParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetCpaOptInParameters.verify|verify} messages.
                             * @param message TargetCpaOptInParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetCpaOptInParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetCpaOptInParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetCpaOptInParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetCpaOptInParameters;

                            /**
                             * Decodes a TargetCpaOptInParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetCpaOptInParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetCpaOptInParameters;

                            /**
                             * Verifies a TargetCpaOptInParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetCpaOptInParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetCpaOptInParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetCpaOptInParameters;

                            /**
                             * Creates a plain object from a TargetCpaOptInParameters message. Also converts values to other types if specified.
                             * @param message TargetCpaOptInParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetCpaOptInParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetCpaOptInParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetCpaOptInParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetRoasOptInParameters. */
                        interface ITargetRoasOptInParameters {

                            /** TargetRoasOptInParameters target_roas */
                            target_roas?: (number|null);

                            /** TargetRoasOptInParameters new_campaign_budget_amount_micros */
                            new_campaign_budget_amount_micros?: (number|null);
                        }

                        /** Represents a TargetRoasOptInParameters. */
                        class TargetRoasOptInParameters implements ITargetRoasOptInParameters {

                            /**
                             * Constructs a new TargetRoasOptInParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetRoasOptInParameters);

                            /** TargetRoasOptInParameters target_roas. */
                            public target_roas?: (number|null);

                            /** TargetRoasOptInParameters new_campaign_budget_amount_micros. */
                            public new_campaign_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new TargetRoasOptInParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetRoasOptInParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetRoasOptInParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetRoasOptInParameters;

                            /**
                             * Encodes the specified TargetRoasOptInParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetRoasOptInParameters.verify|verify} messages.
                             * @param message TargetRoasOptInParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetRoasOptInParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetRoasOptInParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetRoasOptInParameters.verify|verify} messages.
                             * @param message TargetRoasOptInParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ITargetRoasOptInParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetRoasOptInParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetRoasOptInParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetRoasOptInParameters;

                            /**
                             * Decodes a TargetRoasOptInParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetRoasOptInParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetRoasOptInParameters;

                            /**
                             * Verifies a TargetRoasOptInParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetRoasOptInParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetRoasOptInParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetRoasOptInParameters;

                            /**
                             * Creates a plain object from a TargetRoasOptInParameters message. Also converts values to other types if specified.
                             * @param message TargetRoasOptInParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.TargetRoasOptInParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetRoasOptInParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetRoasOptInParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CalloutExtensionParameters. */
                        interface ICalloutExtensionParameters {

                            /** CalloutExtensionParameters callout_extensions */
                            callout_extensions?: (google.ads.googleads.v23.common.ICalloutFeedItem[]|null);
                        }

                        /** Represents a CalloutExtensionParameters. */
                        class CalloutExtensionParameters implements ICalloutExtensionParameters {

                            /**
                             * Constructs a new CalloutExtensionParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutExtensionParameters);

                            /** CalloutExtensionParameters callout_extensions. */
                            public callout_extensions: google.ads.googleads.v23.common.ICalloutFeedItem[];

                            /**
                             * Creates a new CalloutExtensionParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CalloutExtensionParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutExtensionParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutExtensionParameters;

                            /**
                             * Encodes the specified CalloutExtensionParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutExtensionParameters.verify|verify} messages.
                             * @param message CalloutExtensionParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CalloutExtensionParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutExtensionParameters.verify|verify} messages.
                             * @param message CalloutExtensionParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CalloutExtensionParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CalloutExtensionParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutExtensionParameters;

                            /**
                             * Decodes a CalloutExtensionParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CalloutExtensionParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutExtensionParameters;

                            /**
                             * Verifies a CalloutExtensionParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CalloutExtensionParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CalloutExtensionParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutExtensionParameters;

                            /**
                             * Creates a plain object from a CalloutExtensionParameters message. Also converts values to other types if specified.
                             * @param message CalloutExtensionParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutExtensionParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CalloutExtensionParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CalloutExtensionParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CallExtensionParameters. */
                        interface ICallExtensionParameters {

                            /** CallExtensionParameters call_extensions */
                            call_extensions?: (google.ads.googleads.v23.common.ICallFeedItem[]|null);
                        }

                        /** Represents a CallExtensionParameters. */
                        class CallExtensionParameters implements ICallExtensionParameters {

                            /**
                             * Constructs a new CallExtensionParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallExtensionParameters);

                            /** CallExtensionParameters call_extensions. */
                            public call_extensions: google.ads.googleads.v23.common.ICallFeedItem[];

                            /**
                             * Creates a new CallExtensionParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CallExtensionParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallExtensionParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallExtensionParameters;

                            /**
                             * Encodes the specified CallExtensionParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CallExtensionParameters.verify|verify} messages.
                             * @param message CallExtensionParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CallExtensionParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CallExtensionParameters.verify|verify} messages.
                             * @param message CallExtensionParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CallExtensionParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CallExtensionParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallExtensionParameters;

                            /**
                             * Decodes a CallExtensionParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CallExtensionParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallExtensionParameters;

                            /**
                             * Verifies a CallExtensionParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CallExtensionParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CallExtensionParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallExtensionParameters;

                            /**
                             * Creates a plain object from a CallExtensionParameters message. Also converts values to other types if specified.
                             * @param message CallExtensionParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.CallExtensionParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CallExtensionParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CallExtensionParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SitelinkExtensionParameters. */
                        interface ISitelinkExtensionParameters {

                            /** SitelinkExtensionParameters sitelink_extensions */
                            sitelink_extensions?: (google.ads.googleads.v23.common.ISitelinkFeedItem[]|null);
                        }

                        /** Represents a SitelinkExtensionParameters. */
                        class SitelinkExtensionParameters implements ISitelinkExtensionParameters {

                            /**
                             * Constructs a new SitelinkExtensionParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkExtensionParameters);

                            /** SitelinkExtensionParameters sitelink_extensions. */
                            public sitelink_extensions: google.ads.googleads.v23.common.ISitelinkFeedItem[];

                            /**
                             * Creates a new SitelinkExtensionParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SitelinkExtensionParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkExtensionParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkExtensionParameters;

                            /**
                             * Encodes the specified SitelinkExtensionParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkExtensionParameters.verify|verify} messages.
                             * @param message SitelinkExtensionParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SitelinkExtensionParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkExtensionParameters.verify|verify} messages.
                             * @param message SitelinkExtensionParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SitelinkExtensionParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SitelinkExtensionParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkExtensionParameters;

                            /**
                             * Decodes a SitelinkExtensionParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SitelinkExtensionParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkExtensionParameters;

                            /**
                             * Verifies a SitelinkExtensionParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SitelinkExtensionParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SitelinkExtensionParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkExtensionParameters;

                            /**
                             * Creates a plain object from a SitelinkExtensionParameters message. Also converts values to other types if specified.
                             * @param message SitelinkExtensionParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkExtensionParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SitelinkExtensionParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SitelinkExtensionParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CalloutAssetParameters. */
                        interface ICalloutAssetParameters {

                            /** CalloutAssetParameters ad_asset_apply_parameters */
                            ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);
                        }

                        /** Represents a CalloutAssetParameters. */
                        class CalloutAssetParameters implements ICalloutAssetParameters {

                            /**
                             * Constructs a new CalloutAssetParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutAssetParameters);

                            /** CalloutAssetParameters ad_asset_apply_parameters. */
                            public ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);

                            /**
                             * Creates a new CalloutAssetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CalloutAssetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutAssetParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutAssetParameters;

                            /**
                             * Encodes the specified CalloutAssetParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutAssetParameters.verify|verify} messages.
                             * @param message CalloutAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CalloutAssetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutAssetParameters.verify|verify} messages.
                             * @param message CalloutAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICalloutAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CalloutAssetParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CalloutAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutAssetParameters;

                            /**
                             * Decodes a CalloutAssetParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CalloutAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutAssetParameters;

                            /**
                             * Verifies a CalloutAssetParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CalloutAssetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CalloutAssetParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutAssetParameters;

                            /**
                             * Creates a plain object from a CalloutAssetParameters message. Also converts values to other types if specified.
                             * @param message CalloutAssetParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.CalloutAssetParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CalloutAssetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CalloutAssetParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a CallAssetParameters. */
                        interface ICallAssetParameters {

                            /** CallAssetParameters ad_asset_apply_parameters */
                            ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);
                        }

                        /** Represents a CallAssetParameters. */
                        class CallAssetParameters implements ICallAssetParameters {

                            /**
                             * Constructs a new CallAssetParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallAssetParameters);

                            /** CallAssetParameters ad_asset_apply_parameters. */
                            public ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);

                            /**
                             * Creates a new CallAssetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CallAssetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallAssetParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallAssetParameters;

                            /**
                             * Encodes the specified CallAssetParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CallAssetParameters.verify|verify} messages.
                             * @param message CallAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CallAssetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.CallAssetParameters.verify|verify} messages.
                             * @param message CallAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ICallAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CallAssetParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CallAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallAssetParameters;

                            /**
                             * Decodes a CallAssetParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CallAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallAssetParameters;

                            /**
                             * Verifies a CallAssetParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CallAssetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CallAssetParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.CallAssetParameters;

                            /**
                             * Creates a plain object from a CallAssetParameters message. Also converts values to other types if specified.
                             * @param message CallAssetParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.CallAssetParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CallAssetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CallAssetParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SitelinkAssetParameters. */
                        interface ISitelinkAssetParameters {

                            /** SitelinkAssetParameters ad_asset_apply_parameters */
                            ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);
                        }

                        /** Represents a SitelinkAssetParameters. */
                        class SitelinkAssetParameters implements ISitelinkAssetParameters {

                            /**
                             * Constructs a new SitelinkAssetParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkAssetParameters);

                            /** SitelinkAssetParameters ad_asset_apply_parameters. */
                            public ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);

                            /**
                             * Creates a new SitelinkAssetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SitelinkAssetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkAssetParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkAssetParameters;

                            /**
                             * Encodes the specified SitelinkAssetParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkAssetParameters.verify|verify} messages.
                             * @param message SitelinkAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SitelinkAssetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkAssetParameters.verify|verify} messages.
                             * @param message SitelinkAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ISitelinkAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SitelinkAssetParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SitelinkAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkAssetParameters;

                            /**
                             * Decodes a SitelinkAssetParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SitelinkAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkAssetParameters;

                            /**
                             * Verifies a SitelinkAssetParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SitelinkAssetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SitelinkAssetParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkAssetParameters;

                            /**
                             * Creates a plain object from a SitelinkAssetParameters message. Also converts values to other types if specified.
                             * @param message SitelinkAssetParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.SitelinkAssetParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SitelinkAssetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SitelinkAssetParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RaiseTargetCpaParameters. */
                        interface IRaiseTargetCpaParameters {

                            /** RaiseTargetCpaParameters target_cpa_multiplier */
                            target_cpa_multiplier?: (number|null);
                        }

                        /** Represents a RaiseTargetCpaParameters. */
                        class RaiseTargetCpaParameters implements IRaiseTargetCpaParameters {

                            /**
                             * Constructs a new RaiseTargetCpaParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaParameters);

                            /** RaiseTargetCpaParameters target_cpa_multiplier. */
                            public target_cpa_multiplier: number;

                            /**
                             * Creates a new RaiseTargetCpaParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RaiseTargetCpaParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaParameters;

                            /**
                             * Encodes the specified RaiseTargetCpaParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.verify|verify} messages.
                             * @param message RaiseTargetCpaParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RaiseTargetCpaParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.verify|verify} messages.
                             * @param message RaiseTargetCpaParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RaiseTargetCpaParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RaiseTargetCpaParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaParameters;

                            /**
                             * Decodes a RaiseTargetCpaParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RaiseTargetCpaParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaParameters;

                            /**
                             * Verifies a RaiseTargetCpaParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RaiseTargetCpaParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RaiseTargetCpaParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaParameters;

                            /**
                             * Creates a plain object from a RaiseTargetCpaParameters message. Also converts values to other types if specified.
                             * @param message RaiseTargetCpaParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RaiseTargetCpaParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RaiseTargetCpaParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a LowerTargetRoasParameters. */
                        interface ILowerTargetRoasParameters {

                            /** LowerTargetRoasParameters target_roas_multiplier */
                            target_roas_multiplier?: (number|null);
                        }

                        /** Represents a LowerTargetRoasParameters. */
                        class LowerTargetRoasParameters implements ILowerTargetRoasParameters {

                            /**
                             * Constructs a new LowerTargetRoasParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILowerTargetRoasParameters);

                            /** LowerTargetRoasParameters target_roas_multiplier. */
                            public target_roas_multiplier: number;

                            /**
                             * Creates a new LowerTargetRoasParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LowerTargetRoasParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILowerTargetRoasParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.LowerTargetRoasParameters;

                            /**
                             * Encodes the specified LowerTargetRoasParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.LowerTargetRoasParameters.verify|verify} messages.
                             * @param message LowerTargetRoasParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILowerTargetRoasParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LowerTargetRoasParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.LowerTargetRoasParameters.verify|verify} messages.
                             * @param message LowerTargetRoasParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILowerTargetRoasParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LowerTargetRoasParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LowerTargetRoasParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.LowerTargetRoasParameters;

                            /**
                             * Decodes a LowerTargetRoasParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LowerTargetRoasParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.LowerTargetRoasParameters;

                            /**
                             * Verifies a LowerTargetRoasParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LowerTargetRoasParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LowerTargetRoasParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.LowerTargetRoasParameters;

                            /**
                             * Creates a plain object from a LowerTargetRoasParameters message. Also converts values to other types if specified.
                             * @param message LowerTargetRoasParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.LowerTargetRoasParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LowerTargetRoasParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LowerTargetRoasParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AdAssetApplyParameters. */
                        interface IAdAssetApplyParameters {

                            /** AdAssetApplyParameters new_assets */
                            new_assets?: (google.ads.googleads.v23.resources.IAsset[]|null);

                            /** AdAssetApplyParameters existing_assets */
                            existing_assets?: (string[]|null);

                            /** AdAssetApplyParameters scope */
                            scope?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope|keyof typeof google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope|null);
                        }

                        /** Represents an AdAssetApplyParameters. */
                        class AdAssetApplyParameters implements IAdAssetApplyParameters {

                            /**
                             * Constructs a new AdAssetApplyParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters);

                            /** AdAssetApplyParameters new_assets. */
                            public new_assets: google.ads.googleads.v23.resources.IAsset[];

                            /** AdAssetApplyParameters existing_assets. */
                            public existing_assets: string[];

                            /** AdAssetApplyParameters scope. */
                            public scope: (google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope|keyof typeof google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope);

                            /**
                             * Creates a new AdAssetApplyParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdAssetApplyParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters;

                            /**
                             * Encodes the specified AdAssetApplyParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters.verify|verify} messages.
                             * @param message AdAssetApplyParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdAssetApplyParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters.verify|verify} messages.
                             * @param message AdAssetApplyParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdAssetApplyParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdAssetApplyParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters;

                            /**
                             * Decodes an AdAssetApplyParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdAssetApplyParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters;

                            /**
                             * Verifies an AdAssetApplyParameters message.
                             * @param message Plain 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 AdAssetApplyParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdAssetApplyParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters;

                            /**
                             * Creates a plain object from an AdAssetApplyParameters message. Also converts values to other types if specified.
                             * @param message AdAssetApplyParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.AdAssetApplyParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdAssetApplyParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdAssetApplyParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace AdAssetApplyParameters {

                            /** ApplyScope enum. */
                            enum ApplyScope {
                                UNSPECIFIED = 0,
                                UNKNOWN = 1,
                                CUSTOMER = 2,
                                CAMPAIGN = 3
                            }
                        }

                        /** Properties of a MoveUnusedBudgetParameters. */
                        interface IMoveUnusedBudgetParameters {

                            /** MoveUnusedBudgetParameters budget_micros_to_move */
                            budget_micros_to_move?: (number|null);
                        }

                        /** Represents a MoveUnusedBudgetParameters. */
                        class MoveUnusedBudgetParameters implements IMoveUnusedBudgetParameters {

                            /**
                             * Constructs a new MoveUnusedBudgetParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters);

                            /** MoveUnusedBudgetParameters budget_micros_to_move. */
                            public budget_micros_to_move?: (number|null);

                            /**
                             * Creates a new MoveUnusedBudgetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MoveUnusedBudgetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters;

                            /**
                             * Encodes the specified MoveUnusedBudgetParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.verify|verify} messages.
                             * @param message MoveUnusedBudgetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MoveUnusedBudgetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.verify|verify} messages.
                             * @param message MoveUnusedBudgetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MoveUnusedBudgetParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MoveUnusedBudgetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters;

                            /**
                             * Decodes a MoveUnusedBudgetParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MoveUnusedBudgetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters;

                            /**
                             * Verifies a MoveUnusedBudgetParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MoveUnusedBudgetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MoveUnusedBudgetParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters;

                            /**
                             * Creates a plain object from a MoveUnusedBudgetParameters message. Also converts values to other types if specified.
                             * @param message MoveUnusedBudgetParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MoveUnusedBudgetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MoveUnusedBudgetParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ResponsiveSearchAdAssetParameters. */
                        interface IResponsiveSearchAdAssetParameters {

                            /** ResponsiveSearchAdAssetParameters updated_ad */
                            updated_ad?: (google.ads.googleads.v23.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdAssetParameters. */
                        class ResponsiveSearchAdAssetParameters implements IResponsiveSearchAdAssetParameters {

                            /**
                             * Constructs a new ResponsiveSearchAdAssetParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdAssetParameters);

                            /** ResponsiveSearchAdAssetParameters updated_ad. */
                            public updated_ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /**
                             * Creates a new ResponsiveSearchAdAssetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ResponsiveSearchAdAssetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdAssetParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters;

                            /**
                             * Encodes the specified ResponsiveSearchAdAssetParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.verify|verify} messages.
                             * @param message ResponsiveSearchAdAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdAssetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.verify|verify} messages.
                             * @param message ResponsiveSearchAdAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdAssetParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ResponsiveSearchAdAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters;

                            /**
                             * Decodes a ResponsiveSearchAdAssetParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ResponsiveSearchAdAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters;

                            /**
                             * Verifies a ResponsiveSearchAdAssetParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdAssetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ResponsiveSearchAdAssetParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdAssetParameters message. Also converts values to other types if specified.
                             * @param message ResponsiveSearchAdAssetParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdAssetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ResponsiveSearchAdAssetParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ResponsiveSearchAdImproveAdStrengthParameters. */
                        interface IResponsiveSearchAdImproveAdStrengthParameters {

                            /** ResponsiveSearchAdImproveAdStrengthParameters updated_ad */
                            updated_ad?: (google.ads.googleads.v23.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdImproveAdStrengthParameters. */
                        class ResponsiveSearchAdImproveAdStrengthParameters implements IResponsiveSearchAdImproveAdStrengthParameters {

                            /**
                             * Constructs a new ResponsiveSearchAdImproveAdStrengthParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdImproveAdStrengthParameters);

                            /** ResponsiveSearchAdImproveAdStrengthParameters updated_ad. */
                            public updated_ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /**
                             * Creates a new ResponsiveSearchAdImproveAdStrengthParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ResponsiveSearchAdImproveAdStrengthParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdImproveAdStrengthParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters;

                            /**
                             * Encodes the specified ResponsiveSearchAdImproveAdStrengthParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.verify|verify} messages.
                             * @param message ResponsiveSearchAdImproveAdStrengthParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdImproveAdStrengthParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdImproveAdStrengthParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.verify|verify} messages.
                             * @param message ResponsiveSearchAdImproveAdStrengthParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdImproveAdStrengthParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdImproveAdStrengthParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ResponsiveSearchAdImproveAdStrengthParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters;

                            /**
                             * Decodes a ResponsiveSearchAdImproveAdStrengthParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ResponsiveSearchAdImproveAdStrengthParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters;

                            /**
                             * Verifies a ResponsiveSearchAdImproveAdStrengthParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdImproveAdStrengthParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ResponsiveSearchAdImproveAdStrengthParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdImproveAdStrengthParameters message. Also converts values to other types if specified.
                             * @param message ResponsiveSearchAdImproveAdStrengthParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdImproveAdStrengthParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ResponsiveSearchAdImproveAdStrengthParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ResponsiveSearchAdParameters. */
                        interface IResponsiveSearchAdParameters {

                            /** ResponsiveSearchAdParameters ad */
                            ad?: (google.ads.googleads.v23.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdParameters. */
                        class ResponsiveSearchAdParameters implements IResponsiveSearchAdParameters {

                            /**
                             * Constructs a new ResponsiveSearchAdParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters);

                            /** ResponsiveSearchAdParameters ad. */
                            public ad?: (google.ads.googleads.v23.resources.IAd|null);

                            /**
                             * Creates a new ResponsiveSearchAdParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ResponsiveSearchAdParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters;

                            /**
                             * Encodes the specified ResponsiveSearchAdParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.verify|verify} messages.
                             * @param message ResponsiveSearchAdParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.verify|verify} messages.
                             * @param message ResponsiveSearchAdParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ResponsiveSearchAdParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters;

                            /**
                             * Decodes a ResponsiveSearchAdParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ResponsiveSearchAdParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters;

                            /**
                             * Verifies a ResponsiveSearchAdParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ResponsiveSearchAdParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdParameters message. Also converts values to other types if specified.
                             * @param message ResponsiveSearchAdParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ResponsiveSearchAdParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RaiseTargetCpaBidTooLowParameters. */
                        interface IRaiseTargetCpaBidTooLowParameters {

                            /** RaiseTargetCpaBidTooLowParameters target_multiplier */
                            target_multiplier?: (number|null);
                        }

                        /** Represents a RaiseTargetCpaBidTooLowParameters. */
                        class RaiseTargetCpaBidTooLowParameters implements IRaiseTargetCpaBidTooLowParameters {

                            /**
                             * Constructs a new RaiseTargetCpaBidTooLowParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaBidTooLowParameters);

                            /** RaiseTargetCpaBidTooLowParameters target_multiplier. */
                            public target_multiplier: number;

                            /**
                             * Creates a new RaiseTargetCpaBidTooLowParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RaiseTargetCpaBidTooLowParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaBidTooLowParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters;

                            /**
                             * Encodes the specified RaiseTargetCpaBidTooLowParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.verify|verify} messages.
                             * @param message RaiseTargetCpaBidTooLowParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaBidTooLowParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RaiseTargetCpaBidTooLowParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.verify|verify} messages.
                             * @param message RaiseTargetCpaBidTooLowParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IRaiseTargetCpaBidTooLowParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RaiseTargetCpaBidTooLowParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RaiseTargetCpaBidTooLowParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters;

                            /**
                             * Decodes a RaiseTargetCpaBidTooLowParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RaiseTargetCpaBidTooLowParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters;

                            /**
                             * Verifies a RaiseTargetCpaBidTooLowParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RaiseTargetCpaBidTooLowParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RaiseTargetCpaBidTooLowParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters;

                            /**
                             * Creates a plain object from a RaiseTargetCpaBidTooLowParameters message. Also converts values to other types if specified.
                             * @param message RaiseTargetCpaBidTooLowParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RaiseTargetCpaBidTooLowParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RaiseTargetCpaBidTooLowParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a UseBroadMatchKeywordParameters. */
                        interface IUseBroadMatchKeywordParameters {

                            /** UseBroadMatchKeywordParameters new_budget_amount_micros */
                            new_budget_amount_micros?: (number|null);
                        }

                        /** Represents a UseBroadMatchKeywordParameters. */
                        class UseBroadMatchKeywordParameters implements IUseBroadMatchKeywordParameters {

                            /**
                             * Constructs a new UseBroadMatchKeywordParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IUseBroadMatchKeywordParameters);

                            /** UseBroadMatchKeywordParameters new_budget_amount_micros. */
                            public new_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new UseBroadMatchKeywordParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns UseBroadMatchKeywordParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IUseBroadMatchKeywordParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters;

                            /**
                             * Encodes the specified UseBroadMatchKeywordParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.verify|verify} messages.
                             * @param message UseBroadMatchKeywordParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IUseBroadMatchKeywordParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified UseBroadMatchKeywordParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.verify|verify} messages.
                             * @param message UseBroadMatchKeywordParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IUseBroadMatchKeywordParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a UseBroadMatchKeywordParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns UseBroadMatchKeywordParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters;

                            /**
                             * Decodes a UseBroadMatchKeywordParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns UseBroadMatchKeywordParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters;

                            /**
                             * Verifies a UseBroadMatchKeywordParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a UseBroadMatchKeywordParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns UseBroadMatchKeywordParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters;

                            /**
                             * Creates a plain object from a UseBroadMatchKeywordParameters message. Also converts values to other types if specified.
                             * @param message UseBroadMatchKeywordParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this UseBroadMatchKeywordParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for UseBroadMatchKeywordParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a ForecastingSetTargetCpaParameters. */
                        interface IForecastingSetTargetCpaParameters {

                            /** ForecastingSetTargetCpaParameters target_cpa_micros */
                            target_cpa_micros?: (number|null);

                            /** ForecastingSetTargetCpaParameters campaign_budget_amount_micros */
                            campaign_budget_amount_micros?: (number|null);
                        }

                        /** Represents a ForecastingSetTargetCpaParameters. */
                        class ForecastingSetTargetCpaParameters implements IForecastingSetTargetCpaParameters {

                            /**
                             * Constructs a new ForecastingSetTargetCpaParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters);

                            /** ForecastingSetTargetCpaParameters target_cpa_micros. */
                            public target_cpa_micros?: (number|null);

                            /** ForecastingSetTargetCpaParameters campaign_budget_amount_micros. */
                            public campaign_budget_amount_micros?: (number|null);

                            /**
                             * Creates a new ForecastingSetTargetCpaParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ForecastingSetTargetCpaParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetCpaParameters;

                            /**
                             * Encodes the specified ForecastingSetTargetCpaParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetCpaParameters.verify|verify} messages.
                             * @param message ForecastingSetTargetCpaParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ForecastingSetTargetCpaParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetCpaParameters.verify|verify} messages.
                             * @param message ForecastingSetTargetCpaParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.IForecastingSetTargetCpaParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ForecastingSetTargetCpaParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ForecastingSetTargetCpaParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetCpaParameters;

                            /**
                             * Decodes a ForecastingSetTargetCpaParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ForecastingSetTargetCpaParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetCpaParameters;

                            /**
                             * Verifies a ForecastingSetTargetCpaParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ForecastingSetTargetCpaParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ForecastingSetTargetCpaParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetCpaParameters;

                            /**
                             * Creates a plain object from a ForecastingSetTargetCpaParameters message. Also converts values to other types if specified.
                             * @param message ForecastingSetTargetCpaParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ForecastingSetTargetCpaParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ForecastingSetTargetCpaParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ForecastingSetTargetCpaParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a LeadFormAssetParameters. */
                        interface ILeadFormAssetParameters {

                            /** LeadFormAssetParameters ad_asset_apply_parameters */
                            ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);

                            /** LeadFormAssetParameters set_submit_lead_form_asset_campaign_goal */
                            set_submit_lead_form_asset_campaign_goal?: (boolean|null);
                        }

                        /** Represents a LeadFormAssetParameters. */
                        class LeadFormAssetParameters implements ILeadFormAssetParameters {

                            /**
                             * Constructs a new LeadFormAssetParameters.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILeadFormAssetParameters);

                            /** LeadFormAssetParameters ad_asset_apply_parameters. */
                            public ad_asset_apply_parameters?: (google.ads.googleads.v23.services.ApplyRecommendationOperation.IAdAssetApplyParameters|null);

                            /** LeadFormAssetParameters set_submit_lead_form_asset_campaign_goal. */
                            public set_submit_lead_form_asset_campaign_goal?: (boolean|null);

                            /**
                             * Creates a new LeadFormAssetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LeadFormAssetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILeadFormAssetParameters): google.ads.googleads.v23.services.ApplyRecommendationOperation.LeadFormAssetParameters;

                            /**
                             * Encodes the specified LeadFormAssetParameters message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.LeadFormAssetParameters.verify|verify} messages.
                             * @param message LeadFormAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILeadFormAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LeadFormAssetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationOperation.LeadFormAssetParameters.verify|verify} messages.
                             * @param message LeadFormAssetParameters message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.ILeadFormAssetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LeadFormAssetParameters message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LeadFormAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationOperation.LeadFormAssetParameters;

                            /**
                             * Decodes a LeadFormAssetParameters message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LeadFormAssetParameters
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationOperation.LeadFormAssetParameters;

                            /**
                             * Verifies a LeadFormAssetParameters message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LeadFormAssetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LeadFormAssetParameters
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationOperation.LeadFormAssetParameters;

                            /**
                             * Creates a plain object from a LeadFormAssetParameters message. Also converts values to other types if specified.
                             * @param message LeadFormAssetParameters
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationOperation.LeadFormAssetParameters, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LeadFormAssetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LeadFormAssetParameters
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an ApplyRecommendationResponse. */
                    interface IApplyRecommendationResponse {

                        /** ApplyRecommendationResponse results */
                        results?: (google.ads.googleads.v23.services.IApplyRecommendationResult[]|null);

                        /** ApplyRecommendationResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents an ApplyRecommendationResponse. */
                    class ApplyRecommendationResponse implements IApplyRecommendationResponse {

                        /**
                         * Constructs a new ApplyRecommendationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IApplyRecommendationResponse);

                        /** ApplyRecommendationResponse results. */
                        public results: google.ads.googleads.v23.services.IApplyRecommendationResult[];

                        /** ApplyRecommendationResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new ApplyRecommendationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplyRecommendationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IApplyRecommendationResponse): google.ads.googleads.v23.services.ApplyRecommendationResponse;

                        /**
                         * Encodes the specified ApplyRecommendationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationResponse.verify|verify} messages.
                         * @param message ApplyRecommendationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IApplyRecommendationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationResponse.verify|verify} messages.
                         * @param message ApplyRecommendationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IApplyRecommendationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApplyRecommendationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationResponse;

                        /**
                         * Decodes an ApplyRecommendationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApplyRecommendationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationResponse;

                        /**
                         * Verifies an ApplyRecommendationResponse message.
                         * @param message Plain 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 ApplyRecommendationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApplyRecommendationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationResponse;

                        /**
                         * Creates a plain object from an ApplyRecommendationResponse message. Also converts values to other types if specified.
                         * @param message ApplyRecommendationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApplyRecommendationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ApplyRecommendationResult. */
                    interface IApplyRecommendationResult {

                        /** ApplyRecommendationResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents an ApplyRecommendationResult. */
                    class ApplyRecommendationResult implements IApplyRecommendationResult {

                        /**
                         * Constructs a new ApplyRecommendationResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IApplyRecommendationResult);

                        /** ApplyRecommendationResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new ApplyRecommendationResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplyRecommendationResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IApplyRecommendationResult): google.ads.googleads.v23.services.ApplyRecommendationResult;

                        /**
                         * Encodes the specified ApplyRecommendationResult message. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationResult.verify|verify} messages.
                         * @param message ApplyRecommendationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IApplyRecommendationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ApplyRecommendationResult.verify|verify} messages.
                         * @param message ApplyRecommendationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IApplyRecommendationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApplyRecommendationResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ApplyRecommendationResult;

                        /**
                         * Decodes an ApplyRecommendationResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApplyRecommendationResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ApplyRecommendationResult;

                        /**
                         * Verifies an ApplyRecommendationResult message.
                         * @param message Plain 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 ApplyRecommendationResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApplyRecommendationResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ApplyRecommendationResult;

                        /**
                         * Creates a plain object from an ApplyRecommendationResult message. Also converts values to other types if specified.
                         * @param message ApplyRecommendationResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ApplyRecommendationResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApplyRecommendationResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DismissRecommendationRequest. */
                    interface IDismissRecommendationRequest {

                        /** DismissRecommendationRequest customer_id */
                        customer_id?: (string|null);

                        /** DismissRecommendationRequest operations */
                        operations?: (google.ads.googleads.v23.services.DismissRecommendationRequest.IDismissRecommendationOperation[]|null);

                        /** DismissRecommendationRequest partial_failure */
                        partial_failure?: (boolean|null);
                    }

                    /** Represents a DismissRecommendationRequest. */
                    class DismissRecommendationRequest implements IDismissRecommendationRequest {

                        /**
                         * Constructs a new DismissRecommendationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IDismissRecommendationRequest);

                        /** DismissRecommendationRequest customer_id. */
                        public customer_id: string;

                        /** DismissRecommendationRequest operations. */
                        public operations: google.ads.googleads.v23.services.DismissRecommendationRequest.IDismissRecommendationOperation[];

                        /** DismissRecommendationRequest partial_failure. */
                        public partial_failure: boolean;

                        /**
                         * Creates a new DismissRecommendationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DismissRecommendationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IDismissRecommendationRequest): google.ads.googleads.v23.services.DismissRecommendationRequest;

                        /**
                         * Encodes the specified DismissRecommendationRequest message. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationRequest.verify|verify} messages.
                         * @param message DismissRecommendationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IDismissRecommendationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DismissRecommendationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationRequest.verify|verify} messages.
                         * @param message DismissRecommendationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IDismissRecommendationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DismissRecommendationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DismissRecommendationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.DismissRecommendationRequest;

                        /**
                         * Decodes a DismissRecommendationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DismissRecommendationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.DismissRecommendationRequest;

                        /**
                         * Verifies a DismissRecommendationRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DismissRecommendationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DismissRecommendationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.DismissRecommendationRequest;

                        /**
                         * Creates a plain object from a DismissRecommendationRequest message. Also converts values to other types if specified.
                         * @param message DismissRecommendationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.DismissRecommendationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DismissRecommendationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DismissRecommendationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DismissRecommendationRequest {

                        /** Properties of a DismissRecommendationOperation. */
                        interface IDismissRecommendationOperation {

                            /** DismissRecommendationOperation resource_name */
                            resource_name?: (string|null);
                        }

                        /** Represents a DismissRecommendationOperation. */
                        class DismissRecommendationOperation implements IDismissRecommendationOperation {

                            /**
                             * Constructs a new DismissRecommendationOperation.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.DismissRecommendationRequest.IDismissRecommendationOperation);

                            /** DismissRecommendationOperation resource_name. */
                            public resource_name: string;

                            /**
                             * Creates a new DismissRecommendationOperation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DismissRecommendationOperation instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.DismissRecommendationRequest.IDismissRecommendationOperation): google.ads.googleads.v23.services.DismissRecommendationRequest.DismissRecommendationOperation;

                            /**
                             * Encodes the specified DismissRecommendationOperation message. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationRequest.DismissRecommendationOperation.verify|verify} messages.
                             * @param message DismissRecommendationOperation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.DismissRecommendationRequest.IDismissRecommendationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DismissRecommendationOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationRequest.DismissRecommendationOperation.verify|verify} messages.
                             * @param message DismissRecommendationOperation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.DismissRecommendationRequest.IDismissRecommendationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DismissRecommendationOperation message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DismissRecommendationOperation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.DismissRecommendationRequest.DismissRecommendationOperation;

                            /**
                             * Decodes a DismissRecommendationOperation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DismissRecommendationOperation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.DismissRecommendationRequest.DismissRecommendationOperation;

                            /**
                             * Verifies a DismissRecommendationOperation message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DismissRecommendationOperation message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DismissRecommendationOperation
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.DismissRecommendationRequest.DismissRecommendationOperation;

                            /**
                             * Creates a plain object from a DismissRecommendationOperation message. Also converts values to other types if specified.
                             * @param message DismissRecommendationOperation
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.DismissRecommendationRequest.DismissRecommendationOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DismissRecommendationOperation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DismissRecommendationOperation
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a DismissRecommendationResponse. */
                    interface IDismissRecommendationResponse {

                        /** DismissRecommendationResponse results */
                        results?: (google.ads.googleads.v23.services.DismissRecommendationResponse.IDismissRecommendationResult[]|null);

                        /** DismissRecommendationResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a DismissRecommendationResponse. */
                    class DismissRecommendationResponse implements IDismissRecommendationResponse {

                        /**
                         * Constructs a new DismissRecommendationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IDismissRecommendationResponse);

                        /** DismissRecommendationResponse results. */
                        public results: google.ads.googleads.v23.services.DismissRecommendationResponse.IDismissRecommendationResult[];

                        /** DismissRecommendationResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new DismissRecommendationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DismissRecommendationResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IDismissRecommendationResponse): google.ads.googleads.v23.services.DismissRecommendationResponse;

                        /**
                         * Encodes the specified DismissRecommendationResponse message. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationResponse.verify|verify} messages.
                         * @param message DismissRecommendationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IDismissRecommendationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DismissRecommendationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationResponse.verify|verify} messages.
                         * @param message DismissRecommendationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IDismissRecommendationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DismissRecommendationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DismissRecommendationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.DismissRecommendationResponse;

                        /**
                         * Decodes a DismissRecommendationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DismissRecommendationResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.DismissRecommendationResponse;

                        /**
                         * Verifies a DismissRecommendationResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DismissRecommendationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DismissRecommendationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.DismissRecommendationResponse;

                        /**
                         * Creates a plain object from a DismissRecommendationResponse message. Also converts values to other types if specified.
                         * @param message DismissRecommendationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.DismissRecommendationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DismissRecommendationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DismissRecommendationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DismissRecommendationResponse {

                        /** Properties of a DismissRecommendationResult. */
                        interface IDismissRecommendationResult {

                            /** DismissRecommendationResult resource_name */
                            resource_name?: (string|null);
                        }

                        /** Represents a DismissRecommendationResult. */
                        class DismissRecommendationResult implements IDismissRecommendationResult {

                            /**
                             * Constructs a new DismissRecommendationResult.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.DismissRecommendationResponse.IDismissRecommendationResult);

                            /** DismissRecommendationResult resource_name. */
                            public resource_name: string;

                            /**
                             * Creates a new DismissRecommendationResult instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DismissRecommendationResult instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.DismissRecommendationResponse.IDismissRecommendationResult): google.ads.googleads.v23.services.DismissRecommendationResponse.DismissRecommendationResult;

                            /**
                             * Encodes the specified DismissRecommendationResult message. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationResponse.DismissRecommendationResult.verify|verify} messages.
                             * @param message DismissRecommendationResult message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.DismissRecommendationResponse.IDismissRecommendationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DismissRecommendationResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.DismissRecommendationResponse.DismissRecommendationResult.verify|verify} messages.
                             * @param message DismissRecommendationResult message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.DismissRecommendationResponse.IDismissRecommendationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DismissRecommendationResult message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DismissRecommendationResult
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.DismissRecommendationResponse.DismissRecommendationResult;

                            /**
                             * Decodes a DismissRecommendationResult message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DismissRecommendationResult
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.DismissRecommendationResponse.DismissRecommendationResult;

                            /**
                             * Verifies a DismissRecommendationResult message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DismissRecommendationResult message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DismissRecommendationResult
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.DismissRecommendationResponse.DismissRecommendationResult;

                            /**
                             * Creates a plain object from a DismissRecommendationResult message. Also converts values to other types if specified.
                             * @param message DismissRecommendationResult
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.DismissRecommendationResponse.DismissRecommendationResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DismissRecommendationResult to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DismissRecommendationResult
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a GenerateRecommendationsRequest. */
                    interface IGenerateRecommendationsRequest {

                        /** GenerateRecommendationsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateRecommendationsRequest recommendation_types */
                        recommendation_types?: (google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType[]|null);

                        /** GenerateRecommendationsRequest advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** GenerateRecommendationsRequest campaign_sitelink_count */
                        campaign_sitelink_count?: (number|null);

                        /** GenerateRecommendationsRequest conversion_tracking_status */
                        conversion_tracking_status?: (google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus|keyof typeof google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus|null);

                        /** GenerateRecommendationsRequest bidding_info */
                        bidding_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBiddingInfo|null);

                        /** GenerateRecommendationsRequest ad_group_info */
                        ad_group_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAdGroupInfo[]|null);

                        /** GenerateRecommendationsRequest seed_info */
                        seed_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.ISeedInfo|null);

                        /** GenerateRecommendationsRequest budget_info */
                        budget_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBudgetInfo|null);

                        /** GenerateRecommendationsRequest campaign_image_asset_count */
                        campaign_image_asset_count?: (number|null);

                        /** GenerateRecommendationsRequest campaign_call_asset_count */
                        campaign_call_asset_count?: (number|null);

                        /** GenerateRecommendationsRequest country_codes */
                        country_codes?: (string[]|null);

                        /** GenerateRecommendationsRequest language_codes */
                        language_codes?: (string[]|null);

                        /** GenerateRecommendationsRequest positive_locations_ids */
                        positive_locations_ids?: (number[]|null);

                        /** GenerateRecommendationsRequest negative_locations_ids */
                        negative_locations_ids?: (number[]|null);

                        /** GenerateRecommendationsRequest asset_group_info */
                        asset_group_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAssetGroupInfo[]|null);

                        /** GenerateRecommendationsRequest target_partner_search_network */
                        target_partner_search_network?: (boolean|null);

                        /** GenerateRecommendationsRequest target_content_network */
                        target_content_network?: (boolean|null);

                        /** GenerateRecommendationsRequest merchant_center_account_id */
                        merchant_center_account_id?: (number|null);

                        /** GenerateRecommendationsRequest is_new_customer */
                        is_new_customer?: (boolean|null);
                    }

                    /** Represents a GenerateRecommendationsRequest. */
                    class GenerateRecommendationsRequest implements IGenerateRecommendationsRequest {

                        /**
                         * Constructs a new GenerateRecommendationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateRecommendationsRequest);

                        /** GenerateRecommendationsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateRecommendationsRequest recommendation_types. */
                        public recommendation_types: google.ads.googleads.v23.enums.RecommendationTypeEnum.RecommendationType[];

                        /** GenerateRecommendationsRequest advertising_channel_type. */
                        public advertising_channel_type: (google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v23.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType);

                        /** GenerateRecommendationsRequest campaign_sitelink_count. */
                        public campaign_sitelink_count?: (number|null);

                        /** GenerateRecommendationsRequest conversion_tracking_status. */
                        public conversion_tracking_status?: (google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus|keyof typeof google.ads.googleads.v23.enums.ConversionTrackingStatusEnum.ConversionTrackingStatus|null);

                        /** GenerateRecommendationsRequest bidding_info. */
                        public bidding_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBiddingInfo|null);

                        /** GenerateRecommendationsRequest ad_group_info. */
                        public ad_group_info: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAdGroupInfo[];

                        /** GenerateRecommendationsRequest seed_info. */
                        public seed_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.ISeedInfo|null);

                        /** GenerateRecommendationsRequest budget_info. */
                        public budget_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBudgetInfo|null);

                        /** GenerateRecommendationsRequest campaign_image_asset_count. */
                        public campaign_image_asset_count?: (number|null);

                        /** GenerateRecommendationsRequest campaign_call_asset_count. */
                        public campaign_call_asset_count?: (number|null);

                        /** GenerateRecommendationsRequest country_codes. */
                        public country_codes: string[];

                        /** GenerateRecommendationsRequest language_codes. */
                        public language_codes: string[];

                        /** GenerateRecommendationsRequest positive_locations_ids. */
                        public positive_locations_ids: number[];

                        /** GenerateRecommendationsRequest negative_locations_ids. */
                        public negative_locations_ids: number[];

                        /** GenerateRecommendationsRequest asset_group_info. */
                        public asset_group_info: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAssetGroupInfo[];

                        /** GenerateRecommendationsRequest target_partner_search_network. */
                        public target_partner_search_network?: (boolean|null);

                        /** GenerateRecommendationsRequest target_content_network. */
                        public target_content_network?: (boolean|null);

                        /** GenerateRecommendationsRequest merchant_center_account_id. */
                        public merchant_center_account_id?: (number|null);

                        /** GenerateRecommendationsRequest is_new_customer. */
                        public is_new_customer?: (boolean|null);

                        /**
                         * Creates a new GenerateRecommendationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateRecommendationsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateRecommendationsRequest): google.ads.googleads.v23.services.GenerateRecommendationsRequest;

                        /**
                         * Encodes the specified GenerateRecommendationsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.verify|verify} messages.
                         * @param message GenerateRecommendationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateRecommendationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateRecommendationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.verify|verify} messages.
                         * @param message GenerateRecommendationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateRecommendationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateRecommendationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateRecommendationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsRequest;

                        /**
                         * Decodes a GenerateRecommendationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateRecommendationsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsRequest;

                        /**
                         * Verifies a GenerateRecommendationsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateRecommendationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateRecommendationsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsRequest;

                        /**
                         * Creates a plain object from a GenerateRecommendationsRequest message. Also converts values to other types if specified.
                         * @param message GenerateRecommendationsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateRecommendationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateRecommendationsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GenerateRecommendationsRequest {

                        /** Properties of a BiddingInfo. */
                        interface IBiddingInfo {

                            /** BiddingInfo bidding_strategy_type */
                            bidding_strategy_type?: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|null);

                            /** BiddingInfo target_cpa_micros */
                            target_cpa_micros?: (number|null);

                            /** BiddingInfo target_roas */
                            target_roas?: (number|null);

                            /** BiddingInfo target_impression_share_info */
                            target_impression_share_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.ITargetImpressionShareInfo|null);
                        }

                        /** Represents a BiddingInfo. */
                        class BiddingInfo implements IBiddingInfo {

                            /**
                             * Constructs a new BiddingInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBiddingInfo);

                            /** BiddingInfo bidding_strategy_type. */
                            public bidding_strategy_type?: (google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v23.enums.BiddingStrategyTypeEnum.BiddingStrategyType|null);

                            /** BiddingInfo target_cpa_micros. */
                            public target_cpa_micros?: (number|null);

                            /** BiddingInfo target_roas. */
                            public target_roas?: (number|null);

                            /** BiddingInfo target_impression_share_info. */
                            public target_impression_share_info?: (google.ads.googleads.v23.services.GenerateRecommendationsRequest.ITargetImpressionShareInfo|null);

                            /** BiddingInfo bidding_strategy_target_info. */
                            public bidding_strategy_target_info?: ("target_cpa_micros"|"target_roas"|"target_impression_share_info");

                            /**
                             * Creates a new BiddingInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns BiddingInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBiddingInfo): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BiddingInfo;

                            /**
                             * Encodes the specified BiddingInfo message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.BiddingInfo.verify|verify} messages.
                             * @param message BiddingInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBiddingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BiddingInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.BiddingInfo.verify|verify} messages.
                             * @param message BiddingInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBiddingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BiddingInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns BiddingInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BiddingInfo;

                            /**
                             * Decodes a BiddingInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns BiddingInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BiddingInfo;

                            /**
                             * Verifies a BiddingInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BiddingInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns BiddingInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BiddingInfo;

                            /**
                             * Creates a plain object from a BiddingInfo message. Also converts values to other types if specified.
                             * @param message BiddingInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.BiddingInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BiddingInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for BiddingInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AdGroupInfo. */
                        interface IAdGroupInfo {

                            /** AdGroupInfo ad_group_type */
                            ad_group_type?: (google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|null);

                            /** AdGroupInfo keywords */
                            keywords?: (google.ads.googleads.v23.common.IKeywordInfo[]|null);
                        }

                        /** Represents an AdGroupInfo. */
                        class AdGroupInfo implements IAdGroupInfo {

                            /**
                             * Constructs a new AdGroupInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAdGroupInfo);

                            /** AdGroupInfo ad_group_type. */
                            public ad_group_type?: (google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v23.enums.AdGroupTypeEnum.AdGroupType|null);

                            /** AdGroupInfo keywords. */
                            public keywords: google.ads.googleads.v23.common.IKeywordInfo[];

                            /**
                             * Creates a new AdGroupInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdGroupInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAdGroupInfo): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AdGroupInfo;

                            /**
                             * Encodes the specified AdGroupInfo message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.AdGroupInfo.verify|verify} messages.
                             * @param message AdGroupInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAdGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.AdGroupInfo.verify|verify} messages.
                             * @param message AdGroupInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAdGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdGroupInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdGroupInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AdGroupInfo;

                            /**
                             * Decodes an AdGroupInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdGroupInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AdGroupInfo;

                            /**
                             * Verifies an AdGroupInfo message.
                             * @param message Plain 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 AdGroupInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdGroupInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AdGroupInfo;

                            /**
                             * Creates a plain object from an AdGroupInfo message. Also converts values to other types if specified.
                             * @param message AdGroupInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.AdGroupInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdGroupInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdGroupInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SeedInfo. */
                        interface ISeedInfo {

                            /** SeedInfo url_seed */
                            url_seed?: (string|null);

                            /** SeedInfo keyword_seeds */
                            keyword_seeds?: (string[]|null);
                        }

                        /** Represents a SeedInfo. */
                        class SeedInfo implements ISeedInfo {

                            /**
                             * Constructs a new SeedInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ISeedInfo);

                            /** SeedInfo url_seed. */
                            public url_seed?: (string|null);

                            /** SeedInfo keyword_seeds. */
                            public keyword_seeds: string[];

                            /**
                             * Creates a new SeedInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SeedInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ISeedInfo): google.ads.googleads.v23.services.GenerateRecommendationsRequest.SeedInfo;

                            /**
                             * Encodes the specified SeedInfo message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.SeedInfo.verify|verify} messages.
                             * @param message SeedInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ISeedInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SeedInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.SeedInfo.verify|verify} messages.
                             * @param message SeedInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ISeedInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SeedInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SeedInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsRequest.SeedInfo;

                            /**
                             * Decodes a SeedInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SeedInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsRequest.SeedInfo;

                            /**
                             * Verifies a SeedInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SeedInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SeedInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsRequest.SeedInfo;

                            /**
                             * Creates a plain object from a SeedInfo message. Also converts values to other types if specified.
                             * @param message SeedInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.SeedInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SeedInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SeedInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a BudgetInfo. */
                        interface IBudgetInfo {

                            /** BudgetInfo current_budget */
                            current_budget?: (number|null);
                        }

                        /** Represents a BudgetInfo. */
                        class BudgetInfo implements IBudgetInfo {

                            /**
                             * Constructs a new BudgetInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBudgetInfo);

                            /** BudgetInfo current_budget. */
                            public current_budget?: (number|null);

                            /**
                             * Creates a new BudgetInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns BudgetInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBudgetInfo): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BudgetInfo;

                            /**
                             * Encodes the specified BudgetInfo message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.BudgetInfo.verify|verify} messages.
                             * @param message BudgetInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBudgetInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BudgetInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.BudgetInfo.verify|verify} messages.
                             * @param message BudgetInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IBudgetInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BudgetInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns BudgetInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BudgetInfo;

                            /**
                             * Decodes a BudgetInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns BudgetInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BudgetInfo;

                            /**
                             * Verifies a BudgetInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BudgetInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns BudgetInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsRequest.BudgetInfo;

                            /**
                             * Creates a plain object from a BudgetInfo message. Also converts values to other types if specified.
                             * @param message BudgetInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.BudgetInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BudgetInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for BudgetInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AssetGroupInfo. */
                        interface IAssetGroupInfo {

                            /** AssetGroupInfo final_url */
                            final_url?: (string|null);

                            /** AssetGroupInfo headline */
                            headline?: (string[]|null);

                            /** AssetGroupInfo description */
                            description?: (string[]|null);
                        }

                        /** Represents an AssetGroupInfo. */
                        class AssetGroupInfo implements IAssetGroupInfo {

                            /**
                             * Constructs a new AssetGroupInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAssetGroupInfo);

                            /** AssetGroupInfo final_url. */
                            public final_url?: (string|null);

                            /** AssetGroupInfo headline. */
                            public headline: string[];

                            /** AssetGroupInfo description. */
                            public description: string[];

                            /**
                             * Creates a new AssetGroupInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AssetGroupInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAssetGroupInfo): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AssetGroupInfo;

                            /**
                             * Encodes the specified AssetGroupInfo message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.AssetGroupInfo.verify|verify} messages.
                             * @param message AssetGroupInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAssetGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AssetGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.AssetGroupInfo.verify|verify} messages.
                             * @param message AssetGroupInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.IAssetGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AssetGroupInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AssetGroupInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AssetGroupInfo;

                            /**
                             * Decodes an AssetGroupInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AssetGroupInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AssetGroupInfo;

                            /**
                             * Verifies an AssetGroupInfo message.
                             * @param message Plain 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 AssetGroupInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AssetGroupInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsRequest.AssetGroupInfo;

                            /**
                             * Creates a plain object from an AssetGroupInfo message. Also converts values to other types if specified.
                             * @param message AssetGroupInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.AssetGroupInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AssetGroupInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AssetGroupInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a TargetImpressionShareInfo. */
                        interface ITargetImpressionShareInfo {

                            /** TargetImpressionShareInfo location */
                            location?: (google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|null);

                            /** TargetImpressionShareInfo target_impression_share_micros */
                            target_impression_share_micros?: (number|null);

                            /** TargetImpressionShareInfo max_cpc_bid_ceiling */
                            max_cpc_bid_ceiling?: (number|null);
                        }

                        /** Represents a TargetImpressionShareInfo. */
                        class TargetImpressionShareInfo implements ITargetImpressionShareInfo {

                            /**
                             * Constructs a new TargetImpressionShareInfo.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ITargetImpressionShareInfo);

                            /** TargetImpressionShareInfo location. */
                            public location?: (google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v23.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|null);

                            /** TargetImpressionShareInfo target_impression_share_micros. */
                            public target_impression_share_micros?: (number|null);

                            /** TargetImpressionShareInfo max_cpc_bid_ceiling. */
                            public max_cpc_bid_ceiling?: (number|null);

                            /**
                             * Creates a new TargetImpressionShareInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetImpressionShareInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ITargetImpressionShareInfo): google.ads.googleads.v23.services.GenerateRecommendationsRequest.TargetImpressionShareInfo;

                            /**
                             * Encodes the specified TargetImpressionShareInfo message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.TargetImpressionShareInfo.verify|verify} messages.
                             * @param message TargetImpressionShareInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ITargetImpressionShareInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetImpressionShareInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsRequest.TargetImpressionShareInfo.verify|verify} messages.
                             * @param message TargetImpressionShareInfo message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.ITargetImpressionShareInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetImpressionShareInfo message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TargetImpressionShareInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsRequest.TargetImpressionShareInfo;

                            /**
                             * Decodes a TargetImpressionShareInfo message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TargetImpressionShareInfo
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsRequest.TargetImpressionShareInfo;

                            /**
                             * Verifies a TargetImpressionShareInfo message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetImpressionShareInfo message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TargetImpressionShareInfo
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsRequest.TargetImpressionShareInfo;

                            /**
                             * Creates a plain object from a TargetImpressionShareInfo message. Also converts values to other types if specified.
                             * @param message TargetImpressionShareInfo
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsRequest.TargetImpressionShareInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetImpressionShareInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TargetImpressionShareInfo
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a GenerateRecommendationsResponse. */
                    interface IGenerateRecommendationsResponse {

                        /** GenerateRecommendationsResponse recommendations */
                        recommendations?: (google.ads.googleads.v23.resources.IRecommendation[]|null);
                    }

                    /** Represents a GenerateRecommendationsResponse. */
                    class GenerateRecommendationsResponse implements IGenerateRecommendationsResponse {

                        /**
                         * Constructs a new GenerateRecommendationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateRecommendationsResponse);

                        /** GenerateRecommendationsResponse recommendations. */
                        public recommendations: google.ads.googleads.v23.resources.IRecommendation[];

                        /**
                         * Creates a new GenerateRecommendationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateRecommendationsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateRecommendationsResponse): google.ads.googleads.v23.services.GenerateRecommendationsResponse;

                        /**
                         * Encodes the specified GenerateRecommendationsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsResponse.verify|verify} messages.
                         * @param message GenerateRecommendationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateRecommendationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateRecommendationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateRecommendationsResponse.verify|verify} messages.
                         * @param message GenerateRecommendationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateRecommendationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateRecommendationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateRecommendationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateRecommendationsResponse;

                        /**
                         * Decodes a GenerateRecommendationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateRecommendationsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateRecommendationsResponse;

                        /**
                         * Verifies a GenerateRecommendationsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateRecommendationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateRecommendationsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateRecommendationsResponse;

                        /**
                         * Creates a plain object from a GenerateRecommendationsResponse message. Also converts values to other types if specified.
                         * @param message GenerateRecommendationsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateRecommendationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateRecommendationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateRecommendationsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a ShareablePreviewService */
                    class ShareablePreviewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ShareablePreviewService 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 ShareablePreviewService 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): ShareablePreviewService;

                        /**
                         * Calls GenerateShareablePreviews.
                         * @param request GenerateShareablePreviewsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateShareablePreviewsResponse
                         */
                        public generateShareablePreviews(request: google.ads.googleads.v23.services.IGenerateShareablePreviewsRequest, callback: google.ads.googleads.v23.services.ShareablePreviewService.GenerateShareablePreviewsCallback): void;

                        /**
                         * Calls GenerateShareablePreviews.
                         * @param request GenerateShareablePreviewsRequest message or plain object
                         * @returns Promise
                         */
                        public generateShareablePreviews(request: google.ads.googleads.v23.services.IGenerateShareablePreviewsRequest): Promise<google.ads.googleads.v23.services.GenerateShareablePreviewsResponse>;
                    }

                    namespace ShareablePreviewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ShareablePreviewService|generateShareablePreviews}.
                         * @param error Error, if any
                         * @param [response] GenerateShareablePreviewsResponse
                         */
                        type GenerateShareablePreviewsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.GenerateShareablePreviewsResponse) => void;
                    }

                    /** Properties of a GenerateShareablePreviewsRequest. */
                    interface IGenerateShareablePreviewsRequest {

                        /** GenerateShareablePreviewsRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateShareablePreviewsRequest shareable_previews */
                        shareable_previews?: (google.ads.googleads.v23.services.IShareablePreview[]|null);
                    }

                    /** Represents a GenerateShareablePreviewsRequest. */
                    class GenerateShareablePreviewsRequest implements IGenerateShareablePreviewsRequest {

                        /**
                         * Constructs a new GenerateShareablePreviewsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateShareablePreviewsRequest);

                        /** GenerateShareablePreviewsRequest customer_id. */
                        public customer_id: string;

                        /** GenerateShareablePreviewsRequest shareable_previews. */
                        public shareable_previews: google.ads.googleads.v23.services.IShareablePreview[];

                        /**
                         * Creates a new GenerateShareablePreviewsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateShareablePreviewsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateShareablePreviewsRequest): google.ads.googleads.v23.services.GenerateShareablePreviewsRequest;

                        /**
                         * Encodes the specified GenerateShareablePreviewsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateShareablePreviewsRequest.verify|verify} messages.
                         * @param message GenerateShareablePreviewsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateShareablePreviewsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateShareablePreviewsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateShareablePreviewsRequest.verify|verify} messages.
                         * @param message GenerateShareablePreviewsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateShareablePreviewsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateShareablePreviewsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateShareablePreviewsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateShareablePreviewsRequest;

                        /**
                         * Decodes a GenerateShareablePreviewsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateShareablePreviewsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateShareablePreviewsRequest;

                        /**
                         * Verifies a GenerateShareablePreviewsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateShareablePreviewsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateShareablePreviewsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateShareablePreviewsRequest;

                        /**
                         * Creates a plain object from a GenerateShareablePreviewsRequest message. Also converts values to other types if specified.
                         * @param message GenerateShareablePreviewsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateShareablePreviewsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateShareablePreviewsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateShareablePreviewsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ShareablePreview. */
                    interface IShareablePreview {

                        /** ShareablePreview asset_group_identifier */
                        asset_group_identifier?: (google.ads.googleads.v23.services.IAssetGroupIdentifier|null);
                    }

                    /** Represents a ShareablePreview. */
                    class ShareablePreview implements IShareablePreview {

                        /**
                         * Constructs a new ShareablePreview.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IShareablePreview);

                        /** ShareablePreview asset_group_identifier. */
                        public asset_group_identifier?: (google.ads.googleads.v23.services.IAssetGroupIdentifier|null);

                        /**
                         * Creates a new ShareablePreview instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShareablePreview instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IShareablePreview): google.ads.googleads.v23.services.ShareablePreview;

                        /**
                         * Encodes the specified ShareablePreview message. Does not implicitly {@link google.ads.googleads.v23.services.ShareablePreview.verify|verify} messages.
                         * @param message ShareablePreview message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IShareablePreview, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShareablePreview message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ShareablePreview.verify|verify} messages.
                         * @param message ShareablePreview message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IShareablePreview, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShareablePreview message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShareablePreview
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ShareablePreview;

                        /**
                         * Decodes a ShareablePreview message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShareablePreview
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ShareablePreview;

                        /**
                         * Verifies a ShareablePreview message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShareablePreview message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShareablePreview
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ShareablePreview;

                        /**
                         * Creates a plain object from a ShareablePreview message. Also converts values to other types if specified.
                         * @param message ShareablePreview
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ShareablePreview, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShareablePreview to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShareablePreview
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AssetGroupIdentifier. */
                    interface IAssetGroupIdentifier {

                        /** AssetGroupIdentifier asset_group_id */
                        asset_group_id?: (number|null);
                    }

                    /** Represents an AssetGroupIdentifier. */
                    class AssetGroupIdentifier implements IAssetGroupIdentifier {

                        /**
                         * Constructs a new AssetGroupIdentifier.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IAssetGroupIdentifier);

                        /** AssetGroupIdentifier asset_group_id. */
                        public asset_group_id: number;

                        /**
                         * Creates a new AssetGroupIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AssetGroupIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IAssetGroupIdentifier): google.ads.googleads.v23.services.AssetGroupIdentifier;

                        /**
                         * Encodes the specified AssetGroupIdentifier message. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupIdentifier.verify|verify} messages.
                         * @param message AssetGroupIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IAssetGroupIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetGroupIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.AssetGroupIdentifier.verify|verify} messages.
                         * @param message AssetGroupIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IAssetGroupIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetGroupIdentifier message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AssetGroupIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.AssetGroupIdentifier;

                        /**
                         * Decodes an AssetGroupIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AssetGroupIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.AssetGroupIdentifier;

                        /**
                         * Verifies an AssetGroupIdentifier message.
                         * @param message Plain 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 AssetGroupIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AssetGroupIdentifier
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.AssetGroupIdentifier;

                        /**
                         * Creates a plain object from an AssetGroupIdentifier message. Also converts values to other types if specified.
                         * @param message AssetGroupIdentifier
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.AssetGroupIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetGroupIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AssetGroupIdentifier
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GenerateShareablePreviewsResponse. */
                    interface IGenerateShareablePreviewsResponse {

                        /** GenerateShareablePreviewsResponse responses */
                        responses?: (google.ads.googleads.v23.services.IShareablePreviewOrError[]|null);
                    }

                    /** Represents a GenerateShareablePreviewsResponse. */
                    class GenerateShareablePreviewsResponse implements IGenerateShareablePreviewsResponse {

                        /**
                         * Constructs a new GenerateShareablePreviewsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IGenerateShareablePreviewsResponse);

                        /** GenerateShareablePreviewsResponse responses. */
                        public responses: google.ads.googleads.v23.services.IShareablePreviewOrError[];

                        /**
                         * Creates a new GenerateShareablePreviewsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateShareablePreviewsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IGenerateShareablePreviewsResponse): google.ads.googleads.v23.services.GenerateShareablePreviewsResponse;

                        /**
                         * Encodes the specified GenerateShareablePreviewsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.GenerateShareablePreviewsResponse.verify|verify} messages.
                         * @param message GenerateShareablePreviewsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IGenerateShareablePreviewsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateShareablePreviewsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.GenerateShareablePreviewsResponse.verify|verify} messages.
                         * @param message GenerateShareablePreviewsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IGenerateShareablePreviewsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateShareablePreviewsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GenerateShareablePreviewsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.GenerateShareablePreviewsResponse;

                        /**
                         * Decodes a GenerateShareablePreviewsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateShareablePreviewsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.GenerateShareablePreviewsResponse;

                        /**
                         * Verifies a GenerateShareablePreviewsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateShareablePreviewsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GenerateShareablePreviewsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.GenerateShareablePreviewsResponse;

                        /**
                         * Creates a plain object from a GenerateShareablePreviewsResponse message. Also converts values to other types if specified.
                         * @param message GenerateShareablePreviewsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.GenerateShareablePreviewsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateShareablePreviewsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GenerateShareablePreviewsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ShareablePreviewOrError. */
                    interface IShareablePreviewOrError {

                        /** ShareablePreviewOrError asset_group_identifier */
                        asset_group_identifier?: (google.ads.googleads.v23.services.IAssetGroupIdentifier|null);

                        /** ShareablePreviewOrError shareable_preview_result */
                        shareable_preview_result?: (google.ads.googleads.v23.services.IShareablePreviewResult|null);

                        /** ShareablePreviewOrError partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents a ShareablePreviewOrError. */
                    class ShareablePreviewOrError implements IShareablePreviewOrError {

                        /**
                         * Constructs a new ShareablePreviewOrError.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IShareablePreviewOrError);

                        /** ShareablePreviewOrError asset_group_identifier. */
                        public asset_group_identifier?: (google.ads.googleads.v23.services.IAssetGroupIdentifier|null);

                        /** ShareablePreviewOrError shareable_preview_result. */
                        public shareable_preview_result?: (google.ads.googleads.v23.services.IShareablePreviewResult|null);

                        /** ShareablePreviewOrError partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** ShareablePreviewOrError generate_shareable_preview_response. */
                        public generate_shareable_preview_response?: ("shareable_preview_result"|"partial_failure_error");

                        /**
                         * Creates a new ShareablePreviewOrError instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShareablePreviewOrError instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IShareablePreviewOrError): google.ads.googleads.v23.services.ShareablePreviewOrError;

                        /**
                         * Encodes the specified ShareablePreviewOrError message. Does not implicitly {@link google.ads.googleads.v23.services.ShareablePreviewOrError.verify|verify} messages.
                         * @param message ShareablePreviewOrError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IShareablePreviewOrError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShareablePreviewOrError message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ShareablePreviewOrError.verify|verify} messages.
                         * @param message ShareablePreviewOrError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IShareablePreviewOrError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShareablePreviewOrError message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShareablePreviewOrError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ShareablePreviewOrError;

                        /**
                         * Decodes a ShareablePreviewOrError message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShareablePreviewOrError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ShareablePreviewOrError;

                        /**
                         * Verifies a ShareablePreviewOrError message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShareablePreviewOrError message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShareablePreviewOrError
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ShareablePreviewOrError;

                        /**
                         * Creates a plain object from a ShareablePreviewOrError message. Also converts values to other types if specified.
                         * @param message ShareablePreviewOrError
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ShareablePreviewOrError, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShareablePreviewOrError to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShareablePreviewOrError
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ShareablePreviewResult. */
                    interface IShareablePreviewResult {

                        /** ShareablePreviewResult shareable_preview_url */
                        shareable_preview_url?: (string|null);

                        /** ShareablePreviewResult expiration_date_time */
                        expiration_date_time?: (string|null);
                    }

                    /** Represents a ShareablePreviewResult. */
                    class ShareablePreviewResult implements IShareablePreviewResult {

                        /**
                         * Constructs a new ShareablePreviewResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IShareablePreviewResult);

                        /** ShareablePreviewResult shareable_preview_url. */
                        public shareable_preview_url: string;

                        /** ShareablePreviewResult expiration_date_time. */
                        public expiration_date_time: string;

                        /**
                         * Creates a new ShareablePreviewResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShareablePreviewResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IShareablePreviewResult): google.ads.googleads.v23.services.ShareablePreviewResult;

                        /**
                         * Encodes the specified ShareablePreviewResult message. Does not implicitly {@link google.ads.googleads.v23.services.ShareablePreviewResult.verify|verify} messages.
                         * @param message ShareablePreviewResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IShareablePreviewResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShareablePreviewResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.ShareablePreviewResult.verify|verify} messages.
                         * @param message ShareablePreviewResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IShareablePreviewResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShareablePreviewResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShareablePreviewResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.ShareablePreviewResult;

                        /**
                         * Decodes a ShareablePreviewResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShareablePreviewResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.ShareablePreviewResult;

                        /**
                         * Verifies a ShareablePreviewResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShareablePreviewResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShareablePreviewResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.ShareablePreviewResult;

                        /**
                         * Creates a plain object from a ShareablePreviewResult message. Also converts values to other types if specified.
                         * @param message ShareablePreviewResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.ShareablePreviewResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShareablePreviewResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShareablePreviewResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a SmartCampaignSuggestService */
                    class SmartCampaignSuggestService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new SmartCampaignSuggestService 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 SmartCampaignSuggestService 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): SmartCampaignSuggestService;

                        /**
                         * Calls SuggestSmartCampaignBudgetOptions.
                         * @param request SuggestSmartCampaignBudgetOptionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SuggestSmartCampaignBudgetOptionsResponse
                         */
                        public suggestSmartCampaignBudgetOptions(request: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsRequest, callback: google.ads.googleads.v23.services.SmartCampaignSuggestService.SuggestSmartCampaignBudgetOptionsCallback): void;

                        /**
                         * Calls SuggestSmartCampaignBudgetOptions.
                         * @param request SuggestSmartCampaignBudgetOptionsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestSmartCampaignBudgetOptions(request: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsRequest): Promise<google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse>;

                        /**
                         * Calls SuggestSmartCampaignAd.
                         * @param request SuggestSmartCampaignAdRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SuggestSmartCampaignAdResponse
                         */
                        public suggestSmartCampaignAd(request: google.ads.googleads.v23.services.ISuggestSmartCampaignAdRequest, callback: google.ads.googleads.v23.services.SmartCampaignSuggestService.SuggestSmartCampaignAdCallback): void;

                        /**
                         * Calls SuggestSmartCampaignAd.
                         * @param request SuggestSmartCampaignAdRequest message or plain object
                         * @returns Promise
                         */
                        public suggestSmartCampaignAd(request: google.ads.googleads.v23.services.ISuggestSmartCampaignAdRequest): Promise<google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse>;

                        /**
                         * Calls SuggestKeywordThemes.
                         * @param request SuggestKeywordThemesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SuggestKeywordThemesResponse
                         */
                        public suggestKeywordThemes(request: google.ads.googleads.v23.services.ISuggestKeywordThemesRequest, callback: google.ads.googleads.v23.services.SmartCampaignSuggestService.SuggestKeywordThemesCallback): void;

                        /**
                         * Calls SuggestKeywordThemes.
                         * @param request SuggestKeywordThemesRequest message or plain object
                         * @returns Promise
                         */
                        public suggestKeywordThemes(request: google.ads.googleads.v23.services.ISuggestKeywordThemesRequest): Promise<google.ads.googleads.v23.services.SuggestKeywordThemesResponse>;
                    }

                    namespace SmartCampaignSuggestService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.SmartCampaignSuggestService|suggestSmartCampaignBudgetOptions}.
                         * @param error Error, if any
                         * @param [response] SuggestSmartCampaignBudgetOptionsResponse
                         */
                        type SuggestSmartCampaignBudgetOptionsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.SmartCampaignSuggestService|suggestSmartCampaignAd}.
                         * @param error Error, if any
                         * @param [response] SuggestSmartCampaignAdResponse
                         */
                        type SuggestSmartCampaignAdCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.SmartCampaignSuggestService|suggestKeywordThemes}.
                         * @param error Error, if any
                         * @param [response] SuggestKeywordThemesResponse
                         */
                        type SuggestKeywordThemesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SuggestKeywordThemesResponse) => void;
                    }

                    /** Properties of a SuggestSmartCampaignBudgetOptionsRequest. */
                    interface ISuggestSmartCampaignBudgetOptionsRequest {

                        /** SuggestSmartCampaignBudgetOptionsRequest customer_id */
                        customer_id?: (string|null);

                        /** SuggestSmartCampaignBudgetOptionsRequest campaign */
                        campaign?: (string|null);

                        /** SuggestSmartCampaignBudgetOptionsRequest suggestion_info */
                        suggestion_info?: (google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo|null);
                    }

                    /** Represents a SuggestSmartCampaignBudgetOptionsRequest. */
                    class SuggestSmartCampaignBudgetOptionsRequest implements ISuggestSmartCampaignBudgetOptionsRequest {

                        /**
                         * Constructs a new SuggestSmartCampaignBudgetOptionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsRequest);

                        /** SuggestSmartCampaignBudgetOptionsRequest customer_id. */
                        public customer_id: string;

                        /** SuggestSmartCampaignBudgetOptionsRequest campaign. */
                        public campaign?: (string|null);

                        /** SuggestSmartCampaignBudgetOptionsRequest suggestion_info. */
                        public suggestion_info?: (google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo|null);

                        /** SuggestSmartCampaignBudgetOptionsRequest suggestion_data. */
                        public suggestion_data?: ("campaign"|"suggestion_info");

                        /**
                         * Creates a new SuggestSmartCampaignBudgetOptionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestSmartCampaignBudgetOptionsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsRequest): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsRequest;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsRequest.verify|verify} messages.
                         * @param message SuggestSmartCampaignBudgetOptionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsRequest.verify|verify} messages.
                         * @param message SuggestSmartCampaignBudgetOptionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignBudgetOptionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestSmartCampaignBudgetOptionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsRequest;

                        /**
                         * Decodes a SuggestSmartCampaignBudgetOptionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestSmartCampaignBudgetOptionsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsRequest;

                        /**
                         * Verifies a SuggestSmartCampaignBudgetOptionsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignBudgetOptionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestSmartCampaignBudgetOptionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsRequest;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignBudgetOptionsRequest message. Also converts values to other types if specified.
                         * @param message SuggestSmartCampaignBudgetOptionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignBudgetOptionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestSmartCampaignBudgetOptionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SmartCampaignSuggestionInfo. */
                    interface ISmartCampaignSuggestionInfo {

                        /** SmartCampaignSuggestionInfo final_url */
                        final_url?: (string|null);

                        /** SmartCampaignSuggestionInfo language_code */
                        language_code?: (string|null);

                        /** SmartCampaignSuggestionInfo ad_schedules */
                        ad_schedules?: (google.ads.googleads.v23.common.IAdScheduleInfo[]|null);

                        /** SmartCampaignSuggestionInfo keyword_themes */
                        keyword_themes?: (google.ads.googleads.v23.common.IKeywordThemeInfo[]|null);

                        /** SmartCampaignSuggestionInfo business_context */
                        business_context?: (google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.IBusinessContext|null);

                        /** SmartCampaignSuggestionInfo business_profile_location */
                        business_profile_location?: (string|null);

                        /** SmartCampaignSuggestionInfo location_list */
                        location_list?: (google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.ILocationList|null);

                        /** SmartCampaignSuggestionInfo proximity */
                        proximity?: (google.ads.googleads.v23.common.IProximityInfo|null);
                    }

                    /** Represents a SmartCampaignSuggestionInfo. */
                    class SmartCampaignSuggestionInfo implements ISmartCampaignSuggestionInfo {

                        /**
                         * Constructs a new SmartCampaignSuggestionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo);

                        /** SmartCampaignSuggestionInfo final_url. */
                        public final_url: string;

                        /** SmartCampaignSuggestionInfo language_code. */
                        public language_code: string;

                        /** SmartCampaignSuggestionInfo ad_schedules. */
                        public ad_schedules: google.ads.googleads.v23.common.IAdScheduleInfo[];

                        /** SmartCampaignSuggestionInfo keyword_themes. */
                        public keyword_themes: google.ads.googleads.v23.common.IKeywordThemeInfo[];

                        /** SmartCampaignSuggestionInfo business_context. */
                        public business_context?: (google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.IBusinessContext|null);

                        /** SmartCampaignSuggestionInfo business_profile_location. */
                        public business_profile_location?: (string|null);

                        /** SmartCampaignSuggestionInfo location_list. */
                        public location_list?: (google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.ILocationList|null);

                        /** SmartCampaignSuggestionInfo proximity. */
                        public proximity?: (google.ads.googleads.v23.common.IProximityInfo|null);

                        /** SmartCampaignSuggestionInfo business_setting. */
                        public business_setting?: ("business_context"|"business_profile_location");

                        /** SmartCampaignSuggestionInfo geo_target. */
                        public geo_target?: ("location_list"|"proximity");

                        /**
                         * Creates a new SmartCampaignSuggestionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignSuggestionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo;

                        /**
                         * Encodes the specified SmartCampaignSuggestionInfo message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.verify|verify} messages.
                         * @param message SmartCampaignSuggestionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSuggestionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.verify|verify} messages.
                         * @param message SmartCampaignSuggestionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSuggestionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SmartCampaignSuggestionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo;

                        /**
                         * Decodes a SmartCampaignSuggestionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SmartCampaignSuggestionInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo;

                        /**
                         * Verifies a SmartCampaignSuggestionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSuggestionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SmartCampaignSuggestionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo;

                        /**
                         * Creates a plain object from a SmartCampaignSuggestionInfo message. Also converts values to other types if specified.
                         * @param message SmartCampaignSuggestionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSuggestionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SmartCampaignSuggestionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SmartCampaignSuggestionInfo {

                        /** Properties of a LocationList. */
                        interface ILocationList {

                            /** LocationList locations */
                            locations?: (google.ads.googleads.v23.common.ILocationInfo[]|null);
                        }

                        /** Represents a LocationList. */
                        class LocationList implements ILocationList {

                            /**
                             * Constructs a new LocationList.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.ILocationList);

                            /** LocationList locations. */
                            public locations: google.ads.googleads.v23.common.ILocationInfo[];

                            /**
                             * Creates a new LocationList instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns LocationList instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.ILocationList): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.LocationList;

                            /**
                             * Encodes the specified LocationList message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.LocationList.verify|verify} messages.
                             * @param message LocationList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.ILocationList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LocationList message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.LocationList.verify|verify} messages.
                             * @param message LocationList message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.ILocationList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LocationList message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns LocationList
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.LocationList;

                            /**
                             * Decodes a LocationList message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns LocationList
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.LocationList;

                            /**
                             * Verifies a LocationList message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LocationList message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns LocationList
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.LocationList;

                            /**
                             * Creates a plain object from a LocationList message. Also converts values to other types if specified.
                             * @param message LocationList
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.LocationList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LocationList to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for LocationList
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a BusinessContext. */
                        interface IBusinessContext {

                            /** BusinessContext business_name */
                            business_name?: (string|null);
                        }

                        /** Represents a BusinessContext. */
                        class BusinessContext implements IBusinessContext {

                            /**
                             * Constructs a new BusinessContext.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.IBusinessContext);

                            /** BusinessContext business_name. */
                            public business_name: string;

                            /**
                             * Creates a new BusinessContext instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns BusinessContext instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.IBusinessContext): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.BusinessContext;

                            /**
                             * Encodes the specified BusinessContext message. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.BusinessContext.verify|verify} messages.
                             * @param message BusinessContext message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.IBusinessContext, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BusinessContext message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.BusinessContext.verify|verify} messages.
                             * @param message BusinessContext message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.IBusinessContext, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BusinessContext message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns BusinessContext
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.BusinessContext;

                            /**
                             * Decodes a BusinessContext message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns BusinessContext
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.BusinessContext;

                            /**
                             * Verifies a BusinessContext message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BusinessContext message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns BusinessContext
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.BusinessContext;

                            /**
                             * Creates a plain object from a BusinessContext message. Also converts values to other types if specified.
                             * @param message BusinessContext
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.SmartCampaignSuggestionInfo.BusinessContext, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BusinessContext to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for BusinessContext
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a SuggestSmartCampaignBudgetOptionsResponse. */
                    interface ISuggestSmartCampaignBudgetOptionsResponse {

                        /** SuggestSmartCampaignBudgetOptionsResponse low */
                        low?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse recommended */
                        recommended?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse high */
                        high?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);
                    }

                    /** Represents a SuggestSmartCampaignBudgetOptionsResponse. */
                    class SuggestSmartCampaignBudgetOptionsResponse implements ISuggestSmartCampaignBudgetOptionsResponse {

                        /**
                         * Constructs a new SuggestSmartCampaignBudgetOptionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsResponse);

                        /** SuggestSmartCampaignBudgetOptionsResponse low. */
                        public low?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse recommended. */
                        public recommended?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse high. */
                        public high?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /**
                         * Creates a new SuggestSmartCampaignBudgetOptionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestSmartCampaignBudgetOptionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsResponse): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.verify|verify} messages.
                         * @param message SuggestSmartCampaignBudgetOptionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.verify|verify} messages.
                         * @param message SuggestSmartCampaignBudgetOptionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestSmartCampaignBudgetOptionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignBudgetOptionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestSmartCampaignBudgetOptionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse;

                        /**
                         * Decodes a SuggestSmartCampaignBudgetOptionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestSmartCampaignBudgetOptionsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse;

                        /**
                         * Verifies a SuggestSmartCampaignBudgetOptionsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignBudgetOptionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestSmartCampaignBudgetOptionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignBudgetOptionsResponse message. Also converts values to other types if specified.
                         * @param message SuggestSmartCampaignBudgetOptionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignBudgetOptionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestSmartCampaignBudgetOptionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SuggestSmartCampaignBudgetOptionsResponse {

                        /** Properties of a Metrics. */
                        interface IMetrics {

                            /** Metrics min_daily_clicks */
                            min_daily_clicks?: (number|null);

                            /** Metrics max_daily_clicks */
                            max_daily_clicks?: (number|null);
                        }

                        /** Represents a Metrics. */
                        class Metrics implements IMetrics {

                            /**
                             * Constructs a new Metrics.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics);

                            /** Metrics min_daily_clicks. */
                            public min_daily_clicks: number;

                            /** Metrics max_daily_clicks. */
                            public max_daily_clicks: number;

                            /**
                             * Creates a new Metrics instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Metrics instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics;

                            /**
                             * Encodes the specified Metrics message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics.verify|verify} messages.
                             * @param message Metrics message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Metrics message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics.verify|verify} messages.
                             * @param message Metrics message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Metrics message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Metrics
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics;

                            /**
                             * Decodes a Metrics message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Metrics
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics;

                            /**
                             * Verifies a Metrics message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Metrics
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics;

                            /**
                             * Creates a plain object from a Metrics message. Also converts values to other types if specified.
                             * @param message Metrics
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Metrics to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Metrics
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a BudgetOption. */
                        interface IBudgetOption {

                            /** BudgetOption daily_amount_micros */
                            daily_amount_micros?: (number|null);

                            /** BudgetOption metrics */
                            metrics?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics|null);
                        }

                        /** Represents a BudgetOption. */
                        class BudgetOption implements IBudgetOption {

                            /**
                             * Constructs a new BudgetOption.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption);

                            /** BudgetOption daily_amount_micros. */
                            public daily_amount_micros: number;

                            /** BudgetOption metrics. */
                            public metrics?: (google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics|null);

                            /**
                             * Creates a new BudgetOption instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns BudgetOption instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption;

                            /**
                             * Encodes the specified BudgetOption message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption.verify|verify} messages.
                             * @param message BudgetOption message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BudgetOption message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption.verify|verify} messages.
                             * @param message BudgetOption message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BudgetOption message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns BudgetOption
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption;

                            /**
                             * Decodes a BudgetOption message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns BudgetOption
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption;

                            /**
                             * Verifies a BudgetOption message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BudgetOption message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns BudgetOption
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption;

                            /**
                             * Creates a plain object from a BudgetOption message. Also converts values to other types if specified.
                             * @param message BudgetOption
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BudgetOption to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for BudgetOption
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a SuggestSmartCampaignAdRequest. */
                    interface ISuggestSmartCampaignAdRequest {

                        /** SuggestSmartCampaignAdRequest customer_id */
                        customer_id?: (string|null);

                        /** SuggestSmartCampaignAdRequest suggestion_info */
                        suggestion_info?: (google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo|null);
                    }

                    /** Represents a SuggestSmartCampaignAdRequest. */
                    class SuggestSmartCampaignAdRequest implements ISuggestSmartCampaignAdRequest {

                        /**
                         * Constructs a new SuggestSmartCampaignAdRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignAdRequest);

                        /** SuggestSmartCampaignAdRequest customer_id. */
                        public customer_id: string;

                        /** SuggestSmartCampaignAdRequest suggestion_info. */
                        public suggestion_info?: (google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo|null);

                        /**
                         * Creates a new SuggestSmartCampaignAdRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestSmartCampaignAdRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignAdRequest): google.ads.googleads.v23.services.SuggestSmartCampaignAdRequest;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignAdRequest.verify|verify} messages.
                         * @param message SuggestSmartCampaignAdRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestSmartCampaignAdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignAdRequest.verify|verify} messages.
                         * @param message SuggestSmartCampaignAdRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestSmartCampaignAdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignAdRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestSmartCampaignAdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestSmartCampaignAdRequest;

                        /**
                         * Decodes a SuggestSmartCampaignAdRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestSmartCampaignAdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestSmartCampaignAdRequest;

                        /**
                         * Verifies a SuggestSmartCampaignAdRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignAdRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestSmartCampaignAdRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestSmartCampaignAdRequest;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignAdRequest message. Also converts values to other types if specified.
                         * @param message SuggestSmartCampaignAdRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestSmartCampaignAdRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignAdRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestSmartCampaignAdRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SuggestSmartCampaignAdResponse. */
                    interface ISuggestSmartCampaignAdResponse {

                        /** SuggestSmartCampaignAdResponse ad_info */
                        ad_info?: (google.ads.googleads.v23.common.ISmartCampaignAdInfo|null);
                    }

                    /** Represents a SuggestSmartCampaignAdResponse. */
                    class SuggestSmartCampaignAdResponse implements ISuggestSmartCampaignAdResponse {

                        /**
                         * Constructs a new SuggestSmartCampaignAdResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignAdResponse);

                        /** SuggestSmartCampaignAdResponse ad_info. */
                        public ad_info?: (google.ads.googleads.v23.common.ISmartCampaignAdInfo|null);

                        /**
                         * Creates a new SuggestSmartCampaignAdResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestSmartCampaignAdResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestSmartCampaignAdResponse): google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse.verify|verify} messages.
                         * @param message SuggestSmartCampaignAdResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestSmartCampaignAdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse.verify|verify} messages.
                         * @param message SuggestSmartCampaignAdResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestSmartCampaignAdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignAdResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestSmartCampaignAdResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse;

                        /**
                         * Decodes a SuggestSmartCampaignAdResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestSmartCampaignAdResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse;

                        /**
                         * Verifies a SuggestSmartCampaignAdResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignAdResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestSmartCampaignAdResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignAdResponse message. Also converts values to other types if specified.
                         * @param message SuggestSmartCampaignAdResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestSmartCampaignAdResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignAdResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestSmartCampaignAdResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SuggestKeywordThemesRequest. */
                    interface ISuggestKeywordThemesRequest {

                        /** SuggestKeywordThemesRequest customer_id */
                        customer_id?: (string|null);

                        /** SuggestKeywordThemesRequest suggestion_info */
                        suggestion_info?: (google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo|null);
                    }

                    /** Represents a SuggestKeywordThemesRequest. */
                    class SuggestKeywordThemesRequest implements ISuggestKeywordThemesRequest {

                        /**
                         * Constructs a new SuggestKeywordThemesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemesRequest);

                        /** SuggestKeywordThemesRequest customer_id. */
                        public customer_id: string;

                        /** SuggestKeywordThemesRequest suggestion_info. */
                        public suggestion_info?: (google.ads.googleads.v23.services.ISmartCampaignSuggestionInfo|null);

                        /**
                         * Creates a new SuggestKeywordThemesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestKeywordThemesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemesRequest): google.ads.googleads.v23.services.SuggestKeywordThemesRequest;

                        /**
                         * Encodes the specified SuggestKeywordThemesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemesRequest.verify|verify} messages.
                         * @param message SuggestKeywordThemesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestKeywordThemesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestKeywordThemesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemesRequest.verify|verify} messages.
                         * @param message SuggestKeywordThemesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestKeywordThemesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestKeywordThemesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestKeywordThemesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestKeywordThemesRequest;

                        /**
                         * Decodes a SuggestKeywordThemesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestKeywordThemesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestKeywordThemesRequest;

                        /**
                         * Verifies a SuggestKeywordThemesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestKeywordThemesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestKeywordThemesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestKeywordThemesRequest;

                        /**
                         * Creates a plain object from a SuggestKeywordThemesRequest message. Also converts values to other types if specified.
                         * @param message SuggestKeywordThemesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestKeywordThemesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestKeywordThemesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestKeywordThemesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SuggestKeywordThemesResponse. */
                    interface ISuggestKeywordThemesResponse {

                        /** SuggestKeywordThemesResponse keyword_themes */
                        keyword_themes?: (google.ads.googleads.v23.services.SuggestKeywordThemesResponse.IKeywordTheme[]|null);
                    }

                    /** Represents a SuggestKeywordThemesResponse. */
                    class SuggestKeywordThemesResponse implements ISuggestKeywordThemesResponse {

                        /**
                         * Constructs a new SuggestKeywordThemesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemesResponse);

                        /** SuggestKeywordThemesResponse keyword_themes. */
                        public keyword_themes: google.ads.googleads.v23.services.SuggestKeywordThemesResponse.IKeywordTheme[];

                        /**
                         * Creates a new SuggestKeywordThemesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestKeywordThemesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestKeywordThemesResponse): google.ads.googleads.v23.services.SuggestKeywordThemesResponse;

                        /**
                         * Encodes the specified SuggestKeywordThemesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemesResponse.verify|verify} messages.
                         * @param message SuggestKeywordThemesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestKeywordThemesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestKeywordThemesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemesResponse.verify|verify} messages.
                         * @param message SuggestKeywordThemesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestKeywordThemesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestKeywordThemesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestKeywordThemesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestKeywordThemesResponse;

                        /**
                         * Decodes a SuggestKeywordThemesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestKeywordThemesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestKeywordThemesResponse;

                        /**
                         * Verifies a SuggestKeywordThemesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestKeywordThemesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestKeywordThemesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestKeywordThemesResponse;

                        /**
                         * Creates a plain object from a SuggestKeywordThemesResponse message. Also converts values to other types if specified.
                         * @param message SuggestKeywordThemesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestKeywordThemesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestKeywordThemesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestKeywordThemesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SuggestKeywordThemesResponse {

                        /** Properties of a KeywordTheme. */
                        interface IKeywordTheme {

                            /** KeywordTheme keyword_theme_constant */
                            keyword_theme_constant?: (google.ads.googleads.v23.resources.IKeywordThemeConstant|null);

                            /** KeywordTheme free_form_keyword_theme */
                            free_form_keyword_theme?: (string|null);
                        }

                        /** Represents a KeywordTheme. */
                        class KeywordTheme implements IKeywordTheme {

                            /**
                             * Constructs a new KeywordTheme.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.ads.googleads.v23.services.SuggestKeywordThemesResponse.IKeywordTheme);

                            /** KeywordTheme keyword_theme_constant. */
                            public keyword_theme_constant?: (google.ads.googleads.v23.resources.IKeywordThemeConstant|null);

                            /** KeywordTheme free_form_keyword_theme. */
                            public free_form_keyword_theme?: (string|null);

                            /** KeywordTheme keyword_theme. */
                            public keyword_theme?: ("keyword_theme_constant"|"free_form_keyword_theme");

                            /**
                             * Creates a new KeywordTheme instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns KeywordTheme instance
                             */
                            public static create(properties?: google.ads.googleads.v23.services.SuggestKeywordThemesResponse.IKeywordTheme): google.ads.googleads.v23.services.SuggestKeywordThemesResponse.KeywordTheme;

                            /**
                             * Encodes the specified KeywordTheme message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemesResponse.KeywordTheme.verify|verify} messages.
                             * @param message KeywordTheme message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.ads.googleads.v23.services.SuggestKeywordThemesResponse.IKeywordTheme, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified KeywordTheme message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestKeywordThemesResponse.KeywordTheme.verify|verify} messages.
                             * @param message KeywordTheme message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v23.services.SuggestKeywordThemesResponse.IKeywordTheme, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a KeywordTheme message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns KeywordTheme
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestKeywordThemesResponse.KeywordTheme;

                            /**
                             * Decodes a KeywordTheme message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns KeywordTheme
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestKeywordThemesResponse.KeywordTheme;

                            /**
                             * Verifies a KeywordTheme message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a KeywordTheme message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns KeywordTheme
                             */
                            public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestKeywordThemesResponse.KeywordTheme;

                            /**
                             * Creates a plain object from a KeywordTheme message. Also converts values to other types if specified.
                             * @param message KeywordTheme
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.ads.googleads.v23.services.SuggestKeywordThemesResponse.KeywordTheme, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this KeywordTheme to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for KeywordTheme
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Represents a ThirdPartyAppAnalyticsLinkService */
                    class ThirdPartyAppAnalyticsLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ThirdPartyAppAnalyticsLinkService 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 ThirdPartyAppAnalyticsLinkService 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): ThirdPartyAppAnalyticsLinkService;

                        /**
                         * Calls RegenerateShareableLinkId.
                         * @param request RegenerateShareableLinkIdRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RegenerateShareableLinkIdResponse
                         */
                        public regenerateShareableLinkId(request: google.ads.googleads.v23.services.IRegenerateShareableLinkIdRequest, callback: google.ads.googleads.v23.services.ThirdPartyAppAnalyticsLinkService.RegenerateShareableLinkIdCallback): void;

                        /**
                         * Calls RegenerateShareableLinkId.
                         * @param request RegenerateShareableLinkIdRequest message or plain object
                         * @returns Promise
                         */
                        public regenerateShareableLinkId(request: google.ads.googleads.v23.services.IRegenerateShareableLinkIdRequest): Promise<google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse>;
                    }

                    namespace ThirdPartyAppAnalyticsLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.ThirdPartyAppAnalyticsLinkService|regenerateShareableLinkId}.
                         * @param error Error, if any
                         * @param [response] RegenerateShareableLinkIdResponse
                         */
                        type RegenerateShareableLinkIdCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse) => void;
                    }

                    /** Properties of a RegenerateShareableLinkIdRequest. */
                    interface IRegenerateShareableLinkIdRequest {

                        /** RegenerateShareableLinkIdRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a RegenerateShareableLinkIdRequest. */
                    class RegenerateShareableLinkIdRequest implements IRegenerateShareableLinkIdRequest {

                        /**
                         * Constructs a new RegenerateShareableLinkIdRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRegenerateShareableLinkIdRequest);

                        /** RegenerateShareableLinkIdRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new RegenerateShareableLinkIdRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RegenerateShareableLinkIdRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRegenerateShareableLinkIdRequest): google.ads.googleads.v23.services.RegenerateShareableLinkIdRequest;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdRequest message. Does not implicitly {@link google.ads.googleads.v23.services.RegenerateShareableLinkIdRequest.verify|verify} messages.
                         * @param message RegenerateShareableLinkIdRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRegenerateShareableLinkIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RegenerateShareableLinkIdRequest.verify|verify} messages.
                         * @param message RegenerateShareableLinkIdRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRegenerateShareableLinkIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RegenerateShareableLinkIdRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RegenerateShareableLinkIdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RegenerateShareableLinkIdRequest;

                        /**
                         * Decodes a RegenerateShareableLinkIdRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RegenerateShareableLinkIdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RegenerateShareableLinkIdRequest;

                        /**
                         * Verifies a RegenerateShareableLinkIdRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RegenerateShareableLinkIdRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RegenerateShareableLinkIdRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RegenerateShareableLinkIdRequest;

                        /**
                         * Creates a plain object from a RegenerateShareableLinkIdRequest message. Also converts values to other types if specified.
                         * @param message RegenerateShareableLinkIdRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RegenerateShareableLinkIdRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RegenerateShareableLinkIdRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RegenerateShareableLinkIdRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RegenerateShareableLinkIdResponse. */
                    interface IRegenerateShareableLinkIdResponse {
                    }

                    /** Represents a RegenerateShareableLinkIdResponse. */
                    class RegenerateShareableLinkIdResponse implements IRegenerateShareableLinkIdResponse {

                        /**
                         * Constructs a new RegenerateShareableLinkIdResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IRegenerateShareableLinkIdResponse);

                        /**
                         * Creates a new RegenerateShareableLinkIdResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RegenerateShareableLinkIdResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IRegenerateShareableLinkIdResponse): google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdResponse message. Does not implicitly {@link google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse.verify|verify} messages.
                         * @param message RegenerateShareableLinkIdResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IRegenerateShareableLinkIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse.verify|verify} messages.
                         * @param message RegenerateShareableLinkIdResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IRegenerateShareableLinkIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RegenerateShareableLinkIdResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RegenerateShareableLinkIdResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse;

                        /**
                         * Decodes a RegenerateShareableLinkIdResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RegenerateShareableLinkIdResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse;

                        /**
                         * Verifies a RegenerateShareableLinkIdResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RegenerateShareableLinkIdResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RegenerateShareableLinkIdResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse;

                        /**
                         * Creates a plain object from a RegenerateShareableLinkIdResponse message. Also converts values to other types if specified.
                         * @param message RegenerateShareableLinkIdResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.RegenerateShareableLinkIdResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RegenerateShareableLinkIdResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RegenerateShareableLinkIdResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a TravelAssetSuggestionService */
                    class TravelAssetSuggestionService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new TravelAssetSuggestionService 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 TravelAssetSuggestionService 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): TravelAssetSuggestionService;

                        /**
                         * Calls SuggestTravelAssets.
                         * @param request SuggestTravelAssetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SuggestTravelAssetsResponse
                         */
                        public suggestTravelAssets(request: google.ads.googleads.v23.services.ISuggestTravelAssetsRequest, callback: google.ads.googleads.v23.services.TravelAssetSuggestionService.SuggestTravelAssetsCallback): void;

                        /**
                         * Calls SuggestTravelAssets.
                         * @param request SuggestTravelAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestTravelAssets(request: google.ads.googleads.v23.services.ISuggestTravelAssetsRequest): Promise<google.ads.googleads.v23.services.SuggestTravelAssetsResponse>;
                    }

                    namespace TravelAssetSuggestionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.TravelAssetSuggestionService|suggestTravelAssets}.
                         * @param error Error, if any
                         * @param [response] SuggestTravelAssetsResponse
                         */
                        type SuggestTravelAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.SuggestTravelAssetsResponse) => void;
                    }

                    /** Properties of a SuggestTravelAssetsRequest. */
                    interface ISuggestTravelAssetsRequest {

                        /** SuggestTravelAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** SuggestTravelAssetsRequest language_option */
                        language_option?: (string|null);

                        /** SuggestTravelAssetsRequest place_ids */
                        place_ids?: (string[]|null);
                    }

                    /** Represents a SuggestTravelAssetsRequest. */
                    class SuggestTravelAssetsRequest implements ISuggestTravelAssetsRequest {

                        /**
                         * Constructs a new SuggestTravelAssetsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestTravelAssetsRequest);

                        /** SuggestTravelAssetsRequest customer_id. */
                        public customer_id: string;

                        /** SuggestTravelAssetsRequest language_option. */
                        public language_option: string;

                        /** SuggestTravelAssetsRequest place_ids. */
                        public place_ids: string[];

                        /**
                         * Creates a new SuggestTravelAssetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestTravelAssetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestTravelAssetsRequest): google.ads.googleads.v23.services.SuggestTravelAssetsRequest;

                        /**
                         * Encodes the specified SuggestTravelAssetsRequest message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestTravelAssetsRequest.verify|verify} messages.
                         * @param message SuggestTravelAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestTravelAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestTravelAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestTravelAssetsRequest.verify|verify} messages.
                         * @param message SuggestTravelAssetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestTravelAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestTravelAssetsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestTravelAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestTravelAssetsRequest;

                        /**
                         * Decodes a SuggestTravelAssetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestTravelAssetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestTravelAssetsRequest;

                        /**
                         * Verifies a SuggestTravelAssetsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestTravelAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestTravelAssetsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestTravelAssetsRequest;

                        /**
                         * Creates a plain object from a SuggestTravelAssetsRequest message. Also converts values to other types if specified.
                         * @param message SuggestTravelAssetsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestTravelAssetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestTravelAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestTravelAssetsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SuggestTravelAssetsResponse. */
                    interface ISuggestTravelAssetsResponse {

                        /** SuggestTravelAssetsResponse hotel_asset_suggestions */
                        hotel_asset_suggestions?: (google.ads.googleads.v23.services.IHotelAssetSuggestion[]|null);
                    }

                    /** Represents a SuggestTravelAssetsResponse. */
                    class SuggestTravelAssetsResponse implements ISuggestTravelAssetsResponse {

                        /**
                         * Constructs a new SuggestTravelAssetsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.ISuggestTravelAssetsResponse);

                        /** SuggestTravelAssetsResponse hotel_asset_suggestions. */
                        public hotel_asset_suggestions: google.ads.googleads.v23.services.IHotelAssetSuggestion[];

                        /**
                         * Creates a new SuggestTravelAssetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestTravelAssetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.ISuggestTravelAssetsResponse): google.ads.googleads.v23.services.SuggestTravelAssetsResponse;

                        /**
                         * Encodes the specified SuggestTravelAssetsResponse message. Does not implicitly {@link google.ads.googleads.v23.services.SuggestTravelAssetsResponse.verify|verify} messages.
                         * @param message SuggestTravelAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.ISuggestTravelAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestTravelAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.SuggestTravelAssetsResponse.verify|verify} messages.
                         * @param message SuggestTravelAssetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.ISuggestTravelAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestTravelAssetsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SuggestTravelAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.SuggestTravelAssetsResponse;

                        /**
                         * Decodes a SuggestTravelAssetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SuggestTravelAssetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.SuggestTravelAssetsResponse;

                        /**
                         * Verifies a SuggestTravelAssetsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestTravelAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SuggestTravelAssetsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.SuggestTravelAssetsResponse;

                        /**
                         * Creates a plain object from a SuggestTravelAssetsResponse message. Also converts values to other types if specified.
                         * @param message SuggestTravelAssetsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.SuggestTravelAssetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestTravelAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SuggestTravelAssetsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelAssetSuggestion. */
                    interface IHotelAssetSuggestion {

                        /** HotelAssetSuggestion place_id */
                        place_id?: (string|null);

                        /** HotelAssetSuggestion final_url */
                        final_url?: (string|null);

                        /** HotelAssetSuggestion hotel_name */
                        hotel_name?: (string|null);

                        /** HotelAssetSuggestion call_to_action */
                        call_to_action?: (google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType|keyof typeof google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType|null);

                        /** HotelAssetSuggestion text_assets */
                        text_assets?: (google.ads.googleads.v23.services.IHotelTextAsset[]|null);

                        /** HotelAssetSuggestion image_assets */
                        image_assets?: (google.ads.googleads.v23.services.IHotelImageAsset[]|null);

                        /** HotelAssetSuggestion status */
                        status?: (google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum.HotelAssetSuggestionStatus|keyof typeof google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum.HotelAssetSuggestionStatus|null);
                    }

                    /** Represents a HotelAssetSuggestion. */
                    class HotelAssetSuggestion implements IHotelAssetSuggestion {

                        /**
                         * Constructs a new HotelAssetSuggestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IHotelAssetSuggestion);

                        /** HotelAssetSuggestion place_id. */
                        public place_id: string;

                        /** HotelAssetSuggestion final_url. */
                        public final_url: string;

                        /** HotelAssetSuggestion hotel_name. */
                        public hotel_name: string;

                        /** HotelAssetSuggestion call_to_action. */
                        public call_to_action: (google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType|keyof typeof google.ads.googleads.v23.enums.CallToActionTypeEnum.CallToActionType);

                        /** HotelAssetSuggestion text_assets. */
                        public text_assets: google.ads.googleads.v23.services.IHotelTextAsset[];

                        /** HotelAssetSuggestion image_assets. */
                        public image_assets: google.ads.googleads.v23.services.IHotelImageAsset[];

                        /** HotelAssetSuggestion status. */
                        public status: (google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum.HotelAssetSuggestionStatus|keyof typeof google.ads.googleads.v23.enums.HotelAssetSuggestionStatusEnum.HotelAssetSuggestionStatus);

                        /**
                         * Creates a new HotelAssetSuggestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelAssetSuggestion instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IHotelAssetSuggestion): google.ads.googleads.v23.services.HotelAssetSuggestion;

                        /**
                         * Encodes the specified HotelAssetSuggestion message. Does not implicitly {@link google.ads.googleads.v23.services.HotelAssetSuggestion.verify|verify} messages.
                         * @param message HotelAssetSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IHotelAssetSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelAssetSuggestion message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.HotelAssetSuggestion.verify|verify} messages.
                         * @param message HotelAssetSuggestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IHotelAssetSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelAssetSuggestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelAssetSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.HotelAssetSuggestion;

                        /**
                         * Decodes a HotelAssetSuggestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelAssetSuggestion
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.HotelAssetSuggestion;

                        /**
                         * Verifies a HotelAssetSuggestion message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelAssetSuggestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelAssetSuggestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.HotelAssetSuggestion;

                        /**
                         * Creates a plain object from a HotelAssetSuggestion message. Also converts values to other types if specified.
                         * @param message HotelAssetSuggestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.HotelAssetSuggestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelAssetSuggestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelAssetSuggestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelTextAsset. */
                    interface IHotelTextAsset {

                        /** HotelTextAsset text */
                        text?: (string|null);

                        /** HotelTextAsset asset_field_type */
                        asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents a HotelTextAsset. */
                    class HotelTextAsset implements IHotelTextAsset {

                        /**
                         * Constructs a new HotelTextAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IHotelTextAsset);

                        /** HotelTextAsset text. */
                        public text: string;

                        /** HotelTextAsset asset_field_type. */
                        public asset_field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /**
                         * Creates a new HotelTextAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelTextAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IHotelTextAsset): google.ads.googleads.v23.services.HotelTextAsset;

                        /**
                         * Encodes the specified HotelTextAsset message. Does not implicitly {@link google.ads.googleads.v23.services.HotelTextAsset.verify|verify} messages.
                         * @param message HotelTextAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IHotelTextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelTextAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.HotelTextAsset.verify|verify} messages.
                         * @param message HotelTextAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IHotelTextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelTextAsset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelTextAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.HotelTextAsset;

                        /**
                         * Decodes a HotelTextAsset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelTextAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.HotelTextAsset;

                        /**
                         * Verifies a HotelTextAsset message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelTextAsset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelTextAsset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.HotelTextAsset;

                        /**
                         * Creates a plain object from a HotelTextAsset message. Also converts values to other types if specified.
                         * @param message HotelTextAsset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.HotelTextAsset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelTextAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelTextAsset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HotelImageAsset. */
                    interface IHotelImageAsset {

                        /** HotelImageAsset uri */
                        uri?: (string|null);

                        /** HotelImageAsset asset_field_type */
                        asset_field_type?: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents a HotelImageAsset. */
                    class HotelImageAsset implements IHotelImageAsset {

                        /**
                         * Constructs a new HotelImageAsset.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IHotelImageAsset);

                        /** HotelImageAsset uri. */
                        public uri: string;

                        /** HotelImageAsset asset_field_type. */
                        public asset_field_type: (google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v23.enums.AssetFieldTypeEnum.AssetFieldType);

                        /**
                         * Creates a new HotelImageAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelImageAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IHotelImageAsset): google.ads.googleads.v23.services.HotelImageAsset;

                        /**
                         * Encodes the specified HotelImageAsset message. Does not implicitly {@link google.ads.googleads.v23.services.HotelImageAsset.verify|verify} messages.
                         * @param message HotelImageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IHotelImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelImageAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.HotelImageAsset.verify|verify} messages.
                         * @param message HotelImageAsset message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IHotelImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelImageAsset message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HotelImageAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.HotelImageAsset;

                        /**
                         * Decodes a HotelImageAsset message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelImageAsset
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.HotelImageAsset;

                        /**
                         * Verifies a HotelImageAsset message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelImageAsset message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HotelImageAsset
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.HotelImageAsset;

                        /**
                         * Creates a plain object from a HotelImageAsset message. Also converts values to other types if specified.
                         * @param message HotelImageAsset
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.HotelImageAsset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelImageAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HotelImageAsset
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a UserDataService */
                    class UserDataService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new UserDataService 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 UserDataService 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): UserDataService;

                        /**
                         * Calls UploadUserData.
                         * @param request UploadUserDataRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UploadUserDataResponse
                         */
                        public uploadUserData(request: google.ads.googleads.v23.services.IUploadUserDataRequest, callback: google.ads.googleads.v23.services.UserDataService.UploadUserDataCallback): void;

                        /**
                         * Calls UploadUserData.
                         * @param request UploadUserDataRequest message or plain object
                         * @returns Promise
                         */
                        public uploadUserData(request: google.ads.googleads.v23.services.IUploadUserDataRequest): Promise<google.ads.googleads.v23.services.UploadUserDataResponse>;
                    }

                    namespace UserDataService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.UserDataService|uploadUserData}.
                         * @param error Error, if any
                         * @param [response] UploadUserDataResponse
                         */
                        type UploadUserDataCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.UploadUserDataResponse) => void;
                    }

                    /** Properties of an UploadUserDataRequest. */
                    interface IUploadUserDataRequest {

                        /** UploadUserDataRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadUserDataRequest operations */
                        operations?: (google.ads.googleads.v23.services.IUserDataOperation[]|null);

                        /** UploadUserDataRequest customer_match_user_list_metadata */
                        customer_match_user_list_metadata?: (google.ads.googleads.v23.common.ICustomerMatchUserListMetadata|null);
                    }

                    /** Represents an UploadUserDataRequest. */
                    class UploadUserDataRequest implements IUploadUserDataRequest {

                        /**
                         * Constructs a new UploadUserDataRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadUserDataRequest);

                        /** UploadUserDataRequest customer_id. */
                        public customer_id: string;

                        /** UploadUserDataRequest operations. */
                        public operations: google.ads.googleads.v23.services.IUserDataOperation[];

                        /** UploadUserDataRequest customer_match_user_list_metadata. */
                        public customer_match_user_list_metadata?: (google.ads.googleads.v23.common.ICustomerMatchUserListMetadata|null);

                        /** UploadUserDataRequest metadata. */
                        public metadata?: "customer_match_user_list_metadata";

                        /**
                         * Creates a new UploadUserDataRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadUserDataRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadUserDataRequest): google.ads.googleads.v23.services.UploadUserDataRequest;

                        /**
                         * Encodes the specified UploadUserDataRequest message. Does not implicitly {@link google.ads.googleads.v23.services.UploadUserDataRequest.verify|verify} messages.
                         * @param message UploadUserDataRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadUserDataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadUserDataRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadUserDataRequest.verify|verify} messages.
                         * @param message UploadUserDataRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadUserDataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadUserDataRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadUserDataRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadUserDataRequest;

                        /**
                         * Decodes an UploadUserDataRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadUserDataRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadUserDataRequest;

                        /**
                         * Verifies an UploadUserDataRequest message.
                         * @param message Plain 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 UploadUserDataRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadUserDataRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadUserDataRequest;

                        /**
                         * Creates a plain object from an UploadUserDataRequest message. Also converts values to other types if specified.
                         * @param message UploadUserDataRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadUserDataRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadUserDataRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadUserDataRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserDataOperation. */
                    interface IUserDataOperation {

                        /** UserDataOperation create */
                        create?: (google.ads.googleads.v23.common.IUserData|null);

                        /** UserDataOperation remove */
                        remove?: (google.ads.googleads.v23.common.IUserData|null);
                    }

                    /** Represents a UserDataOperation. */
                    class UserDataOperation implements IUserDataOperation {

                        /**
                         * Constructs a new UserDataOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUserDataOperation);

                        /** UserDataOperation create. */
                        public create?: (google.ads.googleads.v23.common.IUserData|null);

                        /** UserDataOperation remove. */
                        public remove?: (google.ads.googleads.v23.common.IUserData|null);

                        /** UserDataOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new UserDataOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserDataOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUserDataOperation): google.ads.googleads.v23.services.UserDataOperation;

                        /**
                         * Encodes the specified UserDataOperation message. Does not implicitly {@link google.ads.googleads.v23.services.UserDataOperation.verify|verify} messages.
                         * @param message UserDataOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUserDataOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserDataOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UserDataOperation.verify|verify} messages.
                         * @param message UserDataOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUserDataOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserDataOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserDataOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UserDataOperation;

                        /**
                         * Decodes a UserDataOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserDataOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UserDataOperation;

                        /**
                         * Verifies a UserDataOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserDataOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserDataOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UserDataOperation;

                        /**
                         * Creates a plain object from a UserDataOperation message. Also converts values to other types if specified.
                         * @param message UserDataOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UserDataOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserDataOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserDataOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UploadUserDataResponse. */
                    interface IUploadUserDataResponse {

                        /** UploadUserDataResponse upload_date_time */
                        upload_date_time?: (string|null);

                        /** UploadUserDataResponse received_operations_count */
                        received_operations_count?: (number|null);
                    }

                    /** Represents an UploadUserDataResponse. */
                    class UploadUserDataResponse implements IUploadUserDataResponse {

                        /**
                         * Constructs a new UploadUserDataResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUploadUserDataResponse);

                        /** UploadUserDataResponse upload_date_time. */
                        public upload_date_time?: (string|null);

                        /** UploadUserDataResponse received_operations_count. */
                        public received_operations_count?: (number|null);

                        /**
                         * Creates a new UploadUserDataResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadUserDataResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUploadUserDataResponse): google.ads.googleads.v23.services.UploadUserDataResponse;

                        /**
                         * Encodes the specified UploadUserDataResponse message. Does not implicitly {@link google.ads.googleads.v23.services.UploadUserDataResponse.verify|verify} messages.
                         * @param message UploadUserDataResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUploadUserDataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadUserDataResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UploadUserDataResponse.verify|verify} messages.
                         * @param message UploadUserDataResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUploadUserDataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadUserDataResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UploadUserDataResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UploadUserDataResponse;

                        /**
                         * Decodes an UploadUserDataResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UploadUserDataResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UploadUserDataResponse;

                        /**
                         * Verifies an UploadUserDataResponse message.
                         * @param message Plain 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 UploadUserDataResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UploadUserDataResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UploadUserDataResponse;

                        /**
                         * Creates a plain object from an UploadUserDataResponse message. Also converts values to other types if specified.
                         * @param message UploadUserDataResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UploadUserDataResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadUserDataResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UploadUserDataResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Represents a UserListCustomerTypeService */
                    class UserListCustomerTypeService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new UserListCustomerTypeService 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 UserListCustomerTypeService 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): UserListCustomerTypeService;

                        /**
                         * Calls MutateUserListCustomerTypes.
                         * @param request MutateUserListCustomerTypesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateUserListCustomerTypesResponse
                         */
                        public mutateUserListCustomerTypes(request: google.ads.googleads.v23.services.IMutateUserListCustomerTypesRequest, callback: google.ads.googleads.v23.services.UserListCustomerTypeService.MutateUserListCustomerTypesCallback): void;

                        /**
                         * Calls MutateUserListCustomerTypes.
                         * @param request MutateUserListCustomerTypesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateUserListCustomerTypes(request: google.ads.googleads.v23.services.IMutateUserListCustomerTypesRequest): Promise<google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse>;
                    }

                    namespace UserListCustomerTypeService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v23.services.UserListCustomerTypeService|mutateUserListCustomerTypes}.
                         * @param error Error, if any
                         * @param [response] MutateUserListCustomerTypesResponse
                         */
                        type MutateUserListCustomerTypesCallback = (error: (Error|null), response?: google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse) => void;
                    }

                    /** Properties of a MutateUserListCustomerTypesRequest. */
                    interface IMutateUserListCustomerTypesRequest {

                        /** MutateUserListCustomerTypesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateUserListCustomerTypesRequest operations */
                        operations?: (google.ads.googleads.v23.services.IUserListCustomerTypeOperation[]|null);

                        /** MutateUserListCustomerTypesRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateUserListCustomerTypesRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateUserListCustomerTypesRequest. */
                    class MutateUserListCustomerTypesRequest implements IMutateUserListCustomerTypesRequest {

                        /**
                         * Constructs a new MutateUserListCustomerTypesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateUserListCustomerTypesRequest);

                        /** MutateUserListCustomerTypesRequest customer_id. */
                        public customer_id: string;

                        /** MutateUserListCustomerTypesRequest operations. */
                        public operations: google.ads.googleads.v23.services.IUserListCustomerTypeOperation[];

                        /** MutateUserListCustomerTypesRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateUserListCustomerTypesRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateUserListCustomerTypesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateUserListCustomerTypesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateUserListCustomerTypesRequest): google.ads.googleads.v23.services.MutateUserListCustomerTypesRequest;

                        /**
                         * Encodes the specified MutateUserListCustomerTypesRequest message. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListCustomerTypesRequest.verify|verify} messages.
                         * @param message MutateUserListCustomerTypesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateUserListCustomerTypesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListCustomerTypesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListCustomerTypesRequest.verify|verify} messages.
                         * @param message MutateUserListCustomerTypesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateUserListCustomerTypesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListCustomerTypesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateUserListCustomerTypesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateUserListCustomerTypesRequest;

                        /**
                         * Decodes a MutateUserListCustomerTypesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateUserListCustomerTypesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateUserListCustomerTypesRequest;

                        /**
                         * Verifies a MutateUserListCustomerTypesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListCustomerTypesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateUserListCustomerTypesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateUserListCustomerTypesRequest;

                        /**
                         * Creates a plain object from a MutateUserListCustomerTypesRequest message. Also converts values to other types if specified.
                         * @param message MutateUserListCustomerTypesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateUserListCustomerTypesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListCustomerTypesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateUserListCustomerTypesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserListCustomerTypeOperation. */
                    interface IUserListCustomerTypeOperation {

                        /** UserListCustomerTypeOperation create */
                        create?: (google.ads.googleads.v23.resources.IUserListCustomerType|null);

                        /** UserListCustomerTypeOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a UserListCustomerTypeOperation. */
                    class UserListCustomerTypeOperation implements IUserListCustomerTypeOperation {

                        /**
                         * Constructs a new UserListCustomerTypeOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IUserListCustomerTypeOperation);

                        /** UserListCustomerTypeOperation create. */
                        public create?: (google.ads.googleads.v23.resources.IUserListCustomerType|null);

                        /** UserListCustomerTypeOperation remove. */
                        public remove?: (string|null);

                        /** UserListCustomerTypeOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new UserListCustomerTypeOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListCustomerTypeOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IUserListCustomerTypeOperation): google.ads.googleads.v23.services.UserListCustomerTypeOperation;

                        /**
                         * Encodes the specified UserListCustomerTypeOperation message. Does not implicitly {@link google.ads.googleads.v23.services.UserListCustomerTypeOperation.verify|verify} messages.
                         * @param message UserListCustomerTypeOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IUserListCustomerTypeOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListCustomerTypeOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.UserListCustomerTypeOperation.verify|verify} messages.
                         * @param message UserListCustomerTypeOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IUserListCustomerTypeOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListCustomerTypeOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserListCustomerTypeOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.UserListCustomerTypeOperation;

                        /**
                         * Decodes a UserListCustomerTypeOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListCustomerTypeOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.UserListCustomerTypeOperation;

                        /**
                         * Verifies a UserListCustomerTypeOperation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListCustomerTypeOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserListCustomerTypeOperation
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.UserListCustomerTypeOperation;

                        /**
                         * Creates a plain object from a UserListCustomerTypeOperation message. Also converts values to other types if specified.
                         * @param message UserListCustomerTypeOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.UserListCustomerTypeOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListCustomerTypeOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserListCustomerTypeOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateUserListCustomerTypesResponse. */
                    interface IMutateUserListCustomerTypesResponse {

                        /** MutateUserListCustomerTypesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateUserListCustomerTypesResponse results */
                        results?: (google.ads.googleads.v23.services.IMutateUserListCustomerTypeResult[]|null);
                    }

                    /** Represents a MutateUserListCustomerTypesResponse. */
                    class MutateUserListCustomerTypesResponse implements IMutateUserListCustomerTypesResponse {

                        /**
                         * Constructs a new MutateUserListCustomerTypesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateUserListCustomerTypesResponse);

                        /** MutateUserListCustomerTypesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateUserListCustomerTypesResponse results. */
                        public results: google.ads.googleads.v23.services.IMutateUserListCustomerTypeResult[];

                        /**
                         * Creates a new MutateUserListCustomerTypesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateUserListCustomerTypesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateUserListCustomerTypesResponse): google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse;

                        /**
                         * Encodes the specified MutateUserListCustomerTypesResponse message. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse.verify|verify} messages.
                         * @param message MutateUserListCustomerTypesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateUserListCustomerTypesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListCustomerTypesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse.verify|verify} messages.
                         * @param message MutateUserListCustomerTypesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateUserListCustomerTypesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListCustomerTypesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateUserListCustomerTypesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse;

                        /**
                         * Decodes a MutateUserListCustomerTypesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateUserListCustomerTypesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse;

                        /**
                         * Verifies a MutateUserListCustomerTypesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListCustomerTypesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateUserListCustomerTypesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse;

                        /**
                         * Creates a plain object from a MutateUserListCustomerTypesResponse message. Also converts values to other types if specified.
                         * @param message MutateUserListCustomerTypesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateUserListCustomerTypesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListCustomerTypesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateUserListCustomerTypesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MutateUserListCustomerTypeResult. */
                    interface IMutateUserListCustomerTypeResult {

                        /** MutateUserListCustomerTypeResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateUserListCustomerTypeResult. */
                    class MutateUserListCustomerTypeResult implements IMutateUserListCustomerTypeResult {

                        /**
                         * Constructs a new MutateUserListCustomerTypeResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.ads.googleads.v23.services.IMutateUserListCustomerTypeResult);

                        /** MutateUserListCustomerTypeResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateUserListCustomerTypeResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateUserListCustomerTypeResult instance
                         */
                        public static create(properties?: google.ads.googleads.v23.services.IMutateUserListCustomerTypeResult): google.ads.googleads.v23.services.MutateUserListCustomerTypeResult;

                        /**
                         * Encodes the specified MutateUserListCustomerTypeResult message. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListCustomerTypeResult.verify|verify} messages.
                         * @param message MutateUserListCustomerTypeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.ads.googleads.v23.services.IMutateUserListCustomerTypeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListCustomerTypeResult message, length delimited. Does not implicitly {@link google.ads.googleads.v23.services.MutateUserListCustomerTypeResult.verify|verify} messages.
                         * @param message MutateUserListCustomerTypeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v23.services.IMutateUserListCustomerTypeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListCustomerTypeResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MutateUserListCustomerTypeResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.ads.googleads.v23.services.MutateUserListCustomerTypeResult;

                        /**
                         * Decodes a MutateUserListCustomerTypeResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateUserListCustomerTypeResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v23.services.MutateUserListCustomerTypeResult;

                        /**
                         * Verifies a MutateUserListCustomerTypeResult message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListCustomerTypeResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MutateUserListCustomerTypeResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.ads.googleads.v23.services.MutateUserListCustomerTypeResult;

                        /**
                         * Creates a plain object from a MutateUserListCustomerTypeResult message. Also converts values to other types if specified.
                         * @param message MutateUserListCustomerTypeResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.ads.googleads.v23.services.MutateUserListCustomerTypeResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListCustomerTypeResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MutateUserListCustomerTypeResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }
        }
    }

    /** Namespace api. */
    namespace api {

        /** FieldBehavior enum. */
        enum FieldBehavior {
            FIELD_BEHAVIOR_UNSPECIFIED = 0,
            OPTIONAL = 1,
            REQUIRED = 2,
            OUTPUT_ONLY = 3,
            INPUT_ONLY = 4,
            IMMUTABLE = 5,
            UNORDERED_LIST = 6,
            NON_EMPTY_DEFAULT = 7,
            IDENTIFIER = 8
        }

        /** Properties of a ResourceDescriptor. */
        interface IResourceDescriptor {

            /** ResourceDescriptor type */
            type?: (string|null);

            /** ResourceDescriptor pattern */
            pattern?: (string[]|null);

            /** ResourceDescriptor name_field */
            name_field?: (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 name_field. */
            public name_field: 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 child_type */
            child_type?: (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 child_type. */
            public child_type: string;

            /**
             * Creates a new ResourceReference instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResourceReference instance
             */
            public static create(properties?: google.api.IResourceReference): google.api.ResourceReference;

            /**
             * Encodes the specified ResourceReference message. Does not implicitly {@link google.api.ResourceReference.verify|verify} messages.
             * @param message ResourceReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IResourceReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResourceReference message, length delimited. Does not implicitly {@link google.api.ResourceReference.verify|verify} messages.
             * @param message ResourceReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IResourceReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResourceReference message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResourceReference
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ResourceReference;

            /**
             * Decodes a ResourceReference message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResourceReference
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ResourceReference;

            /**
             * Verifies a ResourceReference message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ResourceReference message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResourceReference
             */
            public static fromObject(object: { [k: string]: any }): google.api.ResourceReference;

            /**
             * Creates a plain object from a ResourceReference message. Also converts values to other types if specified.
             * @param message ResourceReference
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.ResourceReference, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResourceReference to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResourceReference
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Http. */
        interface IHttp {

            /** Http rules */
            rules?: (google.api.IHttpRule[]|null);

            /** Http fully_decode_reserved_expansion */
            fully_decode_reserved_expansion?: (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 fully_decode_reserved_expansion. */
            public fully_decode_reserved_expansion: 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 response_body */
            response_body?: (string|null);

            /** HttpRule additional_bindings */
            additional_bindings?: (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 response_body. */
            public response_body: string;

            /** HttpRule additional_bindings. */
            public additional_bindings: 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 reference_docs_uri */
            reference_docs_uri?: (string|null);

            /** CommonLanguageSettings destinations */
            destinations?: (google.api.ClientLibraryDestination[]|null);

            /** CommonLanguageSettings selective_gapic_generation */
            selective_gapic_generation?: (google.api.ISelectiveGapicGeneration|null);
        }

        /** Represents a CommonLanguageSettings. */
        class CommonLanguageSettings implements ICommonLanguageSettings {

            /**
             * Constructs a new CommonLanguageSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICommonLanguageSettings);

            /** CommonLanguageSettings reference_docs_uri. */
            public reference_docs_uri: string;

            /** CommonLanguageSettings destinations. */
            public destinations: google.api.ClientLibraryDestination[];

            /** CommonLanguageSettings selective_gapic_generation. */
            public selective_gapic_generation?: (google.api.ISelectiveGapicGeneration|null);

            /**
             * 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 launch_stage */
            launch_stage?: (google.api.LaunchStage|keyof typeof google.api.LaunchStage|null);

            /** ClientLibrarySettings rest_numeric_enums */
            rest_numeric_enums?: (boolean|null);

            /** ClientLibrarySettings java_settings */
            java_settings?: (google.api.IJavaSettings|null);

            /** ClientLibrarySettings cpp_settings */
            cpp_settings?: (google.api.ICppSettings|null);

            /** ClientLibrarySettings php_settings */
            php_settings?: (google.api.IPhpSettings|null);

            /** ClientLibrarySettings python_settings */
            python_settings?: (google.api.IPythonSettings|null);

            /** ClientLibrarySettings node_settings */
            node_settings?: (google.api.INodeSettings|null);

            /** ClientLibrarySettings dotnet_settings */
            dotnet_settings?: (google.api.IDotnetSettings|null);

            /** ClientLibrarySettings ruby_settings */
            ruby_settings?: (google.api.IRubySettings|null);

            /** ClientLibrarySettings go_settings */
            go_settings?: (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 launch_stage. */
            public launch_stage: (google.api.LaunchStage|keyof typeof google.api.LaunchStage);

            /** ClientLibrarySettings rest_numeric_enums. */
            public rest_numeric_enums: boolean;

            /** ClientLibrarySettings java_settings. */
            public java_settings?: (google.api.IJavaSettings|null);

            /** ClientLibrarySettings cpp_settings. */
            public cpp_settings?: (google.api.ICppSettings|null);

            /** ClientLibrarySettings php_settings. */
            public php_settings?: (google.api.IPhpSettings|null);

            /** ClientLibrarySettings python_settings. */
            public python_settings?: (google.api.IPythonSettings|null);

            /** ClientLibrarySettings node_settings. */
            public node_settings?: (google.api.INodeSettings|null);

            /** ClientLibrarySettings dotnet_settings. */
            public dotnet_settings?: (google.api.IDotnetSettings|null);

            /** ClientLibrarySettings ruby_settings. */
            public ruby_settings?: (google.api.IRubySettings|null);

            /** ClientLibrarySettings go_settings. */
            public go_settings?: (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 method_settings */
            method_settings?: (google.api.IMethodSettings[]|null);

            /** Publishing new_issue_uri */
            new_issue_uri?: (string|null);

            /** Publishing documentation_uri */
            documentation_uri?: (string|null);

            /** Publishing api_short_name */
            api_short_name?: (string|null);

            /** Publishing github_label */
            github_label?: (string|null);

            /** Publishing codeowner_github_teams */
            codeowner_github_teams?: (string[]|null);

            /** Publishing doc_tag_prefix */
            doc_tag_prefix?: (string|null);

            /** Publishing organization */
            organization?: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization|null);

            /** Publishing library_settings */
            library_settings?: (google.api.IClientLibrarySettings[]|null);

            /** Publishing proto_reference_documentation_uri */
            proto_reference_documentation_uri?: (string|null);

            /** Publishing rest_reference_documentation_uri */
            rest_reference_documentation_uri?: (string|null);
        }

        /** Represents a Publishing. */
        class Publishing implements IPublishing {

            /**
             * Constructs a new Publishing.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IPublishing);

            /** Publishing method_settings. */
            public method_settings: google.api.IMethodSettings[];

            /** Publishing new_issue_uri. */
            public new_issue_uri: string;

            /** Publishing documentation_uri. */
            public documentation_uri: string;

            /** Publishing api_short_name. */
            public api_short_name: string;

            /** Publishing github_label. */
            public github_label: string;

            /** Publishing codeowner_github_teams. */
            public codeowner_github_teams: string[];

            /** Publishing doc_tag_prefix. */
            public doc_tag_prefix: string;

            /** Publishing organization. */
            public organization: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization);

            /** Publishing library_settings. */
            public library_settings: google.api.IClientLibrarySettings[];

            /** Publishing proto_reference_documentation_uri. */
            public proto_reference_documentation_uri: string;

            /** Publishing rest_reference_documentation_uri. */
            public rest_reference_documentation_uri: 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 library_package */
            library_package?: (string|null);

            /** JavaSettings service_class_names */
            service_class_names?: ({ [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 library_package. */
            public library_package: string;

            /** JavaSettings service_class_names. */
            public service_class_names: { [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);

            /** PythonSettings experimental_features */
            experimental_features?: (google.api.PythonSettings.IExperimentalFeatures|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);

            /** PythonSettings experimental_features. */
            public experimental_features?: (google.api.PythonSettings.IExperimentalFeatures|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;
        }

        namespace PythonSettings {

            /** Properties of an ExperimentalFeatures. */
            interface IExperimentalFeatures {

                /** ExperimentalFeatures rest_async_io_enabled */
                rest_async_io_enabled?: (boolean|null);

                /** ExperimentalFeatures protobuf_pythonic_types_enabled */
                protobuf_pythonic_types_enabled?: (boolean|null);

                /** ExperimentalFeatures unversioned_package_disabled */
                unversioned_package_disabled?: (boolean|null);
            }

            /** Represents an ExperimentalFeatures. */
            class ExperimentalFeatures implements IExperimentalFeatures {

                /**
                 * Constructs a new ExperimentalFeatures.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.api.PythonSettings.IExperimentalFeatures);

                /** ExperimentalFeatures rest_async_io_enabled. */
                public rest_async_io_enabled: boolean;

                /** ExperimentalFeatures protobuf_pythonic_types_enabled. */
                public protobuf_pythonic_types_enabled: boolean;

                /** ExperimentalFeatures unversioned_package_disabled. */
                public unversioned_package_disabled: boolean;

                /**
                 * Creates a new ExperimentalFeatures instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ExperimentalFeatures instance
                 */
                public static create(properties?: google.api.PythonSettings.IExperimentalFeatures): google.api.PythonSettings.ExperimentalFeatures;

                /**
                 * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
                 * @param message ExperimentalFeatures message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
                 * @param message ExperimentalFeatures message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an ExperimentalFeatures message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ExperimentalFeatures
                 * @throws {Error} If the payload is not 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.ExperimentalFeatures;

                /**
                 * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ExperimentalFeatures
                 * @throws {Error} If the payload 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.ExperimentalFeatures;

                /**
                 * Verifies an ExperimentalFeatures message.
                 * @param message Plain 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 ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ExperimentalFeatures
                 */
                public static fromObject(object: { [k: string]: any }): google.api.PythonSettings.ExperimentalFeatures;

                /**
                 * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
                 * @param message ExperimentalFeatures
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.api.PythonSettings.ExperimentalFeatures, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ExperimentalFeatures to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ExperimentalFeatures
                 * @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 renamed_services */
            renamed_services?: ({ [k: string]: string }|null);

            /** DotnetSettings renamed_resources */
            renamed_resources?: ({ [k: string]: string }|null);

            /** DotnetSettings ignored_resources */
            ignored_resources?: (string[]|null);

            /** DotnetSettings forced_namespace_aliases */
            forced_namespace_aliases?: (string[]|null);

            /** DotnetSettings handwritten_signatures */
            handwritten_signatures?: (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 renamed_services. */
            public renamed_services: { [k: string]: string };

            /** DotnetSettings renamed_resources. */
            public renamed_resources: { [k: string]: string };

            /** DotnetSettings ignored_resources. */
            public ignored_resources: string[];

            /** DotnetSettings forced_namespace_aliases. */
            public forced_namespace_aliases: string[];

            /** DotnetSettings handwritten_signatures. */
            public handwritten_signatures: 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);

            /** GoSettings renamed_services */
            renamed_services?: ({ [k: string]: string }|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);

            /** GoSettings renamed_services. */
            public renamed_services: { [k: string]: string };

            /**
             * 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 long_running */
            long_running?: (google.api.MethodSettings.ILongRunning|null);

            /** MethodSettings auto_populated_fields */
            auto_populated_fields?: (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 long_running. */
            public long_running?: (google.api.MethodSettings.ILongRunning|null);

            /** MethodSettings auto_populated_fields. */
            public auto_populated_fields: 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 initial_poll_delay */
                initial_poll_delay?: (google.protobuf.IDuration|null);

                /** LongRunning poll_delay_multiplier */
                poll_delay_multiplier?: (number|null);

                /** LongRunning max_poll_delay */
                max_poll_delay?: (google.protobuf.IDuration|null);

                /** LongRunning total_poll_timeout */
                total_poll_timeout?: (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 initial_poll_delay. */
                public initial_poll_delay?: (google.protobuf.IDuration|null);

                /** LongRunning poll_delay_multiplier. */
                public poll_delay_multiplier: number;

                /** LongRunning max_poll_delay. */
                public max_poll_delay?: (google.protobuf.IDuration|null);

                /** LongRunning total_poll_timeout. */
                public total_poll_timeout?: (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
        }

        /** Properties of a SelectiveGapicGeneration. */
        interface ISelectiveGapicGeneration {

            /** SelectiveGapicGeneration methods */
            methods?: (string[]|null);

            /** SelectiveGapicGeneration generate_omitted_as_internal */
            generate_omitted_as_internal?: (boolean|null);
        }

        /** Represents a SelectiveGapicGeneration. */
        class SelectiveGapicGeneration implements ISelectiveGapicGeneration {

            /**
             * Constructs a new SelectiveGapicGeneration.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ISelectiveGapicGeneration);

            /** SelectiveGapicGeneration methods. */
            public methods: string[];

            /** SelectiveGapicGeneration generate_omitted_as_internal. */
            public generate_omitted_as_internal: boolean;

            /**
             * Creates a new SelectiveGapicGeneration instance using the specified properties.
             * @param [properties] Properties to set
             * @returns SelectiveGapicGeneration instance
             */
            public static create(properties?: google.api.ISelectiveGapicGeneration): google.api.SelectiveGapicGeneration;

            /**
             * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
             * @param message SelectiveGapicGeneration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
             * @param message SelectiveGapicGeneration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns SelectiveGapicGeneration
             * @throws {Error} If the payload is not 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.SelectiveGapicGeneration;

            /**
             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns SelectiveGapicGeneration
             * @throws {Error} If the payload 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.SelectiveGapicGeneration;

            /**
             * Verifies a SelectiveGapicGeneration message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns SelectiveGapicGeneration
             */
            public static fromObject(object: { [k: string]: any }): google.api.SelectiveGapicGeneration;

            /**
             * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
             * @param message SelectiveGapicGeneration
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.SelectiveGapicGeneration, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this SelectiveGapicGeneration to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for SelectiveGapicGeneration
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** LaunchStage enum. */
        enum LaunchStage {
            LAUNCH_STAGE_UNSPECIFIED = 0,
            UNIMPLEMENTED = 6,
            PRELAUNCH = 7,
            EARLY_ACCESS = 1,
            ALPHA = 2,
            BETA = 3,
            GA = 4,
            DEPRECATED = 5
        }

        /** Properties of a FieldInfo. */
        interface IFieldInfo {

            /** FieldInfo format */
            format?: (google.api.FieldInfo.Format|keyof typeof google.api.FieldInfo.Format|null);

            /** FieldInfo referenced_types */
            referenced_types?: (google.api.ITypeReference[]|null);
        }

        /** Represents a FieldInfo. */
        class FieldInfo implements IFieldInfo {

            /**
             * Constructs a new FieldInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IFieldInfo);

            /** FieldInfo format. */
            public format: (google.api.FieldInfo.Format|keyof typeof google.api.FieldInfo.Format);

            /** FieldInfo referenced_types. */
            public referenced_types: google.api.ITypeReference[];

            /**
             * Creates a new FieldInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FieldInfo instance
             */
            public static create(properties?: google.api.IFieldInfo): google.api.FieldInfo;

            /**
             * Encodes the specified FieldInfo message. Does not implicitly {@link google.api.FieldInfo.verify|verify} messages.
             * @param message FieldInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IFieldInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FieldInfo message, length delimited. Does not implicitly {@link google.api.FieldInfo.verify|verify} messages.
             * @param message FieldInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IFieldInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FieldInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FieldInfo
             * @throws {Error} If the payload is not 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.FieldInfo;

            /**
             * Decodes a FieldInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FieldInfo
             * @throws {Error} If the payload 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.FieldInfo;

            /**
             * Verifies a FieldInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FieldInfo message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FieldInfo
             */
            public static fromObject(object: { [k: string]: any }): google.api.FieldInfo;

            /**
             * Creates a plain object from a FieldInfo message. Also converts values to other types if specified.
             * @param message FieldInfo
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.FieldInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FieldInfo
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace FieldInfo {

            /** Format enum. */
            enum Format {
                FORMAT_UNSPECIFIED = 0,
                UUID4 = 1,
                IPV4 = 2,
                IPV6 = 3,
                IPV4_OR_IPV6 = 4
            }
        }

        /** Properties of a TypeReference. */
        interface ITypeReference {

            /** TypeReference type_name */
            type_name?: (string|null);
        }

        /** Represents a TypeReference. */
        class TypeReference implements ITypeReference {

            /**
             * Constructs a new TypeReference.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ITypeReference);

            /** TypeReference type_name. */
            public type_name: string;

            /**
             * Creates a new TypeReference instance using the specified properties.
             * @param [properties] Properties to set
             * @returns TypeReference instance
             */
            public static create(properties?: google.api.ITypeReference): google.api.TypeReference;

            /**
             * Encodes the specified TypeReference message. Does not implicitly {@link google.api.TypeReference.verify|verify} messages.
             * @param message TypeReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ITypeReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified TypeReference message, length delimited. Does not implicitly {@link google.api.TypeReference.verify|verify} messages.
             * @param message TypeReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ITypeReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a TypeReference message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns TypeReference
             * @throws {Error} If the payload is not 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.TypeReference;

            /**
             * Decodes a TypeReference message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns TypeReference
             * @throws {Error} If the payload 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.TypeReference;

            /**
             * Verifies a TypeReference message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a TypeReference message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns TypeReference
             */
            public static fromObject(object: { [k: string]: any }): google.api.TypeReference;

            /**
             * Creates a plain object from a TypeReference message. Also converts values to other types if specified.
             * @param message TypeReference
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.TypeReference, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this TypeReference to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for TypeReference
             * @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_LEGACY = 900,
            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 public_dependency */
            public_dependency?: (number[]|null);

            /** FileDescriptorProto weak_dependency */
            weak_dependency?: (number[]|null);

            /** FileDescriptorProto option_dependency */
            option_dependency?: (string[]|null);

            /** FileDescriptorProto message_type */
            message_type?: (google.protobuf.IDescriptorProto[]|null);

            /** FileDescriptorProto enum_type */
            enum_type?: (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 source_code_info */
            source_code_info?: (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 public_dependency. */
            public public_dependency: number[];

            /** FileDescriptorProto weak_dependency. */
            public weak_dependency: number[];

            /** FileDescriptorProto option_dependency. */
            public option_dependency: string[];

            /** FileDescriptorProto message_type. */
            public message_type: google.protobuf.IDescriptorProto[];

            /** FileDescriptorProto enum_type. */
            public enum_type: 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 source_code_info. */
            public source_code_info?: (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 nested_type */
            nested_type?: (google.protobuf.IDescriptorProto[]|null);

            /** DescriptorProto enum_type */
            enum_type?: (google.protobuf.IEnumDescriptorProto[]|null);

            /** DescriptorProto extension_range */
            extension_range?: (google.protobuf.DescriptorProto.IExtensionRange[]|null);

            /** DescriptorProto oneof_decl */
            oneof_decl?: (google.protobuf.IOneofDescriptorProto[]|null);

            /** DescriptorProto options */
            options?: (google.protobuf.IMessageOptions|null);

            /** DescriptorProto reserved_range */
            reserved_range?: (google.protobuf.DescriptorProto.IReservedRange[]|null);

            /** DescriptorProto reserved_name */
            reserved_name?: (string[]|null);

            /** DescriptorProto visibility */
            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|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 nested_type. */
            public nested_type: google.protobuf.IDescriptorProto[];

            /** DescriptorProto enum_type. */
            public enum_type: google.protobuf.IEnumDescriptorProto[];

            /** DescriptorProto extension_range. */
            public extension_range: google.protobuf.DescriptorProto.IExtensionRange[];

            /** DescriptorProto oneof_decl. */
            public oneof_decl: google.protobuf.IOneofDescriptorProto[];

            /** DescriptorProto options. */
            public options?: (google.protobuf.IMessageOptions|null);

            /** DescriptorProto reserved_range. */
            public reserved_range: google.protobuf.DescriptorProto.IReservedRange[];

            /** DescriptorProto reserved_name. */
            public reserved_name: string[];

            /** DescriptorProto visibility. */
            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);

            /**
             * 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 uninterpreted_option */
            uninterpreted_option?: (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 uninterpreted_option. */
            public uninterpreted_option: 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 full_name */
                full_name?: (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 full_name. */
                public full_name: 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 type_name */
            type_name?: (string|null);

            /** FieldDescriptorProto extendee */
            extendee?: (string|null);

            /** FieldDescriptorProto default_value */
            default_value?: (string|null);

            /** FieldDescriptorProto oneof_index */
            oneof_index?: (number|null);

            /** FieldDescriptorProto json_name */
            json_name?: (string|null);

            /** FieldDescriptorProto options */
            options?: (google.protobuf.IFieldOptions|null);

            /** FieldDescriptorProto proto3_optional */
            proto3_optional?: (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 type_name. */
            public type_name: string;

            /** FieldDescriptorProto extendee. */
            public extendee: string;

            /** FieldDescriptorProto default_value. */
            public default_value: string;

            /** FieldDescriptorProto oneof_index. */
            public oneof_index: number;

            /** FieldDescriptorProto json_name. */
            public json_name: string;

            /** FieldDescriptorProto options. */
            public options?: (google.protobuf.IFieldOptions|null);

            /** FieldDescriptorProto proto3_optional. */
            public proto3_optional: 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 reserved_range */
            reserved_range?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null);

            /** EnumDescriptorProto reserved_name */
            reserved_name?: (string[]|null);

            /** EnumDescriptorProto visibility */
            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|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 reserved_range. */
            public reserved_range: google.protobuf.EnumDescriptorProto.IEnumReservedRange[];

            /** EnumDescriptorProto reserved_name. */
            public reserved_name: string[];

            /** EnumDescriptorProto visibility. */
            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);

            /**
             * 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 input_type */
            input_type?: (string|null);

            /** MethodDescriptorProto output_type */
            output_type?: (string|null);

            /** MethodDescriptorProto options */
            options?: (google.protobuf.IMethodOptions|null);

            /** MethodDescriptorProto client_streaming */
            client_streaming?: (boolean|null);

            /** MethodDescriptorProto server_streaming */
            server_streaming?: (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 input_type. */
            public input_type: string;

            /** MethodDescriptorProto output_type. */
            public output_type: string;

            /** MethodDescriptorProto options. */
            public options?: (google.protobuf.IMethodOptions|null);

            /** MethodDescriptorProto client_streaming. */
            public client_streaming: boolean;

            /** MethodDescriptorProto server_streaming. */
            public server_streaming: 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 java_package */
            java_package?: (string|null);

            /** FileOptions java_outer_classname */
            java_outer_classname?: (string|null);

            /** FileOptions java_multiple_files */
            java_multiple_files?: (boolean|null);

            /** FileOptions java_generate_equals_and_hash */
            java_generate_equals_and_hash?: (boolean|null);

            /** FileOptions java_string_check_utf8 */
            java_string_check_utf8?: (boolean|null);

            /** FileOptions optimize_for */
            optimize_for?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null);

            /** FileOptions go_package */
            go_package?: (string|null);

            /** FileOptions cc_generic_services */
            cc_generic_services?: (boolean|null);

            /** FileOptions java_generic_services */
            java_generic_services?: (boolean|null);

            /** FileOptions py_generic_services */
            py_generic_services?: (boolean|null);

            /** FileOptions deprecated */
            deprecated?: (boolean|null);

            /** FileOptions cc_enable_arenas */
            cc_enable_arenas?: (boolean|null);

            /** FileOptions objc_class_prefix */
            objc_class_prefix?: (string|null);

            /** FileOptions csharp_namespace */
            csharp_namespace?: (string|null);

            /** FileOptions swift_prefix */
            swift_prefix?: (string|null);

            /** FileOptions php_class_prefix */
            php_class_prefix?: (string|null);

            /** FileOptions php_namespace */
            php_namespace?: (string|null);

            /** FileOptions php_metadata_namespace */
            php_metadata_namespace?: (string|null);

            /** FileOptions ruby_package */
            ruby_package?: (string|null);

            /** FileOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** FileOptions uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);

            /** FileOptions .google.api.resource_definition */
            ".google.api.resource_definition"?: (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 java_package. */
            public java_package: string;

            /** FileOptions java_outer_classname. */
            public java_outer_classname: string;

            /** FileOptions java_multiple_files. */
            public java_multiple_files: boolean;

            /** FileOptions java_generate_equals_and_hash. */
            public java_generate_equals_and_hash: boolean;

            /** FileOptions java_string_check_utf8. */
            public java_string_check_utf8: boolean;

            /** FileOptions optimize_for. */
            public optimize_for: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode);

            /** FileOptions go_package. */
            public go_package: string;

            /** FileOptions cc_generic_services. */
            public cc_generic_services: boolean;

            /** FileOptions java_generic_services. */
            public java_generic_services: boolean;

            /** FileOptions py_generic_services. */
            public py_generic_services: boolean;

            /** FileOptions deprecated. */
            public deprecated: boolean;

            /** FileOptions cc_enable_arenas. */
            public cc_enable_arenas: boolean;

            /** FileOptions objc_class_prefix. */
            public objc_class_prefix: string;

            /** FileOptions csharp_namespace. */
            public csharp_namespace: string;

            /** FileOptions swift_prefix. */
            public swift_prefix: string;

            /** FileOptions php_class_prefix. */
            public php_class_prefix: string;

            /** FileOptions php_namespace. */
            public php_namespace: string;

            /** FileOptions php_metadata_namespace. */
            public php_metadata_namespace: string;

            /** FileOptions ruby_package. */
            public ruby_package: string;

            /** FileOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** FileOptions uninterpreted_option. */
            public uninterpreted_option: 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 message_set_wire_format */
            message_set_wire_format?: (boolean|null);

            /** MessageOptions no_standard_descriptor_accessor */
            no_standard_descriptor_accessor?: (boolean|null);

            /** MessageOptions deprecated */
            deprecated?: (boolean|null);

            /** MessageOptions map_entry */
            map_entry?: (boolean|null);

            /** MessageOptions deprecated_legacy_json_field_conflicts */
            deprecated_legacy_json_field_conflicts?: (boolean|null);

            /** MessageOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** MessageOptions uninterpreted_option */
            uninterpreted_option?: (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 message_set_wire_format. */
            public message_set_wire_format: boolean;

            /** MessageOptions no_standard_descriptor_accessor. */
            public no_standard_descriptor_accessor: boolean;

            /** MessageOptions deprecated. */
            public deprecated: boolean;

            /** MessageOptions map_entry. */
            public map_entry: boolean;

            /** MessageOptions deprecated_legacy_json_field_conflicts. */
            public deprecated_legacy_json_field_conflicts: boolean;

            /** MessageOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** MessageOptions uninterpreted_option. */
            public uninterpreted_option: 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 unverified_lazy */
            unverified_lazy?: (boolean|null);

            /** FieldOptions deprecated */
            deprecated?: (boolean|null);

            /** FieldOptions weak */
            weak?: (boolean|null);

            /** FieldOptions debug_redact */
            debug_redact?: (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 edition_defaults */
            edition_defaults?: (google.protobuf.FieldOptions.IEditionDefault[]|null);

            /** FieldOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** FieldOptions feature_support */
            feature_support?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** FieldOptions uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);

            /** FieldOptions .google.api.field_behavior */
            ".google.api.field_behavior"?: (google.api.FieldBehavior[]|null);

            /** FieldOptions .google.api.resource_reference */
            ".google.api.resource_reference"?: (google.api.IResourceReference|null);

            /** FieldOptions .google.api.field_info */
            ".google.api.field_info"?: (google.api.IFieldInfo|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 unverified_lazy. */
            public unverified_lazy: boolean;

            /** FieldOptions deprecated. */
            public deprecated: boolean;

            /** FieldOptions weak. */
            public weak: boolean;

            /** FieldOptions debug_redact. */
            public debug_redact: boolean;

            /** FieldOptions retention. */
            public retention: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention);

            /** FieldOptions targets. */
            public targets: google.protobuf.FieldOptions.OptionTargetType[];

            /** FieldOptions edition_defaults. */
            public edition_defaults: google.protobuf.FieldOptions.IEditionDefault[];

            /** FieldOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** FieldOptions feature_support. */
            public feature_support?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** FieldOptions uninterpreted_option. */
            public uninterpreted_option: 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 a FeatureSupport. */
            interface IFeatureSupport {

                /** FeatureSupport edition_introduced */
                edition_introduced?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** FeatureSupport edition_deprecated */
                edition_deprecated?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** FeatureSupport deprecation_warning */
                deprecation_warning?: (string|null);

                /** FeatureSupport edition_removed */
                edition_removed?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
            }

            /** Represents a FeatureSupport. */
            class FeatureSupport implements IFeatureSupport {

                /**
                 * Constructs a new FeatureSupport.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FieldOptions.IFeatureSupport);

                /** FeatureSupport edition_introduced. */
                public edition_introduced: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** FeatureSupport edition_deprecated. */
                public edition_deprecated: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** FeatureSupport deprecation_warning. */
                public deprecation_warning: string;

                /** FeatureSupport edition_removed. */
                public edition_removed: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /**
                 * Creates a new FeatureSupport instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns FeatureSupport instance
                 */
                public static create(properties?: google.protobuf.FieldOptions.IFeatureSupport): google.protobuf.FieldOptions.FeatureSupport;

                /**
                 * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
                 * @param message FeatureSupport message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
                 * @param message FeatureSupport message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a FeatureSupport message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns FeatureSupport
                 * @throws {Error} If the payload is not 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.FeatureSupport;

                /**
                 * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns FeatureSupport
                 * @throws {Error} If the payload 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.FeatureSupport;

                /**
                 * Verifies a FeatureSupport message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns FeatureSupport
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.FeatureSupport;

                /**
                 * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
                 * @param message FeatureSupport
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.FieldOptions.FeatureSupport, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this FeatureSupport to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for FeatureSupport
                 * @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 uninterpreted_option */
            uninterpreted_option?: (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 uninterpreted_option. */
            public uninterpreted_option: 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 allow_alias */
            allow_alias?: (boolean|null);

            /** EnumOptions deprecated */
            deprecated?: (boolean|null);

            /** EnumOptions deprecated_legacy_json_field_conflicts */
            deprecated_legacy_json_field_conflicts?: (boolean|null);

            /** EnumOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** EnumOptions uninterpreted_option */
            uninterpreted_option?: (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 allow_alias. */
            public allow_alias: boolean;

            /** EnumOptions deprecated. */
            public deprecated: boolean;

            /** EnumOptions deprecated_legacy_json_field_conflicts. */
            public deprecated_legacy_json_field_conflicts: boolean;

            /** EnumOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** EnumOptions uninterpreted_option. */
            public uninterpreted_option: 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 debug_redact */
            debug_redact?: (boolean|null);

            /** EnumValueOptions feature_support */
            feature_support?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** EnumValueOptions uninterpreted_option */
            uninterpreted_option?: (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 debug_redact. */
            public debug_redact: boolean;

            /** EnumValueOptions feature_support. */
            public feature_support?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** EnumValueOptions uninterpreted_option. */
            public uninterpreted_option: 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 uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);

            /** ServiceOptions .google.api.default_host */
            ".google.api.default_host"?: (string|null);

            /** ServiceOptions .google.api.oauth_scopes */
            ".google.api.oauth_scopes"?: (string|null);

            /** ServiceOptions .google.api.api_version */
            ".google.api.api_version"?: (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 uninterpreted_option. */
            public uninterpreted_option: 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 idempotency_level */
            idempotency_level?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null);

            /** MethodOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** MethodOptions uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);

            /** MethodOptions .google.api.http */
            ".google.api.http"?: (google.api.IHttpRule|null);

            /** MethodOptions .google.api.method_signature */
            ".google.api.method_signature"?: (string[]|null);

            /** MethodOptions .google.longrunning.operation_info */
            ".google.longrunning.operation_info"?: (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 idempotency_level. */
            public idempotency_level: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel);

            /** MethodOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** MethodOptions uninterpreted_option. */
            public uninterpreted_option: 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 identifier_value */
            identifier_value?: (string|null);

            /** UninterpretedOption positive_int_value */
            positive_int_value?: (number|null);

            /** UninterpretedOption negative_int_value */
            negative_int_value?: (number|null);

            /** UninterpretedOption double_value */
            double_value?: (number|null);

            /** UninterpretedOption string_value */
            string_value?: (Uint8Array|Buffer|string|null);

            /** UninterpretedOption aggregate_value */
            aggregate_value?: (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 identifier_value. */
            public identifier_value: string;

            /** UninterpretedOption positive_int_value. */
            public positive_int_value: number;

            /** UninterpretedOption negative_int_value. */
            public negative_int_value: number;

            /** UninterpretedOption double_value. */
            public double_value: number;

            /** UninterpretedOption string_value. */
            public string_value: (Uint8Array|Buffer|string);

            /** UninterpretedOption aggregate_value. */
            public aggregate_value: 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 name_part */
                name_part: string;

                /** NamePart is_extension */
                is_extension: boolean;
            }

            /** Represents a NamePart. */
            class NamePart implements INamePart {

                /**
                 * Constructs a new NamePart.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.UninterpretedOption.INamePart);

                /** NamePart name_part. */
                public name_part: string;

                /** NamePart is_extension. */
                public is_extension: 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 field_presence */
            field_presence?: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence|null);

            /** FeatureSet enum_type */
            enum_type?: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType|null);

            /** FeatureSet repeated_field_encoding */
            repeated_field_encoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding|null);

            /** FeatureSet utf8_validation */
            utf8_validation?: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation|null);

            /** FeatureSet message_encoding */
            message_encoding?: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding|null);

            /** FeatureSet json_format */
            json_format?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);

            /** FeatureSet enforce_naming_style */
            enforce_naming_style?: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle|null);

            /** FeatureSet default_symbol_visibility */
            default_symbol_visibility?: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null);
        }

        /** Represents a FeatureSet. */
        class FeatureSet implements IFeatureSet {

            /**
             * Constructs a new FeatureSet.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFeatureSet);

            /** FeatureSet field_presence. */
            public field_presence: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence);

            /** FeatureSet enum_type. */
            public enum_type: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType);

            /** FeatureSet repeated_field_encoding. */
            public repeated_field_encoding: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding);

            /** FeatureSet utf8_validation. */
            public utf8_validation: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation);

            /** FeatureSet message_encoding. */
            public message_encoding: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding);

            /** FeatureSet json_format. */
            public json_format: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);

            /** FeatureSet enforce_naming_style. */
            public enforce_naming_style: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle);

            /** FeatureSet default_symbol_visibility. */
            public default_symbol_visibility: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility);

            /**
             * 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
            }

            /** EnforceNamingStyle enum. */
            enum EnforceNamingStyle {
                ENFORCE_NAMING_STYLE_UNKNOWN = 0,
                STYLE2024 = 1,
                STYLE_LEGACY = 2
            }

            /** Properties of a VisibilityFeature. */
            interface IVisibilityFeature {
            }

            /** Represents a VisibilityFeature. */
            class VisibilityFeature implements IVisibilityFeature {

                /**
                 * Constructs a new VisibilityFeature.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FeatureSet.IVisibilityFeature);

                /**
                 * Creates a new VisibilityFeature instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns VisibilityFeature instance
                 */
                public static create(properties?: google.protobuf.FeatureSet.IVisibilityFeature): google.protobuf.FeatureSet.VisibilityFeature;

                /**
                 * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
                 * @param message VisibilityFeature message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
                 * @param message VisibilityFeature message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a VisibilityFeature message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns VisibilityFeature
                 * @throws {Error} If the payload is not 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.VisibilityFeature;

                /**
                 * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns VisibilityFeature
                 * @throws {Error} If the payload 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.VisibilityFeature;

                /**
                 * Verifies a VisibilityFeature message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns VisibilityFeature
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet.VisibilityFeature;

                /**
                 * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
                 * @param message VisibilityFeature
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.FeatureSet.VisibilityFeature, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this VisibilityFeature to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for VisibilityFeature
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace VisibilityFeature {

                /** DefaultSymbolVisibility enum. */
                enum DefaultSymbolVisibility {
                    DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0,
                    EXPORT_ALL = 1,
                    EXPORT_TOP_LEVEL = 2,
                    LOCAL_ALL = 3,
                    STRICT = 4
                }
            }
        }

        /** Properties of a FeatureSetDefaults. */
        interface IFeatureSetDefaults {

            /** FeatureSetDefaults defaults */
            defaults?: (google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[]|null);

            /** FeatureSetDefaults minimum_edition */
            minimum_edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

            /** FeatureSetDefaults maximum_edition */
            maximum_edition?: (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 minimum_edition. */
            public minimum_edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

            /** FeatureSetDefaults maximum_edition. */
            public maximum_edition: (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 overridable_features */
                overridable_features?: (google.protobuf.IFeatureSet|null);

                /** FeatureSetEditionDefault fixed_features */
                fixed_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 overridable_features. */
                public overridable_features?: (google.protobuf.IFeatureSet|null);

                /** FeatureSetEditionDefault fixed_features. */
                public fixed_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 leading_comments */
                leading_comments?: (string|null);

                /** Location trailing_comments */
                trailing_comments?: (string|null);

                /** Location leading_detached_comments */
                leading_detached_comments?: (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 leading_comments. */
                public leading_comments: string;

                /** Location trailing_comments. */
                public trailing_comments: string;

                /** Location leading_detached_comments. */
                public leading_detached_comments: 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 source_file */
                source_file?: (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 source_file. */
                public source_file: 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
                }
            }
        }

        /** SymbolVisibility enum. */
        enum SymbolVisibility {
            VISIBILITY_UNSET = 0,
            VISIBILITY_LOCAL = 1,
            VISIBILITY_EXPORT = 2
        }

        /** Properties of a Duration. */
        interface IDuration {

            /** Duration seconds */
            seconds?: (number|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;

            /** 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 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 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;
        }
    }

    /** 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 page_size */
            page_size?: (number|null);

            /** ListOperationsRequest page_token */
            page_token?: (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 page_size. */
            public page_size: number;

            /** ListOperationsRequest page_token. */
            public page_token: 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 next_page_token */
            next_page_token?: (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 next_page_token. */
            public next_page_token: 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 response_type */
            response_type?: (string|null);

            /** OperationInfo metadata_type */
            metadata_type?: (string|null);
        }

        /** Represents an OperationInfo. */
        class OperationInfo implements IOperationInfo {

            /**
             * Constructs a new OperationInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IOperationInfo);

            /** OperationInfo response_type. */
            public response_type: string;

            /** OperationInfo metadata_type. */
            public metadata_type: 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 Money. */
        interface IMoney {

            /** Money currency_code */
            currency_code?: (string|null);

            /** Money units */
            units?: (number|null);

            /** Money nanos */
            nanos?: (number|null);
        }

        /** Represents a Money. */
        class Money implements IMoney {

            /**
             * Constructs a new Money.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IMoney);

            /** Money currency_code. */
            public currency_code: string;

            /** Money units. */
            public units: number;

            /** Money nanos. */
            public nanos: number;

            /**
             * Creates a new Money instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Money instance
             */
            public static create(properties?: google.type.IMoney): google.type.Money;

            /**
             * Encodes the specified Money message. Does not implicitly {@link google.type.Money.verify|verify} messages.
             * @param message Money message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IMoney, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Money message, length delimited. Does not implicitly {@link google.type.Money.verify|verify} messages.
             * @param message Money message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IMoney, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Money message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Money
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Money;

            /**
             * Decodes a Money message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Money
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Money;

            /**
             * Verifies a Money message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Money message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Money
             */
            public static fromObject(object: { [k: string]: any }): google.type.Money;

            /**
             * Creates a plain object from a Money message. Also converts values to other types if specified.
             * @param message Money
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.Money, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Money to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Money
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }
}
